1 / 13

SPECIFICA INIZIALE DELLE MAPPE FINITE v. 0.0

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)

xannon
Download Presentation

SPECIFICA INIZIALE DELLE MAPPE FINITE v. 0.0

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SPECIFICA INIZIALE DELLE MAPPE FINITE v. 0.0 Gianna Reggio reggio@disi.unige.it

  2. 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).

  3. 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.

  4. ________ 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

  5. 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.

  6. 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.

  7. 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.

  8. ________ 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

  9. 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]

  10. 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.

  11. 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.

  12. 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).

  13. 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.

More Related