ebook img

Semantica e Concorrenza Modulo di Semantica PDF

38 Pages·2017·0.35 MB·Italian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Semantica e Concorrenza Modulo di Semantica

Presentazione Modulo di 6 crediti (48 ore), Semantica e Concorrenza Semantica dei linguaggi di programmazione Definire in maniera formale e rigorosa il comportamento dei programmi. Modulo di Semantica • Vedremo 3 diversi approcci, metodi, alla semantica. • Metodi applicati ad una serie linguaggi di programmazione via via piu` Pietro Di Gianantonio complessi. corsodilaureaininformatica Alcuni argomenti si sovrappongo al corso di Metodi Formali. Propedeutico a: • Modulo sulla Concorrenza (Lenisa), • Interpretazione Astratta (Comini), • una qualsiasi trattazione formale e rigorosa dei programmi. P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 1/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 2/149 Semantica dei linguaggi di Approcci alla semantica programmazione Obiettivo: definire in maniera formale il comportamento dei programmi, e dei costrutti di programmazione. In contrapposizione alle definizioni informali, comunemente usate. • Semantica Operazionale. Descrivere come avviene l’esecuzione del programma, Utile per: non su un vero calcalalatore, troppo complesso, • evitare ambiguit`a nella definizione di un linguaggio di su una semplice macchina formale (nello stile della macchine di programmazione: Turing). • si mettono in evidenza i punti critici di un linguaggio di • Semantica Operazionale Strutturata (SOS). La macchina formale programmazione (es. ambiente statico – dinamico, valutazione e passaggio dei parametri) costituita da un sistema di riscrittura: sistema di regole, sintattiche, • utile nella costruzione di compilatori, di riscrittura. • ragionare sui singolo programmi (definire logiche, principi di ragionamento, sui programmi): provare che un certo programma soddisfa una certa propriet`a, una specifica, che `e corretto. P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 3/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 4/149 Approcci alla semantica SOS pro • Semantica Denotazionale. Il significato di un programma descritto da un oggetto matematico. Funzione parziale, elemento in un insieme ordinato. Semplice, sintattica, intuitiva. Un elemento di un insieme ordinato rappresenta il significato di un programma, di una parte del programma, di un costrutto della Piuttosto flessibile. programmazione. • Pu`o facilmente gestire linguaggi di programmazione complessi. Alternative, action semantics, semantica a giochi, categoriale. • La struttura delle regole resta costante nei diversi linguaggi. • Semantica Assiomatica. Il significato di un programma espresso in termini di pre-condizioni e post-condizioni. Tante semantiche perch´e nessuna completamente soddisfacente. Ognuna descrive un aspetto del comportamento dei programmi, ha un diverso obiettivo. P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 5/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 6/149 SOS contra Semantica denotazionale Obiettivi: La semantica dipende dalla sintassi, `e formulata usando la sintassi. • una semantica indipendente dalla sintassi, si possono confrontare Difficile correlare programmi scritti in linguaggi differenti. programmi scritti in linguaggi differenti. La semantica non `e composizionale (la semantica di un elemento dipende • una semantica composizionale (la semantica di un elemento dipende dalla semantica dei suoi componenti). dalla semantica dei suoi componenti). Induce una nozione di equivalenza tra programmi difficile da verificare (ed • piu` astratta, fornisce strumenti per il ragionamento sui programmi. utilizzare). Caratteristica principale: descrivere il comportamento di un programma attraverso un oggetto matematico. P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 7/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 8/149 Diverse caratteristiche dei linguaggi di Semantica assiomatica programmazione • non terminazione, Descrizione indiretta di un programma, • store (memoria, linguaggi imperativi) mediante un insieme di asserzioni: • environment, (ambiente) • non determinismo, {Pre} p {Post} • concorrenza, Fornisce immediatamente una logica per ragionare sui programmi. • funzioni di ordine superiore (linguaggi funzionali), • eccezioni, Complementare, e giustificata, dalle altre semantiche. • ... Al crescere della ricchezza del linguaggi cresce (rapidamente) la complessit`a della semantica denotazionale. P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 9/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 10/149 Libro di testo Propedeuticit`a Glynn Winskel: Alcuni argomenti della logica: The Formal Semantics of Programming Languages. An introduction. • calcolo dei predicati, Un classico, presentazione semplice, completa, con pochi fronzoli, e poche • costruzione insiemistiche: prodotto, somma disgiunta, spazio di considerazioni generali. funzione, insiemi delle parti, Tre copie in biblioteca. • grammatiche (libere dal contesto), • definizione induttive e principio di induzione, Presentiamo buona parte del libro, saltando le dimostrazioni. Argomenti aggiuntivi. • dualit`a: linguaggio e modello, (sintassi e semantica). P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 11/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 12/149 Un semplice linguaggio imperativo: IMP IMP Categorie sintattiche: Sintassi astratta, piu` semplice della sintassi concreta Numeri interi (N): n, valori booleani (T), locazioni (Loc): X, Sintassi incompleta: non definiti la sintassi per le costanti intere, le Espressioni aritmetiche (AExp): locazioni. Poco interessanti, ortogonali alla nostra trattazione. a ::= n | X | a +a | a −a | a ×a 0 1 0 1 0 1 Linguaggio minimale capace di calcolare tutte le funzioni computabili (Turing-completo), se le locazioni possono memorizzare interi Espressioni booleane (BExp): arbitrariamente grandi. b ::= true | false | a = a | a ≤ a | not b | b or b | b and b 0 1 0 1 0 1 0 1 Manca: • le variabili (l’ambiente, (environment)), Comandi (Com): • definizioni di procedure, funzioni, c ::= skip | X := a | c ;c | if b then c else c | while b do c 0 1 0 1 • definizioni ricorsive. P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 13/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 14/149 Semantica operazionale per IMP IMP: regole SOS Un insieme di regole per descrivere il comportamento di espressive Alle espressioni composte regole di derivazione: aritmetiche, booleane, comandi. (cid:104)a ,σ(cid:105) ⇒ n (cid:104)a ,σ(cid:105) ⇒ n All’espressioni aritmetiche si associano asserzioni, giudizi (judgments) 0 0 1 1 n +n = n 0 1 (cid:104)a +a ,σ(cid:105) ⇒ n 0 1 (cid:104)a,σ(cid:105) ⇒ n ... dove σ : Loc → N, stato (memoria, store). Giudizi derivati attraverso regole in deduzione naturale, • Valutare un espressione aritmetica `e banale, quindi: regole banali. Regole guidate dalla sintassi (stuctured operational semantics). • Ad ogni espressione associata una, o piu` regole determinate dal suo Alle espressioni base si associano assiomi: connettivo principale. • Regole sottintendono un algoritmo di valutazione (deterministico). • Regole assumono che un preesistente meccanismo di rappresentazione (cid:104)n,σ(cid:105) ⇒ n dei numeri e di calcolo delle operazione aritmetiche. Si astrae dal problema di eseguire le operazioni. (cid:104)X,σ(cid:105) ⇒ σ(X) P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 15/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 16/149 Espressione booleane: regole SOS Esercizi Dare regole alternative per in connettivo and . Assiomi ... Attraverso le regole posso definire in maniera esplicite per le operazione (cid:104)a ,σ(cid:105) ⇒ n (cid:104)a ,σ(cid:105) ⇒ n 0 1 aritmetiche. Senza demandare alle side condition. (cid:104)a = a ,σ(cid:105) ⇒ true 0 1 Semplificazione: rappresentiamo i naturali e non gli interi (cid:104)a ,σ(cid:105) ⇒ n (cid:104)a ,σ(cid:105) ⇒ m 0 1 n (cid:54)= m n ::= 0 | Sn (cid:104)a = a ,σ(cid:105) ⇒ false 0 1 ... Regole per l’addizione, prodotto, confronto. (cid:104)b ,σ(cid:105) ⇒ t (cid:104)b ,σ(cid:105) ⇒ t 0 0 1 1 n ::= 0 | n : 0 | n : 1 (cid:104)b and b ,σ(cid:105) ⇒ t 0 1 Dove n : 0 = 2× n dove t ≡ true se t ≡ true e t ≡ true. Altrimenti t ≡ false. 0 1 (cid:74) (cid:75) (cid:74) (cid:75) e n : 1 = 2× n +1 (cid:74) (cid:75) (cid:74) (cid:75) P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 17/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 18/149 Comandi Comandi, regole (cid:104)skip,σ(cid:105) ⇒ σ L’esecuzione di un comando ha l’effetto di modificare la memoria, store: (cid:104)a,σ(cid:105) ⇒ n (cid:104)c,σ(cid:105) ⇒ σ(cid:48) (cid:104)X := a, σ(cid:105) ⇒ σ[n/X] Per rappresentare lo store modificato si usa la notazione σ[m/X] (cid:104)c ,σ(cid:105) ⇒ σ(cid:48) (cid:104)c ,σ(cid:48)(cid:105) ⇒ σ(cid:48)(cid:48) 0 1 (cid:104)c ;c , σ(cid:105) ⇒ σ(cid:48)(cid:48) σ[m/X](X) = m 0 1 σ[m/X](Y) = σ(Y) se X (cid:54)= Y (cid:104)b,σ(cid:105) ⇒ true (cid:104)c ,σ(cid:105) ⇒ σ(cid:48) 0 (cid:104)if b then c else c , σ(cid:105) ⇒ σ(cid:48) In un approccio completamente operazionale lo stato dovrebbe essere un 0 1 oggetto sintattico: ... grammatica per definire gli stati, insieme di regole che ne definiscono il comportamento. (cid:104)b,σ(cid:105) ⇒ true (cid:104)c,σ(cid:105) ⇒ σ(cid:48)(cid:48) (cid:104)while b do c ,σ(cid:48)(cid:48)(cid:105) ⇒ σ(cid:48) (cid:104)while b do c, σ(cid:105) ⇒ σ(cid:48) P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 19/149 P.DiGianantonio (Udine) Semanticadeilingu.ag.g.idiprogrammazione 20/149 Equivalenze Esercizi Dalla semantica, una nozione di equivalenza tra espressioni, comandi. c ∼ c 0 1 • Codificare in Haskell le regole della semantica operazionale. se per ogni coppia di store σ,σ(cid:48): • Posto: (cid:104)c ,σ(cid:105) ⇒ σ(cid:48) se e solo se (cid:104)c ,σ(cid:105) ⇒ σ(cid:48) w ≡ while b do c 0 1 dimostrare che: Piu` nozione di equivalenza: w ∼ if b then c;w else skip c ≡ c e 0 1 w ∼ if b then w else skip Se i comandi c e c , formulati nella sintassi astratta, sono uguali. 0 1 σ = σ 0 1 se σ e σ sono la stessa funzione Loc → N 0 1 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 21/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 22/149 Determinismo Big-step, small-step SOS Formulazione alternativa: descrive un passo di computazione. Le regole sono deterministiche: (cid:104)c,σ(cid:105) → (cid:104)c(cid:48),σ(cid:48)(cid:105) Nuove regole per il while • Formulazione forte: Per ogni c,σ esiste al piu` un σ(cid:48) ed una singola dimostrazione di: (cid:104)b,σ(cid:105) → true (cid:104)while b do c, σ(cid:105) → (cid:104)c;while b do c, σ(cid:105) (cid:104)c,σ(cid:105) ⇒ σ(cid:48) Seconda regole per il while ... • Formulazione debole: Vengono usate entrambe le formulazioni: Per ogni c,σ esiste al piu` un σ(cid:48) per cui valga • Per alcuni linguaggi `e piu` semplice fornire la big-step semantics. Piu` astratta. (cid:104)c,σ(cid:105) ⇒ σ(cid:48) • Nei linguaggi per la concorrenza `e fondamentale considerare la small-step semantics. Contiene informazioni aggiuntive sui passi di computazione, e sull’ordine di esecuzione. • pu`o essere non banale dimostrare l’equivalenza tra le due formulazioni. P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 23/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 24/149 Induzione Induzione In matematica e informatica molte definizione induttive: Sulle strutture induttive: • numeri naturali, • definizioni per ricorsione, • liste, • dimostrazioni per induzione. • grammatiche, Rafforzamenti, estensioni: • derivazioni, dimostrazioni • induzione generalizzata, Insiemi di costruttori: ∀n.(∀m < n.P(m)) ⇒ P(n) • zero, successore; • lista vuota, concantenazione; allora • costrutti della grammatica; ∀n.P(n) • assiomi, regol di derivazione. • insiemi ben fondati. P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 25/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 26/149 Semantica denotazionale per IMP Funzioni di interpretazione A ogni categoria sintattica si associa una funzione di interpretazione: Associo a espressioni di IMP oggetti matematici (funzioni (parziali)) • A : AExp → (Σ → N) in maniera composizionale. (cid:74) (cid:75) un’espressione aritmetica rappresenta una funzione da stato a numero Elementi basi della costruzione: intero. • N = {...,−2,−1,0,1,2,...}, l’insieme dei numeri interi. • B : BExp → (Σ → T) (cid:74) (cid:75) • T = {true,false}, l’insieme dei valori booleani. • C : Com → (Σ (cid:42) Σ) (cid:74) (cid:75) un comando rappresenta una funzione parziale, da stato in stato. • Σ = Loc → N, l’insieme dei possibili stati (configurazioni della memoria,dello store). Riprendo le idee della semantica operazionale ma le esprimo in maniera differente. Notare la differenza tra N e N. Uso la doppia parentesi per racchiudere gli elementi della sintassi (cid:74) (cid:75) P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 27/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 28/149 Semantica delle espressioni (aritmetiche, Semantica dei comandi booleane) Le funzioni di interpretazione vengono definite per induzione sulla Comandi rappresentano funzioni parziali. grammatica (sulla struttura del termine). Nelle definizioni, rappresento le funzioni parziali attraverso il loro grafi (l’insieme di coppie “argomento, valore”). A n (σ) = n (cid:74) (cid:75) C skip = {(σ,σ) | σ ∈ Σ} A X (σ) = σ(X) (cid:74) (cid:75) (cid:74) (cid:75) C X := a = {(σ,σ[n/X]) | σ ∈ Σ, A a (σ) = n} (cid:74) (cid:75) (cid:74) (cid:75) A ao +a1 (σ) = (A ao (σ))+(A a1 (σ)) C c0;c1 = C c1 ◦C c0 (cid:74) (cid:75) (cid:74) (cid:75) (cid:74) (cid:75) (cid:74) (cid:75) (cid:74) (cid:75) (cid:74) (cid:75) ... C if b then c0 else c1 = {(σ,σ(cid:48)) ∈ C c0 | B b (σ) = true} ∪ (cid:74) (cid:75) {(σ,σ(cid:48)) ∈ C(cid:74)c (cid:75) | B(cid:74)b(cid:75)(σ) = false} 1 (cid:74) (cid:75) (cid:74) (cid:75) B a ≤ a (σ) = (A a (σ)) ≤ (A a (σ)) o 1 o 1 (cid:74) (cid:75) (cid:74) (cid:75) (cid:74) (cid:75) Ogni elemento, ogni operatore, viene interpretato con il suo corrispondente semantico. P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 29/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 30/149 Il caso difficile: il costruttore while Idea di fondo C while b do c = C if b then c;while b do c else skip = (cid:74) (cid:75) (cid:74) (cid:75) Posto {(σ,σ) | σ ∈ Σ, B b (σ) = false} ∪ {(σ,σ(cid:48)) ∈ (C while(cid:74) b(cid:75)do c ◦C c ) | B b (σ) = true} Ω ≡ while true do skip (cid:74) (cid:75) (cid:74) (cid:75) (cid:74) (cid:75) Definizione ricorsiva. Definisco C while b do c Esistenza delle soluzione: (cid:74) (cid:75) • riduco il problema ad un problema di punto fisso, Come limite delle sue approssimazioni: • considero l’operatore: C Ω Γ(R) = {(σ,σ) | σ ∈ Σ, B b (σ) = false}∪ (cid:74) (cid:75) {(σ,σ(cid:48)) ∈ (R ◦C c(cid:74)) |(cid:75)B b (σ) = true} C if b then c;Ω else skip (cid:74) (cid:75) (cid:74) (cid:75) (cid:74) (cid:75) Γ trasforma una relazione tra Σ e Σ in un’ altra relazione. C if b then c;(if b then c;Ω else skip) else skip (cid:74) (cid:75) Γ : Rel(Σ,Σ) → Rel(Σ,Σ) • Definisco C while b do c come minimo punto fisso per Γ. (cid:74) (cid:75) P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 31/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 32/149 Teoremi di punto fisso (su ordini) Strutture ordinate Un ordine parziale (P,(cid:118)) `e formato da un insieme P e una relazione Forniscono soluzione al problema precedente. binaria (cid:118) su P t.c. per ogni p,q,r ∈ P • teorema di Knaster-Tarski: in un reticolo completo, ogni funzione • p (cid:118) p, (riflessiva) monotona ha un minimo (e un massimo) punto fisso, • p (cid:118) q e q (cid:118) r allora p (cid:118) r, (transitiva) (importante in matematica) • p (cid:118) q e q (cid:118) p allora p = q, (antisimmetrica) • in un ordine parziale completo ogni funzione monotona e continua ha un minimo punto fisso. Dato sottoinsieme X di P, (fondamentale nella semantica denotazionale) • X ha un maggiorante (upper bound) se esiste p ∈ P t.c per ogni (si indeboliscono le propriet`a dell’ordine, si rafforzano le propriet`a q ∈ X, q (cid:118) p. della funzione). • l’estremo superiore di X, (cid:70)X se esiste, `e un maggiorante piu` piccolo di tutti gli altri, • in uno spazio metrico completo, ogni funzione contrattiva ha un unico (cid:70) punto fisso, • q ∈X, q (cid:118) X, inoltre (cid:70) • per ogni p se ∀q ∈X . q (cid:118)p allora X (cid:118) p (usata in analisi) l’estremo superiore `e unico (dimostrare per esercizio). P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 33/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 34/149 Reticoli Teorema di Knaster-Tarski Definizione Definizione • Un reticolo (lattice) `e un ordine parziale in cui ogni coppia di elementi Una funzione f : P → Q tra ordini `e monotona se rispetta l’ordine. ha un estremo superiore, ed estremo inferiore (cid:117). Se p (cid:118) p allora f(p ) (cid:118) f(p ) 1 2 1 2 (cid:70) Possiamo scrivere {p,q} come p(cid:116)q. Teorema (Knaster-Tarski) Segue che in un reticolo ogni insieme finito ha insieme superiore. Ogni funzione monotona f su un reticolo completo P possiede un minimo • Un reticolo completo `e un ordine parziale in cui ogni sottoinsieme ha (massimo) punto fisso. estremo superiore. Si mostra che (cid:100){p | f(p) (cid:118) p} `e un punto fisso per f (ossia Esercizio. Mostrare che in un reticolo completo ogni sottoinsieme ha anche (cid:100){p | f(p) (cid:118) p} = f((cid:100){p | f(p) (cid:118) p}) estremo inferiore. P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 35/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 36/149 Relazioni Relazioni Le funzioni parziali non formano un reticolo. Le relazioni sono un estensione delle funzioni parziali e formano un reticolo. Definizione (Composizione) Funzioni e funzioni parziali possono essere viste come casi particolari di relazioni. Data due relazione R tra X e Y e S tra Y e Z definiamo S ◦R come Definizione (x,z) ∈ S ◦R ⇔ ∃y . (x,y) ∈ R ∧(y,z) ∈ S • Una relazione tra X e Y `e caratterizzata da un sottoinsieme di X ×Y. • Una funzione parziale f : X (cid:42) Y `e un relazione tale che Notare l’inversione nell’ordine. ∀x ∈ X,y,y(cid:48) ∈ Y . (x,y) ∈ f ∧(x,y(cid:48)) ∈ f → y = y(cid:48) Nel caso che le relazioni siano funzione, questa composizione coincide con • una funzione totale `e una funzione parziale tale che ∀x∃y(x,y) ∈ f la composizione di funzioni. (x,y) ∈ f si scrive anche y = f(x) P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 37/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 38/149 Applicazione alla semantica Strutture per la semantica denotazionale • E` preferibile usare funzioni parziali e non relazioni. • l’insieme di relazioni su Σ×Σ forma un reticolo completo, La soluzione precedente non prova che il punto fisso sia una funzione • l’operatore: parziale, potrebbe essere una relazione generica. • In IMP la semantica di un comando : Σ (cid:42) Σ. Γ(R) = {(σ,σ) | B b (σ) = false}∪ {(σ,σ(cid:48)) ∈ ((cid:74)R(cid:75)◦C c ) | B b (σ) = true} • Lo spazio delle funzioni parziali forma un ordine, (cid:74) (cid:75) (cid:74) (cid:75) f (cid:118) g quando le seguenti condizioni equivalenti sono soddisfatte: `e monotono, • g `e piu` definita di f, • ∀x.f(x)↓⇒f(x)=g(x) • il teorema di Knaster-Tarski prova l’esistenza un punto fisso per • come insieme di coppie (argomento, risultato) f ⊆g l’operatore Γ (soluzione delle definizione ricorsiva della semantica). questo spazio non `e un reticolo. La definizione ricorsiva possiede piu` soluzioni, la soluzione minima `e quella • E` necessario usare un secondo teorema di punto fisso. che descrive correttamente il comportamento del programma. . P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 39/149 P.DiGianantonio (Udine) Semanticadeilinguaggidiprogrammazione 40/149

Description:
Metodi applicati ad una serie linguaggi di programmazione via via pi`u complessi. Alternative, action semantics, semantica a giochi, categoriale.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.