Calcolo uguaglianze. Benedetto Intrigila e-mail [email protected] Consideriamo l’alfabeto Σbool delle espressioni booleane (con variabili): • costanti: 0, 1; • variabili: x, x0 , x1 , ...; • simbolo di operatore binario infisso +, operatore binario infisso ·, operatore unario ¯; • simbolo di relazione binario: =; • parentesi: (, ). Adesso definiamo i termini booleani in questo modo (ricorsivo): 1. le variabili x, x0 , x1 , ... sono termini booleani; 2. le costanti 0 e 1 sono termini booleani; 3. se t1 e t2 sono termini booleani, anche t1 + t2 , t1 · t2 , t¯1 e t¯2 sono termini booleani; 4. se t è un termine booleano, anche (t) è un termine booleano. L’operazione di sostituzione Sost(t, t1 , z) che restituisce il risultato della sostituzione, nel termine t, di tutte le occorrenze della variabile z con il termine t1 è definita per ricursione come segue: 1. Sost((t), t1 , z) = (Sost(t, t1 , z)); 2. Sost(t2 + t3 , t1 , z) = Sost(t2 , t1 , z) + Sost(t3 , t1 , z); 3. Sost(t2 · t3 , t1 , z) = Sost(t2 , t1 , z) · Sost(t3 , t1 , z); 4. Sost(t̄, t1 , z) = Sost(t, t1 , z); 5. Sost(x, t1 , z) = x, dove x è una variabile diversa (come oggetto sintattico) da z; 6. Sost(z, t1 , z) = t1 ; 1 7. Sost(0, t1 , z) = 0; 8. Sost(1, t1 , z) = 1. Le espressioni booleane sono tutte le espressioni della forma t1 = t2 dove t1 e t2 sono termini booleani. Esempio. x+0 è un termine booleano, x+0 = x0 è un’espressione booleana. Poiché abbiamo solo il simbolo per l’uguale chiameremo le nostre espressioni uguaglianze. Assiomi dell’Algebra di Boole Alcune particolari uguaglianze booleane vengono scelte come Assiomi. L’elenco di questi assiomi si trova nel libro di testo RETI LOGICHE Tabella 2.3. Come spiegato anche a lezione queste uguaglianze sono scelte perché ci permettono di rendere preciso il concetto di Algebra di Boole. Ovvero un’Algebra di Boole è una struttura con le opportune operazioni che sono tali da rendere veri gli assiomi. Sulla base degli assiomi vogliamo ottenere nuove uguaglianze vere in ogni Algebra di Boole. Ad esempio vogliamo ottenere che in ogni Algebra di Boole vale x · (x + y) = x. Come facciamo? Potremmo dire che: usando la legge distributiva (Assioma) otteniamo x · (x + y) = (x · x) + (x · y) ma x · x = x (Assioma) e quindi sostituendo (x · x) + (x · y) = x + (x · y) ma x · 1 = x (Assioma) e quindi x + (x · y) = (x · 1) + (x · y) usando la proprietà distributiva (Assioma) abbiamo (x · 1) + (x · y) = x · (1 + y) ma 1 + y = 1 (Assioma) e quindi x · (1 + y) = x · 1 ma x · 1 = x (Assioma) e siamo arrivati. Possiamo dire che il nostro è un ragionamento valido? La risposta è sı̀ e il motivo è che abbiamo usato solo gli assiomi dell’Algebra di Boole e alcune proprietà generali dell’uguaglianza. Queste proprietà generali sono sempre vere e dipendono solo dalla natura dell’uguaglianza. Però (anche per trattare queste cose con i programmi) è necessario considerare con precisione queste proprietà generali dell’uguaglianza. Regole dell’uguaglianza: Identità. Per ogni termine t, vale t = t. Simmetria. Per ogni termine t1 e t2 , se t1 = t2 allora t2 = t1 . Transitività. Per ogni termine t1 , t2 e t3 , se t1 = t2 e t2 = t3 allora t1 = t3 . Sostituzione di termini uguali nello stesso termine. Per ogni termine t, t1 e t2 , se t1 = t2 allora Sost(t, t1 , z) = Sost(t, t2 , z). 2 Sostituzione dello stesso termine in termini uguali. Per ogni termine t, t1 e t2 , se t1 = t2 allora Sost(t1 , t, z) = Sost(t2 , t, z). Esercizio 1. Dimostrare che la seguente regola dell’uguaglianza è conseguenza delle precedenti: Sostituzione di termini uguali in termini uguali. Per ogni termine t1 , t2 , t3 e t4 se t1 = t2 e t3 = t4 allora Sost(t1 , t3 , z) = Sost(t2 , t4 , z). Esercizio 2. Svolgere la dimostrazione di x · (x + y) = x usando solo gli assiomi e le regole dell’uguaglianza. 3