130 likes | 248 Views
SPECIFICA INIZIALE DELLE MAPPE FINITE v. 0.0. Gianna Reggio reggio@disi.unige.it. 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)
E N D
SPECIFICA INIZIALE DELLE MAPPE FINITE v. 0.0 Gianna Reggio reggio@disi.unige.it
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 l’assioma **, cambia il modello iniziale. • Esercizio 52: estendere NATi con le altre 4 operazioni(-,*,mod,div).
Esercizio 50 • Il modello iniziale esiste poichè la specifica è positiva condizionale. • Usiamo la caratterizzazione vista a lezioneI(NATi) = TSig(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 suSig(NATi) • [@] Intuiamo che dagli assiomi consegue che per ogni t termine ground suSig(NATi)esiste n≥0 t.c. t ~ succn(0). Proviamo ciò per induzione sulla struttura di t. • Base t = 0 Ovvio. • Step 2 casi • t = succ(t1) Per l’ipotesi induttiva t1 ~ succn(0); pertanto t ~ succ(succn(0))= succn+1(0) (~ è una congruenza). • t = t1 + t2 Per l’ipotesi induttiva t1 ~ succn(0) e t2 ~ succm(0). Usando Birkhoff possiamo provare che succn(0) + succm(0) = succn+m(0) (vedi dopo). Essendo Birkhoff sound, t ~ succn+m(0). • Quindi il modello iniziale di NATi descrive precisamente i naturali intesi nel modo ovvio.
________ Assioma proprio 0 + n = n __________ Istanziazione 0 + succm(0) = succm(0) …………... ________________ per l’ipotesi induttiva succp(0) + succm(0) = succp+m(0) ________________ congruenza succ(succp(0) + succm(0)) = succ1+p+m(0) Assioma proprio ________________________ succ(n) + m = succ(n+m) __________________________________________________ Istanziazione succ(succp(0)) + succm(0) = succ(succp(0)+ succm(0) ) __________________________________________________ transitività succ(succp(0)) + succm(0) = succ1+p+m(0) Esercizio 50 (continauzione) • Prova con Birkhoff di succn(0) + succm(0) = succn+m(0) per ogni n, m ≥ 0 [perchè n, m italici ???] • per induzione su n • base n = 0 • step n = p+1
Esercizio 51 • Procediamo in modo simile all’esercizio 50;ma in questo caso prima proviamo [@], e poi dato che I termini della forma succm(0) sono sempre definiti, usando Birkhoff proviamo che ogni t termine ground è definito.
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.
Esercizio 53 • Per tutto ciò che non riguarda il < si ci riconduce all’esercizio 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,m≥0 succn(0) ~< succm(0) ses n < m. • SE m = n + p Usando Birkhoff proviamo succn(0) ~< succn+p(0) [dopo] • SOLO SE Supponiamo di avere una prova persuccn(0) ~< succm(0). Per induzione sulla lunghezza della prova dimostriamo che n < m. • Base primo assioma della specifica seguita da sua istanziazione provando che succn(0) ~< succn+1(0). OK • Step La prova consiste di una prova di succn(0) ~< succm(0), seguita dal l’applicazione del secondo assioma, sua istanziazione, modus ponens.Per l’ipotesi induttiva n < m, e quindi n < m+1.
________ Assioma proprio x < succ(x) __________ Istanziazione succn(0) < succ(succn(0)) …………... ________________ per l’ipotesi induttiva succn(0) < succn+q(0) Assioma proprio ________________________ x < y x < succ(y) __________________________________________________ Istanziazione succn(0) < succn+q(0) succn(0) < succ(succn+q(0)) __________________________________________________ modus ponens succn(0) < succ(succn+q(0)) Esercizio 53 (continuazione) • Prova con Birkhoff di succn(0) ~< succn+p(0) per ogni n ≥ 0, p ≥ 1 • per induzione su p • base p = 1 • step p = q+1
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 l’ultima 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] -- l’ordine delle associazione per stringhe diverse non -- conta m[n/s][s] = n s1 ≠ s2 m[n1/s1][s2] = m[s2]
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] -- l’ordine 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.
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.
Esercizio 56 • L’assioma errato è l’ultimo; 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).
Operazioni su mappe Esercizio 58:dare una specifica il cui modello iniziale corrisponde alle mappe con dominio e codominio. Esercizio 59:aggiungere anche un’operazione 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.