Sei sulla pagina 1di 1

1

Prova scritta di Linguaggi - 08.02.2011 (prof. Merro)


Si consideri il linguaggio funzionale Lang : E Lang ::= x true false E1 and E2 fun(x : T ) E E E1 E2

let x = E1 in E2

1. (6 punti) Formalizzare la statica del linguaggio Lang fornendo un sistema di tipi con giudizi della forma E : T , per appropriati tipi T deniti dal candidato. 2. (6 punti) Una volta denito il sistema di tipi, dire, giusticando formalmente la risposta, se il termine T erm = (fun(f : T1 ) f true) (fun(g : T2 ) (fun(h : T3 ) g ) ` 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 . ` possibile esprimere nel linguaggio tipato Lang , con seman4. (6 punti) E tica call-by-name, termini che divergono? Argomentare formalmente la risposta. 5. (6 punti) Dire, fornendo giusticazione formale, se vale o meno il seguente risultato di determinatezza : Lemma 1 For all E Lang , if E cbn b1 and E cbn b2 then b1 = b2 . 6. (3 punti) Dire, giusticando formalmente la risposta, se esiste un termine in Lang che converga a valori dierenti nelle due semantiche, call-by-value e call-by-name.

Potrebbero piacerti anche