SPECIFICA INIZIALE DELLE MAPPE FINITE v. 0.0 Gianna Reggio
Ver. 0.0 Naturali iniziale spec NATi = Sorts nat Opns 0: nat succ: nat -> nat _+_: nat x nat -> nat Axioms Def(0) Def(succ(n)) Def(n + m) ** 0 + n = n succ(m) + n = succ(m+n) Esercizio 50: caratterizzare il modelo iniziale di NATi, se esiste. Esercizio 51: se eliminiamo lassioma **, cambia il modello iniziale. Esercizio 52: estendere NATi con le altre 4 operazioni (-,*,mod,div).
Ver. 0.0 Esercizio 50 Il modello iniziale esiste poichè la specifica è positiva condizionale. Usiamo la caratterizzazione vista a lezione I(NATi) = T Sig(NATi) /~ NATi inoltre sappiamo che la congruenza ~NATi (indicata semplicemente da ~ nel seguito) può essere definita utilizzando il sistema di Birkhoff Tutte le operazioni sono totali e quindi ~ contiene tutte le coppie (t,t) con t termine ground su Sig(NATi) Intuiamo che dagli assiomi consegue che per ogni t termine ground su Sig(NATi) esiste n0 t.c. t ~ succ n (0). Proviamo ciò per induzione sulla struttura di t. –Base t = 0 Ovvio. –Step 2 casi t = succ(t1) Per lipotesi induttiva t1 ~ succ n (0); pertanto t ~ succ(succ n (0))= succ n+1 (0) (~ è una congruenza). t = t1 + t2 Per lipotesi induttiva t1 ~ succ n (0) e t2 ~ succ m (0). Usando Birkhoff possiamo provare che succ n (0) + succ m (0) = succ n+m (0) (vedi dopo). Essendo Birkhoff sound, t ~ succ n+m (0). Quindi il modello iniziale di NATi descrive precisamente i naturali intesi nel modo ovvio.
Ver. 0.0 Esercizio 50 (continauzione) Prova con Birkhoff di succ n (0) + succ m (0) = succ n+m (0) per ogni n, m 0 [perchè n, m italici ???] per induzione su n –base n = n = n ________ Assioma proprio 0 + succ m (0) = succ m (0) __________ Istanziazione –step n = p+1 succ p (0) + succ m (0) = succ p+m (0) ________________ per lipotesi induttiva …………... succ(n) + m = succ(n+m) ________________________ Assioma proprio __________________________________________________ succ(succ p (0)) + succ m (0) = succ(succ p (0)+ succ m (0) ) Istanziazione succ(succ p (0) + succ m (0)) = succ 1+p+m (0) ________________ congruenza __________________________________________________ succ(succ p (0)) + succ m (0) = succ 1+p+m (0) transitività
Ver. 0.0 Esercizio 51 Procediamo in modo simile allesercizio 50; ma in questo caso prima proviamo e poi dato che I termini della forma succ m (0) sono sempre definiti, usando Birkhoff proviamo che ogni t termine ground è definito.
Ver. 0.0 Aggiunta di < spec NAT1> = extend NATi Preds _<_: nat x nat Axioms x < succ(x) x < y x < succ(y) Esercizio 53: caratterizzare il modello iniziale, se esiste. Esercizio 54: definire una specifica STRINGi, tale che il suo modello iniziale caratterizzi le stringhe di caratteri.
Ver. 0.0 Esercizio 53 Per tutto ciò che non riguarda il < si ci riconduce allesercizio 51 (poichè non ci sono assiomi che coinvolgono sia < sia le altre operazioni, e tutte le operazioni sono totali). Intuiamo che dagli assiomi consegue che per ogni n,m0 succ n (0) ~ < succ m (0) ses n < m. –SE m = n + p Usando Birkhoff proviamo succ n (0) ~ < succ n+p (0) [dopo] –SOLO SE Supponiamo di avere una prova per succ n (0) ~ < succ m (0). Per induzione sulla lunghezza della prova dimostriamo che n < m. Base primo assioma della specifica seguita da sua istanziazione provando che succ n (0) ~ < succ n+1 (0). OK Step La prova consiste di una prova di succ n (0) ~ < succ m (0), seguita dal lapplicazione del secondo assioma, sua istanziazione, modus ponens. Per lipotesi induttiva n < m, e quindi n < m+1.
Ver. 0.0 Esercizio 53 (continuazione) Prova con Birkhoff di succ n (0) ~ < succ n+p (0) per ogni n 0, p 1 per induzione su p –base p = 1 x < succ(x) ________ Assioma proprio succ n (0) < succ( succ n (0) ) __________ Istanziazione –step p = q+1 succ n (0) < succ n+q (0) ________________ per lipotesi induttiva …………... x < y x < succ(y) ________________________ Assioma proprio __________________________________________________ succ n (0) < succ n+q (0) succ n (0) < succ( succ n+q (0) ) Istanziazione __________________________________________________ succ n (0) < succ( succ n+q (0) ) modus ponens
Ver. 0.0 non positivi conditional Mappe basiche (1) spec MAP = extend NATi, STRINGi Sorts map Opns []: map _[_/_]: map x nat x string -> map _[_]: map x string -> nat Axioms -- [] e _[_/_] sono totali Def([]) Def(m[n/s]) -- solo lultima associazione di un naturale ad una -- stringa m[n1/s][n2/s] = m[n2/s] s1 s2 m[n1/s1][n2/s2] = m[n2/s2][n1/s1] -- lordine delle associazione per stringhe diverse non -- conta m[n/s][s] = n s1 s2 m[n1/s1][s2] = m[s2]
Ver. 0.0 Mappe basiche (2) Occorre definire Preds difS: string x string -- definibile con assiomi positivi conditional difS(s1,s2) m[n1/s1][n2/s2] = m[n2/s2][n1/s1] -- lordine delle associazione per stringhe diverse non -- conta difS(s1,s2) m[n1/s1][s2] = m[s2] Esercizio 55: definire difS, il predicato corrispondente alla differenza tra stringhe.
Ver. 0.0 Insiemi di naturali spec SET-NATi = extend NAT Sorts set-nat Opns -- costruttori {}: set-nat {_}: nat -> set-nat -- singleton _ _: set-nat x set-nat -> set-nat card: set-nat -> nat Preds isIn: nat x set-nat Axioms -- tutte le operazioni sono totali def({}) def({b}) def(s1 U s2) -- è comm, assoc, idempotente e {} è la sua identità s1 s2 = s2 s1 (s1 s2) s3 = s1 (s2 s3) s s = s {} s = s card({}) = 0 card({n} s) = succ(card(s)) Esercizio 56: trovare assioma errato, cioè che richiede una proprietà non ragionevole per gli insiemi di naturali Esercizio 57: caratterizzare il modello iniziale di SET-NATi.
Ver. 0.0 Esercizio 56 Lassioma errato è lultimo; infatti implicitamente richiede che tutti i naturali maggiori di 0 siano identificati con 1. Proviamolo con Birkhoff. Per semplicità diamo solo la prova di succ(succ((0)) = succ(0).
Ver. 0.0 Operazioni su mappe Esercizio 58: dare una specifica il cui modello iniziale corrisponde alle mappe con dominio e codominio. Esercizio 59: aggiungere anche unoperazione di restrizione ad un sottinisieme del codominio, e di combinazione di due mappe, con la seconda che override le associazioni della prima in caso di conflitto.