Sei sulla pagina 1di 1

1

Prova scritta di Linguaggi - 20.06.2011 (prof. Merro)


Si consideri il linguaggio Lang denito attraverso la seguente grammatica: V V al C Lang ::= x true false V1 or V2 V1 V2 C; C skip V

fun(x : Tv ) V ::= x := V while V do C

if V then C else C

1. (6 punti) Formalizzare la statica del linguaggio Lang fornendo un sistema di tipi con giudizi della forma V : Tv e C : Tc , per appropriati tipi Tv and Tc deniti dal candidato . 2. (6 punti) Una volta denito il sistema di tipi, dire se il termine while (fun(f : T1 ) f true) (fun(g : T2 ) (fun(h : T3 ) hg )false)) do x := x or true ` e ben tipato o meno, al variare dei tipi T1 , T2 e T3 . 3. (6 punti) Formalizzare la dinamica del linguaggio tipato Lang attraverso una semantica big-step in stile call-by-name, cbn . Denire, per dierenza, una semantica big-step in stile call-by-value , cbv . 4. (6 punti) Si estenda la sintassi del linguaggio col costrutto per la programmazione concorrente: C1 par C2 . Adeguare il sistema di tipi e la semantica operazionale. 5. (6 punti) Dopo averla denita formalmente, dire, fornendo giusticazione formale, se vale o meno la propriet` a di determinatezza nel linguaggio esteso nel punto precedente. 6. (3 punti) Proporre una semantica comportamentale per il linguaggio esteso e fornire almeno tre leggi algebriche valide e tre non valide.

Potrebbero piacerti anche