SPECIFICA LOOSE DELLE MAPPE FINITE v. 1.1 Gianna Reggio

Slides:



Advertisements
Presentazioni simili
Definitezza Vogliamo poter richiedere la “definitezza” delle funzioni
Advertisements

Strutture dati per insiemi disgiunti
Specifiche Algebriche ESERCIZI Versione 0.0
Conseguenza semantica
I numeri naturali ….. Definizione e caratteristiche
x+x=2x Consideriamo la seguente frase:
SPECIFICA INIZIALE DELLE MAPPE FINITE v. 0.0 Gianna Reggio
Process synchronization
Specifiche Algebriche
Algebra parziale con predicati
Semantica di linguaggi di programmazione Ne esistono differenti stili a seconda di paradigma di programmazione uso (validazione, prototyping, verifica.
Specifiche Algebriche Modello Iniziale Versione 1.0 Gianna Reggio
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Esercitazione Frame. Argomento Realizzazione di un tipo di dato astratto Usare le eccezioni per segnalare situazioni particolari Invariante e funzione.
Informatica Generale Marzia Buscemi
Laboratorio Matematica e Informatica
Lez. 31 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Durante la lezione del 14 dicembre ho scoperto un altro modo per utilizzare il programma iplozero: la creazione di alcuni esercizi di Brain training.
2ab2 2b4 4x − 2y a 3b2y3 3b2y3b Definizione e caratteristiche
Il linguaggio C Gli operatori e le espressioni C Language
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Interpretazione Astratta
Ordini Parziali - Reticoli
Esercitazioni su circuiti combinatori
Caratteri e stringhe di caratteri
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Corso di Informatica (Basi di Dati)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
SPECIFICA DELLE MAPPE FINITE Gianna Reggio
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea uno heap vuoto Insert(H,
Semantica di Tarski.
I numeri relativi by iprof.
Organizzazione del corso
Strutture di controllo in C -- Flow Chart --
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Logica dei predicati del primo ordine.
Le operazioni aritmetiche con i numeri naturali e decimali
CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Scomposizione polinomi
Introduzione ai linguaggi formali e alle stringhe
TEORIA DEGLI INSIEMI INIZIO.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
lun mar mer gio ven SAB DOM FEBBRAIO.
MONOMI E POLINOMI.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 21 Agosto.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 7: 16 Giugno 2014 Marco D. Santambrogio – Gianluca Durelli –
Università degli studi di Parma Dipartimento di Ingegneria dell’Informazione Politecnico di Milano Reti Logiche A Macchine non completamente specificate.
Introduzione a Javascript
Rappresentazione dell’informazione nel calcolatore.
La ricorsione.
Calcolo letterale.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Primo Compitino Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle.
Semantica dinamica Vogliamo definire una funzione che associ ad ogni termine corretto del mio linguaggio di programmazione un valore. Questa associazione.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
USO DEL DENARO A.Contardi “Verso l’autonomia” ed.Carocci 2004.
Criteri di divisibilità
IL NUMERO …qualche idea…..
Transcript della presentazione:

SPECIFICA LOOSE DELLE MAPPE FINITE v. 1.1 Gianna Reggio

Ver. 1.1 Applicazione/esempio grande Madre di tutti gli esercizi/esempi –la più usata specifica nelle applicazioni vere –dare la specifica della struttura dati mappe finite, per semplicità da stringhe di caratteri in naturali –si richiedono operazioni per rappresentare tutti i dati (caratteri, stringhe, naturali, mappe) costruttori –operazioni sulle mappe: mappa vuota (nessuna associazione) aggiungere/eliminare/modificare una associazione trovare il numero associato ad una stringa dominio/codominio di una mappa controllare se una mappa è vuota/è iniettiva

Ver. 1.1 Come procedere scomporre modularmente il compito in –specificare i naturali –specificare le stringhe di caratteri –specificare la mappe basiche (cioè solo i costruttori e loperazione per ritrovare il numero associato ad una stringa) operazioni necessarie per costruire i termini per rappresentare tutti i valori di interesse –specificare una ad una le ulteriori operazioni e predicati

Ver. 1.1 Linguaggio di specifica Utilizzeremo un semplicissimo linguaggio di specifica per presentare le varie specifiche Esercizio 24.5: individuare I vari costrutti di tale linguaggio, mano a mano che li utilizzeremo, precisandone sintassi e semantica.

Ver. 1.1 Naturali spec NAT = Sorts nat Opns 0: nat succ: nat -> nat Axioms Def(0) Def(succ(x)) Consideriamo solo i modelli term-generated di NAT spec NATg = generated { NAT } Esercizio 25: aggiungere a NAT le 5 operazioni (somma, sottrazione, moltiplicazione, divisione intera e resto della divisione intera). Esercizio 26: aggiungere il predicato.

Ver. 1.1 Aggiunta di < spec NAT1 = extend NAT Preds _<_: nat x nat Axioms x < succ(x) x < y x < succ(y) Esercizio 27: –0 < succ(x) è valida in Mod(NAT1) ? –0 < succ(x) è valida in generated { NAT1 } ?

Ver. 1.1 Stringhe di caratteri spec STRING = Sorts char, string Opns : string -- stringa vuota _::_: char x string -> string -- aggiunta elemento in testa A, …,Z: char -- le 26 lettere -- permettono di rappresentare tutte le stringhe Axioms -- tutte le operazioni sono totali Def( ) Def(c::s) Def(A) … Def(Z)

Ver. 1.1 Esercizi Esercizio 28: Si consideri spec STRING1 = extend STRING Axioms c = A … Z s = ( c:char. s:string. s = c:s) è vero che i modelli di STRING1 e quelli di generated {STRING} sono gli stessi ? Soluzione. No, infatti lalgebra DOPPIA definita come segue char DOPPIA = { A, …., Z } string DOPPIA = { *, + } A DOPPIA = A... B DOPPIA = B DOPPIA = * DOPPIA (c,s) = s è un modello di STRING1 ma non è term-generated. Verificare per esercizio quanto affermato sopra.

Ver. 1.1 Esercizi Esercizio 29: Ogni modello di generated {STRING} rappresenta ottimamente la struttura dati delle stringhe ? Soluzione. No, infatti unalgebra banale (cioè dove ogni carrier contiene esattamente un singolo elemento, e dove le operazioni sono totali e definite nel modo ovvio) è un modello di tale specifica, e non rappresenta per niente le stringhe.

Ver. 1.1 Stringhe di caratteri 2 spec STRING2 = extend STRING Axioms AB … AZ … WZ c:s c 1 c 2 s 1 s 2 c 1 :s 1 c 2 :s 2 Esercizio 30: Ogni modello di generated {STRING2} rappresenta ottimamente la struttura dati delle stringhe ?

Ver. 1.1 Mappe basiche (1) spec MAP = extend NAT, STRING2 Sorts map Opns []: map -- mappa che non contiene alcuna associazione _[_/_]: map x nat x string -> map -- aggiunta associazione o modifica associazione _[_]: map x string -> nat -- ritorna il naturale associato ad una stringa -- se esiste Axioms -- [] e _[_/_] sono totali Def([]) Def(m[n/s]) [] m[n/s] (m 1 m 2 n 1 n 2 s 1 s 2 ) m 1 [n 1 /s 1 ] m 2 [n 2 /s 2 ] è accettabile ??? NO! Nelle mappe non conta lordine tra le associazioni, una nuova associazione può rimpiazzare una vecchia

Ver. 1.1 Mappe basiche (2) è possibile dare assiomi che richiedano tutte le possibili identificazioni sugli elementi rappresentati da [] e _[_/_] Esercizio 31: Dare tali assiomi. oppure è possibile definire prima loperazione _[_] e poi richiedere che due mappe sono uguali ses associano gli stessi naturali alle stesse stringhe

Ver. 1.1 Mappe basiche (3) -- continuazione degli assiomi di MAP -- definizione di _[_] Def([][s]) m[n/s][s] = n s s m[n/s][s] = m[s] -- identificazioni sulle mappe ( s:string. m[s] = m[s]) m = m

Ver. 1.1 Predicati sulle mappe spec MAP2 = generated{ extend MAP Preds isEmpty: map injective: map pv: map -- i pari sono associati a stringhe che iniziano con --una vocale boh: map Axioms isEmpty([]) ( s: string. Def(m[s])) isEmpty(m) injective(m) s1,s2: string. s1 s2 m[s1] = m[s2]) boh(m) (( s:string. m[s] > 0) s:string. m[s] = 0) ) } Esercizio 30,2: Dare gli assiomi che definiscono pv. Esercizio 30,21: Dare degli assiomi che definiscono pv. Esercizio 30,22: Che cosa definisce il predicato boh ?

Ver. 1.1 Insiemi di naturali spec SET-NAT = 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 -- U è comm, assoc, idempotente e {} è la sua identità -- costruttori -- due insiemi sono uguali ses hanno gli stessi elementi -- la cardinalità di un insieme è il numero dei suoi -- elementi Esercizio 30,3: Dare tutti gli assiomi suggeriti dai commenti riportati sopra.

Ver. 1.1 Mappe con dominio e codominio spec MAP3 = generated{ extend MAP2, SET-NAT, SET-STRING Opns dom: map -> set-string cod: map -> set-nat Axioms dom([]) = {} dom(m[n/s]) = dom(m) U {s} -- codominio } Esercizio 30,4: Completare tale specifica.

Ver. 1.1 Naturali con tecnica iniziale spec NAT = init{ Sorts nat Opns 0: nat succ: nat -> nat Axioms Def(0) Def(succ(x)) }