• Non ci sono risultati.

Semantica e Concorrenza

N/A
N/A
Protected

Academic year: 2021

Condividi "Semantica e Concorrenza"

Copied!
3
0
0

Testo completo

(1)

Semantica e Concorrenza

Risolvere i seguenti esercizi, mostrando nel dettaglio i calcoli che portano alla soluzione.

Sistemi di regole

Definire un opportuna grammatica per rappresentazione dei numeri naturali in base tre e definire un insieme di regole, SOS style, per valutare la somma.

Teoria dei domini

Definire il grafo del dominio:

[[O → O] → O]

Definire inoltre l’insime di token e l’entailement relatition di un information system che generi esattemento lo stesso dominio.

Linguaggi funzionali

Dato il seguente programma funzionale, si assegnami alle variabili un opportuno tipo in modo tale che il programma sia ben tipato. Con questo assegnamen- to, si calcoli quindi la semantica operazionale e denotazionale, nell’ipotesi di valutazione degli argomenti call by value.

(λf. λx. (f (f x)))(λg. λy. (g(g y)))(λz.z + 1)0

Domini ricorsivi

Descrivere il dominio soluzione dell’equazione ricorsiva: calcolare formalmente i primi information system e domini di approssimazione e quindi descrive il dominio soluzione.

D ∼= (O × D)

1

(2)

Linguaggi imperativi

Nell’ipotesi di passaggio di parametri mediante call-reference e binding statico, valutare la semantica denotazionale, basata sulle continuazioni, del seguente programma.

begin var y := 1;

proc incrementa(x); x := x + y;

var y := 2;

incrementa(y) end

CCS

Si consideri l’algoritmo di Hyman per la mutua esclusione tra due processi P1 e P2. Siano b1, b2due variabili booleane e k una variabile intera che assume valori 1 o 2. Le variabili b1, b2 hanno inizialmente valore false, mentre k ha valore iniziale arbitrario. Ciascun processo Pi, i ∈ {1, 2}, esegue il seguente codice, dove j denota l’indice dell’altro processo.

while true do begin

“noncritical section”;

bi := true;

while k = j do begin

while bj do skip;

k := i;

end;

“critical section”;

bi := false;

end

1. Si rappresenti il codice dei due processi in CCS.

2. Utilizzando la logica di Hennessy-Milner, si dimostri che l’algoritmo di Hyman garantisce la mutua esclusione.

π-calcolo

Si consideri la seguente codifica nel π-calcolo poliadico dei numeri naturali:

n(xz)def= (x.)nz

1. Si definisca un processo Add(x1z1, x2z2, yw), che rappresenta la somma binaria. A questo fine si proceda nel seguente modo:

2

(3)

(a) Si definiscano processi mutuamente ricorsivi Copy(xz, yw) e Succ(xz, yw), che realizzano rispettivamente l’operazione di copia e il successore di un numero naturale, e se ne dimostri la correttezza, cio`e:

(νxz)(n(xz)|Copy(xz, yw)) ≈ n(yw) e (νxz)(n(xz)|Succ(xz, yw)) ≈ n + 1(yw) dove ≈ denota la weak bisimilarity.

(b) Si definisca quindi il processo Add(x1z1, x2z2, yw) e se ne dimostri la correttezza, cio`e:

(νx1z1x2z2)(m(x1z1)|n(x2z2)|Add(x1z1, x2z2, yw)) ≈ m + n(yw) 2. Si definisca poi un processo M ult(x1z1, x2z2, yw) per eseguire la moltipli-

cazione tra due naturali e se ne dimostri la correttezza. A tal fine servir`a prima definire un processo Double(xz, y1w1, y2w2), che produce due copie di un naturale.

3

Riferimenti

Documenti correlati

E quindi questi, in generale, sono i sistemi operativi più esposti agli attacchi dei virus, proprio perché permettono al virus di andare a scrivere in qualunque locazione di

[r]

Tipi riferimento Tipi di dato associati alla definizione di una classe; una variabile riferimento memorizza il riferimento ad un oggetto di una classe. Tipi primitivi Tipi di

Il Fortran ammette anche la “dichiarazione implicita” delle variabili: tutte le variabili il cui nome inizia con i,j,k,l,m,n sono automaticamente ritenute di tipo intero, mentre

Il tipo carattere è di fatto un dato di tipo numerico sul quale sono permesse tutte le operazioni definite sul tipo intero.. Il

In molti sistemi di controllo, con trasmissioni pneumatiche, idrauliche o mec- caniche si possono presentare ritardi finiti: l’uscita e le sue derivate rispondono dopo un tempo

• I puntatori (pointer) sono “type bound” cioè ad ogni puntatore è associato il tipo della variabile cui il puntatore si riferisce. • In C, nella dichiarazione di un

Calcolare il doppio di un valore di un numero di tipo intero letto in input e visualizzare il risultato di tale calcolo. Definizione dei dati