Luigi Borzacchini (Dipartimento di Matematica, Università di Bari) La matematica e la logica nella computer science Bari, 18 marzo 2015 Storicamente la logica e la matematica sono alle radici della computer science: il primo computer con programma registrato si deve a Charles Babbage, un matematico inglese dell’Ottocento. Il modello teorico degli algoritmi e dello stesso computer è la macchina di Turing, l’attuale architettura dei computer è sostanzialmente ascritta a John von Neumann: ebbene Turing e von Neumann erano logici e matematici di un secolo fa, legati al più importante approccio alla indagine matematica all’inizio del secolo: il “formalismo”. Ed anche oggi, tutti gli aspetti sia teorici che applicativi della computer science hanno una base matematica, più precisamente in un approccio ‘formalista’ Il pensiero formale Che intendiamo per ‘formale’? La ‘forma’ contrapposta al ‘contenuto’? Come nei temi di italiano : il contenuto è buono, ma la forma è sgrammaticata. O alla ‘materia’? un tavolo fatto di legno e di forma rettangolare. O alla ‘sostanza’? Come nel diritto in cui il ‘vizio di forma’ annulla un procedimento sostanzialmente ineccepibile. ‘Formale’ in matematica e nella computer science sta per sintattico, basato sulla sola manipolazione di segni secondo regole, mentre semantico è relativo al significato. formale in logica e matematica • <Giovanni è brindisino>, <tutti i brindisini sono pugliesi>, quindi <Giovanni è pugliese>. • <Ogni scatola contiene 6 uova>, <ho comprato 4 scatole>, quindi <ho comprato 24 uova>. • <Joe è un sarchiapone>, <tutti i sarchiaponi sono sequipedali>, quindi <Joe è sesquipedale> • <Ogni struck ha 6 striff>, <ho 4 struck>, quindi <ho 24 striff>. Qual è la differenza? • Nei primi due la deduzione si appoggia anche su un contenuto semantico, nei secondi è solo formale. <ogni a è B>, <tutti i B sono C>, quindi <a è C> Ragione formale: «Ragionare senza comprendere» • Ragionare tramite la sola manipolazione di segni secondo regole. E’ una capacità soltanto umana • Gli animali hanno un qualche linguaggio, una certa logica concreta, anche una semplice aritmetica di piccoli numeri. Ma non hanno una ragione formale. • La ragione formale e la logica formale sono assenti anche nelle popolazioni cosiddette ‘primitive’, e storicamente appare insieme alla alfabetizzazione. • E il computer è la macchina sintattica, che possiede solo la ragione formale: è l’opposto del ‘primitivo’, che possiede solo una ragione concreta. Matematica e computer science Matematica del continuo (geometria, numeri reali, analisi) e del discreto (aritmetica, algebra, logica) - Matematica col computer La realtà è (quasi sempre) continua: modelli matematici, analisi matematica, calcolo numerico, calcolo delle probabilità, ricerca operativa: il mondo delle cose - Matematica del computer Il computer, il linguaggio e il cervello sono discreti: logica matematica, combinatoria, algebra, teoria degli algoritmi e linguaggi formali: il mondo dei segni Matematica del Continuo • Linguaggio di base è quello della analisi matematica, con la quale si possono rappresentare innumerevoli problemi reali: l’analisi matematica è il linguaggio di base di quasi tutta la descrizione fisica del mondo e quindi della parte principale dei problemi concreti. • La risoluzione di un problema certe volte si può fare col calcolo simbolico, ma non sempre. In tali casi, molto frequenti, si deve trovare un algoritmo di tipo numerico che risolva il problema. Quando ci si accontenta di soluzioni approssimate, entra in gioco il calcolo numerico. • Altre volte il problema contiene aspetti aleatori: anche la gestione di uno sportello di informazioni richiede di ipotizzare quanti clienti arriveranno per ogni periodo di tempo, e questo si può solo approssimare per via probabilistica e trattare con il calcolo delle probabilità. • La matematica col computer è anch’essa talora matematica discreta (come ad esempio in molti problemi di ricerca operativa o basati sulle matrici). • Ma in realtà la varietà di tecniche matematiche che possono essere utili per risolvere i problemi trasformandoli in algoritmi da implementare con programmi del computer è oggi enorme. Matematica Discreta • Ma il computer in quanto tale è in sé un oggetto matematico, la sua memoria, le sue procedure di base, la sua stessa concezione è cresciuta come manipolazione di segni. Questa è matematica del computer. • Questa è sempre una matematica discreta, tratta in modo formale di simboli: alla base è l’aritmetica dei numeri interi, ma oggi è in primo luogo logica matematica, teoria dei linguaggi formali, combinatoria e algebra simbolica. L’anima logico-matematica del computer • Storicamente il computer nasce 70 anni fa dalla collaborazione di due classi di scienziati: gli ‘elettronici’ e i ‘logici-matematici’ che fornirono rispettivamente il corpo e l’anima del computer. • L’elettronica ha subito cambiamenti epocali: dai relais alle valvole, ai transistor, ai microchip sempre più piccoli e potenti, tanto che questa evoluzione di misura in ‘generazioni’ • L’anima logico-matematica invece è rimasta sempre la stessa: lo schema della macchina universale di Turing e l’architettura di von Neumann. Il computer e le tecniche matematiche • Sino dal Rinascimento esistono professioni che si fondano sulla conoscenza degli algoritmi, dai ragionieri agli ingegneri. Ma oggi il computer può eseguire ogni algoritmo meglio di noi. • D’altra parte la creazione di algoritmi e la capacità di saperli applicare, combinare e generalizzare è una abilità strettamente matematica e umana. • L’abilità matematica non è più allora la capacità di eseguire gli algoritmi, ma la capacità di trovarli, costruirli e applicarli a una rappresentazione formale del problema: l’informatica e la matematica algoritmica diventano sempre più simili. La rappresentazione La rappresentazione iconica (analogica) La rappresentazione sintattica (digitale) CASA 𝐴 = 𝜋𝑟 2 Nessuna somiglianza, non è Si basa sulla somiglianza, analitica (la lettera C di CASA è analitica (il camino nella non corrisponde a nessuna immagine della casa è la parte di una casa), ha natura immagine di un camino), è linguistica, dipende da un universale, ma ha difficoltà particolare linguaggio, ma può coi termini astratti, la verità, rappresentare anche termini la negazione, l’essere, etc. astratti. Talora si usano insieme i due tipi di rappresentazione Linguaggio e Calcolo • Già Leibniz si accorse che la rappresentazione sintattica aveva un altro grande vantaggio: era sia un linguaggio di rappresentazione che un calcolo. • Da un lato ogni individuo e ogni fatto del mondo da rappresentare poteva essere rappresentato tramite i simboli: la rappresentazione era universale. • Dall’altro lato, il divenire e le deduzioni in tale mondo potevano essere ‘simulate’ tramite la manipolazione dei segni secondo regole: la rappresentazione era un calcolo. • L’algebra, l’analisi, i linguaggi di programmazione, e soprattutto la logica e gli algoritmi Gli algoritmi • La computer science si fonda sulla connessione tra algoritmi e logica. • Al-Khwarizmi è stato un matematico arabo vissuto a Bagdad nella prima metà del IX secolo, celebre sia per aver diffuso la manipolazione algebrica dei problemi che per la diffusione delle cifre indo-arabe, importanti non tanto perché posizionali o per la presenza dello 0, ma perché il calcolo con esse si faceva tramite procedure sintattiche: gli algoritmi. • Le costruzioni geometriche o iconiche e i processi meccanici non sono algoritmi: non esistono segni senza algoritmi e non esistono algoritmi senza segni. Algoritmi e Logica • Storicamente erano state sempre profondamente diverse: la logica era interna alla filosofia e alla teologia, gli algoritmi erano invece molto pratici, roba da bottegai, agrimensori e contabili. • Nella matematica moderna invece diventano sempre più simili. La sovrapposizione si delinea all’inizio del XX secolo, quando si scopre che una dimostrazione logica è solo un calcolo particolare e che ogni calcolo è la dimostrazione di un certo risultato. E che un calcolo fosse una dimostrazione l’aveva già capito Leibniz nel Seicento. Un calcolo è una dimostrazione • Per esempio ‘dimostriamo’ che 4+3=7. Definiamo i numeri: 2=1+1, 3=2+1, 4=3+1, 5=4+1, 6=5+1, 7=6+1, etc. e usiamo come unica regola che «in una espressione si possono sostituire espressioni uguali». Allora 4+3 = 4+2+1 = 4+1+1+1 = 5+1+1 = 6+1 = 7. • E nel contempo questa dimostrazione è anche un algoritmo per effettuare la somma. • Viceversa l’idea che ogni dimostrazione in fondo sia una sorta di calcolo appare solo alla fine dell’Ottocento, soprattutto con Gottlob Frege. Una dimostrazione è un calcolo • Per Frege «una dimostrazione è una sequenza di frasi (formule) ciascuna delle quali o è già nota (assioma o teorema già dimostrato) o si ricava dalle frasi precedenti mediante regole di inferenza». • La verifica della correttezza di una dimostrazione logica è un fatto ‘meccanico’, non c’è bisogno di ‘capire’ nulla! «La matematica è logica travestita.» • Una dimostrazione matematica è una sorta di compressione di una dimostrazione logica molto più lunga: «Se ci vogliono 27 equazioni per provare che 1 è un numero, quante ce ne vorranno per dimostrare un vero teorema?» (Poincarè). Logicismo e Formalismo Russell, Whitehead: Principia Matematica Le regole di inferenza devono essere puramente sintattiche, senza alcuna ‘intuizione’ della ‘verità’: A A B B I teoremi di incompletezza di Gödel hanno smentito questa idea logicista e formalista, che però resta in qualche modo ancora presente nell’opinione comune. E vedremo due teoremi matematici che ci dicono che cosa il computer può fare. Aristotele e la logica antica • Il sillogismo: «tutti gli umani sono mortali», «tutti i greci sono umani» e quindi «tutti i greci sono mortali». Oppure «alcuni ateniesi sono alti» e «tutti gli alti sono robusti» e quindi «alcuni ateniesi sono robusti». • Ma da «alcuni ateniesi sono alti», «alcuni ateniesi sono biondi» non si può dedurre niente di rilevante. I principi formali: non contraddizione (non può essere la stessa proposizione vera e falsa), terzo escluso (ogni proposizione è vera o falsa), verità per corrispondenza (è vero dire che è ciò che è, o che non è ciò che non è, è falso dire che è ciò che non è, o che non è ciò che è). I connettivi • Le proposizioni sono gli ‘atomi’ della logica: le asserzioni che hanno un valore di verità, V/1 o F/0. • Le proposizioni complesse si ottengono tramite l’uso dei connettivi: non/not (), e/and/ congiunzione (), o/or/disgiunzione (), se … allora /if … then (), se e solo se/if and only if (). • Si dicono verofunzionali, poiché agiscono solo sui valori di verità: ad es. A è vera se e solo se A è falsa, A B è vera se e solo se sono vere sia A che B, AB è vera se e solo se A e B hanno uguale valore di verità, a prescindere dal significato di A e B. Rappresentare con gli insiemi • I diagrammi di Venn e gli intervalli. L’insieme P : P P Sia P la proprietà ‘umano’, P l’insieme degli esseri umani, Q sia ‘maschio’, Q l’insieme dei maschi. P (complemento di P) è l’insieme degli «esseri non umani», corrispondente alla proprietà P. PQ (intersezione di P e Q) è l’insieme degli «umani maschi», corrispondente alla proprietà P Q PQ (unione di P e Q) è l’insieme degli «esseri umani o maschi», corrispondente alla proprietà P Q PQ se ogni elemento di P è anche elemento di Q. • «tutti gli umani sono mortali», «tutti i greci sono umani» e quindi «tutti i greci sono mortali». Oppure «alcuni ateniesi sono biondi» e «tutti i biondi sono robusti» e quindi «alcuni ateniesi sono robusti». • • • mortali umani greci robusti GU UM GM ateniesi biondi BR AB Ø AR Ø • «nessun umano è immortale», «tutti gli dei sono immortali», e quindi «nessun umano è un dio», • • • umani dei immortali UI=Ø DI UD=Ø • «alcuni ateniesi sono robusti», «alcuni ateniesi sono biondi», …..? • • • • • ateniesi AR Ø AB Ø ? ateniesi robusti biondi robusti biondi • «nessun umano è immortale», «qualche immortale è biondo», …..? • immortali UI=Ø IB Ø biondi umani ? biondi immortali umani Gli algoritmi e le macchine. • L’algoritmo è una macchina sintattica. • Il computer è una macchina sintattica. Input: dati algoritmo Output: soluzione Sintattica perché consiste nel manipolare segni secondo regole fisse indipendenti dal significato dei segni. Tuttavia, creare algoritmi non è una procedura meccanica. Può essere facile o difficile, magari talora banale. Ma è sempre un’attività creativa (la dottrina ‘catarella’). Il computer manipola segni • Che ‘significa’ un segno quando lavori col computer? Solo l’uso che di quel segno faranno il sistema operativo o il compilatore, che sono gli algoritmi che manipolano i segni sul computer. • Alcuni segni sono interpretabili, indici, parametri, indirizzi di memoria, etc., assegnabili a piacere, altri sono delle primitive, il cui significato è ‘built in’, fissato nel compilatore dal modo con cui esso li manipola. Non esistono algoritmi senza segni da manipolare e non esistono segni senza algoritmi che li manipolano Tutto è un data base • Cantor alla fine dell’Ottocento crea la teoria dell’infinito, in cui mostra di fatto che ogni insieme (anche infinito) di oggetti comunque descrivibili in un linguaggio sono sempre codificabili/decodificabili come stringhe di 0 e 1. E codifica e decodifica sono sempre realizzabili tramite algoritmi. • Il computer può memorizzare tutto ciò che è comunque descrivibile. Tutti i clienti di una banca con i loro conti correnti, tutti i cittadini italiani con i loro dati, tutte le immagini, ma anche tutti gli algoritmi, tutte le formule, tutti i calcoli sono sempre codificabili e decodificabili come stringhe di 0 e 1. Esempio: le espressioni aritmetiche • L’alfabeto: {+, -, :, , (, ), 0, 1, 2, 3, 4, ……, n, ….} • La codifica: 0 1 2 3 4 5 6 7 8 9 10 ….. n+6 ….. • Usando il teorema fondamentale della aritmetica per cui ogni numero N è univocamente determinato dalla sua espressione come prodotto di potenze di numeri primi , e considerando i numeri associati ai simboli, l’espressione (2 - 4) 2 diventa il numero di codice: 24 38 51 710 115 133 178 • ( 2 - 4 ) 2 • che può essere scritto in base 2 come sequenza di 0 e 1, e dal quale si può ricavare l’espressione. Tutto è un programma • Turing negli anni trenta del XX secolo descrive una macchina/algoritmo che può simulare al suo interno qualsiasi algoritmo che lavora su qualsiasi insieme di dati, è la macchina universale, lo schema teorico del moderno computer, che quindi può eseguire qualsiasi algoritmo codificato nella forma di un programma. MACCHINA DI TURING UNIVERSALE programma(algoritmo), dati soluzione dati algoritmo soluzione L’insieme di tutti i possibili algoritmi è il calcolabile. Il calcolabile • Il calcolabile è la risposta alla domanda «che cosa si può fare manipolando segni secondo regole?», e si potrebbe rispondere «dipende: dalle regole, dalla memoria, etc.». Ma oltre un certo punto ciò che si può fare manipolando segni non può più crescere, il calcolabile diventa un concetto stabile ed assoluto: «tutto quello che si può fare manipolando segni secondo regole», ed è quello che può fare il computer, realizzando il sogno di Leibniz: un linguaggio di rappresentazione ed un calcolo universali Analogico e Digitale • Le trasformazioni nella rappresentazione analogica seguono le leggi naturali: una stampa fotografica invecchiando sbiadisce, e il ritratto di Dorian Gray invecchiava ‘naturalmente’ al posto di Dorian Gray. • Le trasformazioni nella rappresentazione digitale sono impossibili, una foto digitale in linea di principio non invecchia. Se Dorian Gray avesse avuto una foto digitale da fare invecchiare in sua vece, poteva farlo solo tramite un apposito algoritmo che lavorasse su stringhe di 0 e 1. Il calcolabile e la realtà • Di fronte al calcolabile, il regno assoluto degli algoritmi, c’è la realtà, con una struttura molto più varia e imprevedibile, a cui applicare gli algoritmi. • Ed esistono algoritmi semplici e dalla applicazione non problematica, come le operazioni aritmetiche. • Ma esistono anche algoritmi più complessi, in cui ci sono scelte non meccanizzabili da fare, algoritmi che sembrano un laboratorio pieno di pezzi da assemblare. Ci sono algoritmi che possono non terminare e algoritmi che su problemi complessi richiedono tempi biblici per terminare. Il computer e l’intelligenza matematica • Questa è l’intelligenza matematica dell’informatico: applicare alla complessità del mondo reale gli strumenti del mondo algoritmico, tenendo presente che in primo luogo nel mondo reale c’è anche il computer che è la macchina algoritmica per eccellenza, e alla quale e sulla quale gli algoritmi vanno applicati. • All’informatico non serve saper ‘eseguire’ gli algoritmi, questo lo fa benissimo il computer. Bisogna degli algoritmi conoscere invece la logica, le caratteristiche ed i limiti, sceglierli, comporli, adattarli, generalizzarli e specializzarli. Questa presentazione potete trovarla in rete nel sito: www.dm.uniba.it/Members/borzacchini nella cartella Orientamento Consapevole. Nello stesso sito trovate un corso introduttivo alla logica matematica di slides e tutorials Auguri!