Semantica operazionale dei linguaggi di Programmazione

Documenti analoghi
Oggetti sintattici. Semantica operazionale dei linguaggi di Programmazione. Oggetti sintattici. Funzioni di valutazione semantica

Semantica operazionale dei linguaggi di Programmazione1

Logica per la Programmazione

Semantica operazionale dei Linguaggi di Programmazione Imperativi. Espressioni. Sistema di transizioni per la semantica

Logica per la Programmazione

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Elementi di Semantica Operazionale. Appunti per gli studenti di Fondamenti di Programmazione (corsi A-B-C)

Semantica operazionale dei linguaggi di Programmazione

Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if

7 Procedure. Estensioni sintattiche Dec ::= void Ide (Ptype Ide) Block Com ::= Ide(Exp);

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione

Logica per la Programmazione

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14

Introduzione. Semantica operazionale dei linguaggi di Programmazione. Semantica di un linguaggio formale. Come attribuire la semantica

Analisi Sintattica. Maria Rita Di Berardini. Universitá di Camerino Ruolo del parser

Cosa si intende con stato

Grammatiche e Linguaggi Liberi da Contesto

Sintassi. Linguaggi. 4: Sintassi. Claudio Sacerdoti Coen. Universitá di Bologna 24/02/2011. Claudio Sacerdoti Coen

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto

Precorsi di matematica

Grammatiche libere da contesto. Grammatiche libere da contesto

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

1 Il Paradigma ad Oggetti

Fondamenti teorici e programmazione

Operazioni numeriche - Input

Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale

Interpreti, compilatori e semantica operazionale

Fondamenti dell informatica

ANALISI SINTATTICA LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA

Programmazione II. Lezione 3. Daniele Sgandurra 26/10/2010.

LINGUAGGI DI ALTO LIVELLO

Il primo programma C++

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Assegnazione di una variabile

Semantiche dei linguaggi di programmazione

Scheme: struttura del programma e campo di azione

Grammatiche libere da contesto. Grammatiche libere da contesto

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Logica per la Programmazione

PROGRAMMAZIONE III Appello del 7/03/2003

Logica per la Programmazione

Semantica operazionale e denotazionale

Introduzione alla programmazione

Fondamenti dell Informatica. Esercizi di preparazione al secondo compitino

Logica per la Programmazione

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Integrale indefinito

9 Calcolo dei sequenti LC p

Variabili e assegnazione

Elementi di teoria degli insiemi

Contenuti. Elementi di semantica denotazionale ed operazionale. Sintassi astratta. Sintassi e semantica. ! sintassi astratta e domini sintattici

Introduzione alla logica proposizionale

Matematica per l Economia, a.a Integrazione al libro di testo

Logica per la Programmazione

Esercitazioni Informatica A. M. M. Bersani

Funzioni, Stack e Visibilità delle Variabili in C

Semantica di un linguaggio formale. Semantica operazionale dei linguaggi di Programmazione. Come attribuire la semantica.

1 Prodotto cartesiano di due insiemi 1. 5 Soluzioni degli esercizi 6

Logica proposizionale

Scope, Memoria e Tabella dei Simboli

Tipi di dato, variabili, istruzioni

1 Prodotto cartesiano di due insiemi 1. 5 Soluzioni degli esercizi 6

Corso sul linguaggio Java

Linguaggi formali e compilazione

Quick calculus Capitolo 1 Il problema della tangente

Fondamenti d Informatica: Grammatiche. Barbara Re, Phd

Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr.

LA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

Espressioni e Comandi

4 La Logica come base di ogni scienza. 5 Alla ricerca della forma logica. logica

Due osservazioni sulle variabili

15. Nozione di modello e verità di un predicato

Programmazione ricorsiva.

Concetti di base sugli automi e sui linguaggi formali

Tecniche per il passaggio dei parametri

Logica per la Programmazione

Corso di Informatica

5.4 Istruzione di input L istruzione di input ha la forma:

REGOLE DI INFERENZA PER TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2012/13

Grammatiche libere da contesto. Grammatiche libere da contesto

passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in

Espressività e limitazioni delle grammatiche regolari

Supplemento alle dispense di Sintassi

Dispensa di Informatica Teorica (Elementi) - Teorema di Cook

Che cos è l Informatica?

1 IL LINGUAGGIO MATEMATICO

Programmazione II. Lezione 12. Daniele Sgandurra 26/11/2010.

Linguaggi Regolari e Linguaggi Liberi

Matematica I. Modulo: Analisi Matematica. Corso 3 (matricole dal n al n 40167) Docente: R. Argiolas

Logica per la Programmazione

Corso di Informatica

Corso di Informatica

Logica per la Programmazione

LINGUAGGI DI PROGRAMMAZIONE

Transcript:

Semantica operazionale dei linguaggi di Programmazione Stato Rosario Culmone, Luca Tesei 19/12/2007 UNICAM - p. 1/??

Espressioni con variabili Espandiamo il sistema exp in modo da trattare il nuovo caso sintattico: Exp ::= Num Ide (Exp) Exp Op Exp Op ::= + - * / % Num ::=... Ide ::=... Con questa grammatica possiamo scrivere espressioni che contengono variabili indicate con i nomi generabili da Ide Es: x +2, 3 pippo +45 % y, tmp,... 19/12/2007 UNICAM - p. 2/??

Espressioni con variabili Quale può essere il significato da associare a questi oggetti sintattici? Quello che ci aspettiamo è che le variabili presenti nell espressione abbiano un certo valore associato Se questo è vero possiamo di nuovo associare all espressione un valore seguendo la logica del sistema nella versione precedente Per far questo introduciamo il concetto di stato 19/12/2007 UNICAM - p. 3/??

Lo stato: forma semplice Nella sua forma più semplice, uno stato non è altro che un insieme di associazioni del tipo nome, val dove val è un valore Indichiamo genericamente con Val l insieme dei valori: per quanto visto sino ad ora Val è il dominio semantico IN Uno stato ϕ può essere visto come una funzione ϕ : Ide Val Dato un nome x viene prodotto il valore associato ad x in ϕ Questa forma semplice di stato la chiameremo frame 19/12/2007 UNICAM - p. 4/??

Lo stato: forma semplice In generale un frame ϕ è una funzione parziale sul dominio Ide Utilizziamo ϕ, ϕ 0, ϕ, ϕ,... come metavariabili per denotare generici frame. Usiamo Φ per indicare l insieme di tutti i possibili frame Adottiamo l usuale notazione funzionale ϕ(x) per denotare il valore associato ad x nel frame ϕ Dato un frame ϕ che non contiene alcuna associazione per l identificatore x scriviamo ϕ(x) = Indichiamo con ω un frame vuoto, ovvero tale che ϕ(x) = qualunque sia x 19/12/2007 UNICAM - p. 5/??

Rappresentazione funzionale Una possibile rappresentazione di un frame, in forma funzionale, è la seguente Siano x 1,x 2,...,x k tali identificatori e siano v 1,v 2,...,v k i valori ad essi associati nello stato ϕ Definiamo ϕ come la seguente funzione: v 1 se x = x 1 v 2 se x = x 2 ϕ(x) =... v k se x = x k altrimenti 19/12/2007 UNICAM - p. 6/??

Rappresentazione estensiva Un modo alternativo di rappresentare il frame consiste nell elencare le associazioni presenti in ϕ come segue: ϕ = {x 1 v 1,x 2 v 2,...,x k v k } In questa notazione è essenziale che gli identificatori x 1,x 2,...,x k siano tutti distinti tra loro Non è importante l ordine in cui vengono elencate le associazioni x i v i all interno delle parentesi graffe 19/12/2007 UNICAM - p. 7/??

Rappresentazione grafica Graficamente indicheremo un frame in questo modo: x 1 v 1 ϕ = x 2 v 2... x k v k 19/12/2007 UNICAM - p. 8/??

Miglioriamo il sistema exp Per poter calcolare la semantica delle espressioni formate con la nuova grammatica dotiamo le configurazioni non terminali del sistema di transizioni di uno stato nella sua forma semplice: Γ exp = { E, ϕ E Exp, ϕ Φ} {n n IN} T exp = {n n IN} 19/12/2007 UNICAM - p. 9/??

Regole Rispetto alla versione precedente del sistema c è una sola regola in più La nuova regola gestisce il caso sintattico di base Ide Un qualsiasi albero sintattico di Exp può avere quindi come foglie delle stringhe di Num o dei nomi di variabili Ide Dato un certo stato ϕ e una espressione E, quest ultima deve essere valutata tenendo presente i valori associati da ϕ ai nomi Quindi ϕ deve essere disponibile in tutte le chiamate ricorsive del sistema S exp 19/12/2007 UNICAM - p. 10/??

Regole Vediamo quindi la regola (exp ide ) per gestire il nuovo caso sintattico ϕ(x) = n x, ϕ exp n La premessa ϕ(x) = n esprime il fatto che ϕ deve associare al nome x un valore naturale e quindi diverso da 19/12/2007 UNICAM - p. 11/??

Regole Tutte le altre regole restano invariate tranne che adesso nelle configurazioni c è anche lo stato Ogni regola diversa da (exp ide ) non usa direttamente lo stato Le regole ricorsive si limitano a passarlo tale e quale alle istanze ricorsive del sistema che costruiscono sottoderivazioni La regola (exp n ) non lo usa: n, ϕ exp n 19/12/2007 UNICAM - p. 12/??

Regole Vediamo alcuni esempi delle altre regole E, ϕ exp n E, ϕ exp n m = n +n E+E, ϕ exp m (exp + ) E, ϕ exp n E, ϕ exp n m = n n E*E, ϕ exp m (exp ) E, ϕ exp n E, ϕ exp n n n m = n n E-E, ϕ exp m (exp ) 19/12/2007 UNICAM - p. 13/??

Derivazione Facciamo una derivazione usando questo sistema Prendiamo ϕ = {x 5,y 2} (x+8) / y, ϕ exp { (exp div ), (d1): (x+8), ϕ exp 13, (exp ide ): y, ϕ exp 2 2 0, 13 div 2 = 6 } 6 19/12/2007 UNICAM - p. 14/??

Sottoderivazioni (d1): (x+8), ϕ exp { (exp () ), (d2): x+8, ϕ exp 13 } (d2): 13 x+8, ϕ exp { (exp + ), ((exp ide )): x, ϕ exp 5, ((exp n )): 8, ϕ exp 8, 13 = 5 + 8 } 13 19/12/2007 UNICAM - p. 15/??

Funzione di valutazione semantica Alla luce di questo nuovo sistema e dell introduzione dello stato cambia anche la funzione di valutazione semantica Il significato di una espressione aritmetica contentente dei nomi di variabili dipende anche dallo stato Formalmente la funzione di valutazione semantica E ha questo nuovo tipo: E:Exp (Φ IN) Ciò significa che ad ogni espressione E viene associata una funzione La semantica di una espressione che contiene Ide è una funzione 19/12/2007 UNICAM - p. 16/??

Funzione di valutazione semantica La funzione associata all espressione E, dato un certo stato ϕ, restituisce un numero naturale n che rappresenta il valore dell espressione nello stato ϕ Formalmente lo scriviamo utilizzando questa notazione: E [E] ϕ = n Possiamo, al solito, definire questa funzione utilizzando l ultima versione del sistema di transizioni S exp : E [E] ϕ = n se e solo se E, ϕ exp n 19/12/2007 UNICAM - p. 17/??

Strutturazione dello stato Modellare lo stato come un semplice frame non basta Il linguaggio Java ha dei meccanismi di scope delle variabili associati ai blocchi e ai sottoblocchi annidati Per trattare correttamente questi meccanismi abbiamo bisogno di un modello di stato più complesso Il modo giusto di trattare lo stato è quello di modellarlo come pila di frame 19/12/2007 UNICAM - p. 18/??

Pila di frame Ogni frame della pila si comporta esattamente come abbiamo visto sopra Per rappresentare una pila di frame possiamo usare una notazione grafica: x 31 ϕ 2 y 12 σ z 8 ϕ 1 x 25 19/12/2007 UNICAM - p. 19/??

Il nuovo stato Nella figura precedente il frame più in basso nella pila è ϕ 1 Il frame in testa alla pila è ϕ 2 Una pila di frame verrà indicata con le metavariabili σ, σ, σ 1, σ 2,... Indichiamo con Ω lo stato vuoto (ovvero la pila vuota di frame) L insieme Σ degli stati è definito induttivamente come segue: Σ = {Ω} {ϕ.σ ϕ Φ, σ Σ} 19/12/2007 UNICAM - p. 20/??

Il nuovo stato Una formalizzazione dello stato σ della figura di prima è la sequenza: ϕ 2.ϕ 1.Ω dove ϕ 1 e ϕ 2 sono le funzioni: ϕ 1 (v) = ϕ 2 (v) = { 8 se v=z 25 se v=x altrimenti { 12 se v=y 31 se v=x altrimenti 19/12/2007 UNICAM - p. 21/??

Nomi pluridefiniti Nella definizione di stato che abbiamo dato potrebbero esserci delle variabili a cui sono associati valori diversi in frame diversi Ad esempio nella figura di prima x ha valore 8 in ϕ 1 e 31 in ϕ 2 Questa possibilità deriva da una semplificazione che facciamo nel nostro linguaggio Java didattico Nel linguaggio Java completo questo non può mai accadere poichè il compilatore vieta di dichiarare nei sottoblocchi delle variabili con dei nomi che sono già presenti nell attivazione corrente 19/12/2007 UNICAM - p. 22/??

Frame e blocchi Nel nostro caso risolviamo il conflitto seguendo la logica della pila di frame Ogni frame, vedremo, contiene le variabili definite in un certo blocco Il frame che è in testa alla pila rappresenta le associazioni fatte più di recente, cioè quelle dell ultimo blocco aperto Scendendo in basso nella pila di un frame troviamo le variabili dichiarate nel blocco a cui quello corrente è annidato e così via 19/12/2007 UNICAM - p. 23/??

Ricerca del valore di una variabile Diciamo che il valore di un identificatore, in generale, è quello dell associazione più recente Tale valore si trova ricercandolo nei frame dello stato dall alto verso il basso Nell esempio, il valore dell identificatore x è 31 Il frame ϕ 2 è stato infatti impilato sul frame ϕ 1 Sempre nell esempio, il valore dell identificatore z è 8 19/12/2007 UNICAM - p. 24/??

Formalizziamo Dato uno stato σ ed un identificatore x indichiamo con σ(x) il valore associato ad x in σ Diamo una definizione ricorsiva di questa operazione: σ(x) = { se σ = Ω ϕ(x) se σ = ϕ.σ e ϕ(x) σ (x) se σ = ϕ.σ e ϕ(x) = 19/12/2007 UNICAM - p. 25/??

Esempio Consideriamo ancora l esempio precedente, con σ = ϕ 2.ϕ 1.Ω Abbiamo: σ(x) = 31 poiché ϕ 2 (x) = 31 σ(z) = 8 poiché ϕ 2 (z) = e ϕ 1 (z) = 8 19/12/2007 UNICAM - p. 26/??

Regole Con la nuova definizione di stato strutturato, le regole di S exp cambiano Le configurazioni del sistema di transizione E, ϕ vanno cambiate in E, σ In ogni regola dobbiamo mettere σ al posto di ϕ Vediamo come esempio la regola (exp ide ): σ(x) = n x, σ exp n 19/12/2007 UNICAM - p. 27/??

Modifica dello stato Come vedremo in seguito il significato di un programma è quello di eseguire transizioni di stato Ci si aspetta che tali transizioni modifichino lo stato in accordo al significato del programma (semantica) e allo stato iniziale (input) Definiamo quindi precisamente le operazioni di modifica dello stato Per cominciare definiremo una operazione che modifica un frame, poi ci occuperemo di definire la modifica di uno stato vero e proprio, cioè una pila di frame 19/12/2007 UNICAM - p. 28/??

Modifica di un frame Un frame ϕ è rappresentato da una funzione parziale La modifica di un frame corrisponde quindi alla modifica di una funzione parziale Per questo tipo di operazione si usa spesso la notazione ϕ[ v / x ] La funzione denotata da questa espressione corrisponde alla funzione ϕ originale che: resta invariata per tutti gli identificatori diversi da x produce il valore v per l identificatore x 19/12/2007 UNICAM - p. 29/??

Modifica di un frame In notazione matematica: ϕ[ v / x ](y) = { ϕ(y) se y x v se y = x Si noti che se ϕ(x) = invece ϕ[ v / x ](x) = v Cioè l operazione di modifica, oltre a modificare il valore di un identificatore presente in un frame ϕ, può essere usata per aggiungere un nuovo identificatore nel frame, dandogli un valore iniziale 19/12/2007 UNICAM - p. 30/??

Modifica in parallelo La notazione può essere estesa per trattare la modifica di un frame su più identificatori in parallelo Se ϕ è un frame, x 1,...x k sono k identificatori distinti e v 1,...v k sono k elementi in Val, la notazione ϕ[ v 1 /x1,..., v k /xk ] denota il frame: ϕ[ v 1 /x1,..., v k /xk ](y) = v 1 se y = x 1 v 2 se y = x 2... v k ϕ(y) se y = x k altrimenti 19/12/2007 UNICAM - p. 31/??

Modifica in parallelo Ad esempio: dato il frame ϕ = {x 5,y 2} detto ϕ 1 il frame ϕ[ 4 / x, 3 / y ] avremo che ϕ 1 (x) = 4, ϕ 1 (y) = 3 ϕ 1 (z) = per ogni altro identificatore z Da rimarcare ancora il fatto che gli identificatori modificati in parallelo devono essere tutti distinti Se così non fosse il risultato della modifica non sarebbe più una funzione (ci sarebbero più valori possibili per lo stesso identificatore) 19/12/2007 UNICAM - p. 32/??

Modifiche multiple Se fosse necessario rappresentare modifiche successive per lo stesso identificatore, non potremo utilizzare la notazione appena introdotta per modifiche multiple Ad esempio, saremo autorizzati a scrivere ϕ = (ϕ[ 10 / x ])[ 20 / x ] Sarebbe sbagliato invece scrivere ϕ = ϕ[ 10 / x, 20 / x ] Dalla definizione è chiaro che ϕ è una funzione e che ϕ (x) = 20 Invece ϕ non è una funzione da Ide in Val 19/12/2007 UNICAM - p. 33/??

Modifiche multiple: esempio Sia ϕ = {x 5,y 2} Il frame ϕ[ 4 / x, 3 / z ] è uguale a ϕ = {x 4,y 2,z 3} Verificarlo per esercizio 19/12/2007 UNICAM - p. 34/??

Modifica dello stato Passiamo ora a modificare lo stato vero e proprio, cioè una pila di frame σ Utilizzeremo la stessa notazione per indicare l operazione di modifica Tuttavia chiariamo subito che l operazione sarà di natura diversa da quella definita sui frame Sappiamo che il valore associato ad un identificatore x in uno stato è quello che si determina trovando una associazione per x a partire dal frame più recente Definiamo la modifica σ[ v / x ] in modo che riguardi l associazione più recente per x 19/12/2007 UNICAM - p. 35/??

Modifica dello stato Detto altrimenti, nello stato σ[ v / x ] viene modificato il frame più recente che contiene una associazione per x Consideriamo ad esempio uno stato σ del tipo ϕ 1.ϕ 2...ϕ i...ϕ k.ω Se ϕ i è il primo frame nella sequenza che contiene una associazione per x cioè ϕ 1 (x) = ϕ 2 (x) =... = ϕ i 1 (x) = e ϕ i (x) ) e i k Allora lo stato σ[ v / x ] non è altro che la sequenza modificata ϕ 1.ϕ 2...ϕ i [ v / x ]...ϕ k.ω 19/12/2007 UNICAM - p. 36/??

Modifica dello stato Si noti che, se nessun frame nello stato contiene una associazione per x, la modifica non ha alcun effetto Nell esempio, se ϕ 1 (x) = ϕ 2 (x) =... = ϕ k (x) =, allora σ[ v / x ] = σ In questo sta la maggiore differenza tra la modifica di un frame e la modifica di uno stato L operazione di modifica di un frame può essere usata per introdurre nuovi identificatori nel frame (dichiarazione) Invece l operazione di modifica di una pila di frame non può introdurre nuovi identificatori nello stato 19/12/2007 UNICAM - p. 37/??

Modifica dello stato L operazione così definita non segnala nessun eventuale errore nel caso di modifica di un identificatore non esistente L operazione si limita ad avere effetto nullo sullo stato Questo tipo di definizione di modifica è sufficiente per essere usata nel nostro sistema di transizioni che definisce la semantica Esso infatti non prevede una gestione degli errori di questo tipo Questo comportamento può essere cambiato qualora si volesse espandere il sistema e introdurre una gestione degli errori 19/12/2007 UNICAM - p. 38/??

Modifica dello stato Diamo una definizione formale della modifica di una pila di frame Utilizziamo la struttura ricorsiva della pila per definire ricorsivamente la modifica nel modo che abbiamo precedentemente illustrato informalmente { ϕ[ v / x ].σ se σ = ϕ.σ e ϕ(x) σ[ v / x ] = ϕ.σ [ v / x ] se σ = ϕ.σ e ϕ(x) = Ω se σ = Ω La notazione può essere estesa facilmente per trattare la modifica di una sequenza di identificatori distinti, che indicheremo con σ[ v 1 /x1,..., v k /xk ]. 19/12/2007 UNICAM - p. 39/??

Modifica dello stato: esempio Consideriamo come esempio lo stato σ = ϕ 2.ϕ 1.Ω, dove ϕ 1 e ϕ 2 sono i frame seguenti: ϕ 1 (v) = { 8 se v=z 25 se v=x ϕ 2 (v) = { 12 se v=y 31 se v=x altrimenti altrimenti Lo stato σ[ 50 / z, 40 / x ] è la sequenza ϕ 2.ϕ 1.Ω, con ϕ 1 = ϕ 1 [ 50 / z ] e ϕ 2 = ϕ 2 [ 40 / x ] D altra parte, lo stato σ[ 10 / w ] = σ dal momento che ϕ 2 e ϕ 1 non contengono una associazione per w 19/12/2007 UNICAM - p. 40/??

Notazioni riguardanti lo stato Nelle premesse delle regole e nella discussione sulla semantica dei comandi utilizzeremo spesso delle equazioni che hanno come componenti parti di uno stato o di un frame Analizziamone alcune e chiariamo da subito il loro significato 19/12/2007 UNICAM - p. 41/??

Notazioni riguardanti lo stato 1. ϕ(x) = v (risp. σ(x) = v) stabilisce semplicemente che il valore associato ad x nel frame ϕ (risp. nello stato σ) è v, mentre è ignoto (e non necessariamente indefinito) il valore associato ad ogni altro identificatore che non sia x 2. ϕ(x) = v non equivale a dire che il frame ϕ contiene una sola associazione (quella per l identificatore x): non corrisponde cioè a stabilire che ϕ = {x v} 3. La scrittura {x v} indica un frame in cui il valore associato ad x è v, mentre è indefinito ( ) il valore associato ad ogni altro identificatore 19/12/2007 UNICAM - p. 42/??

Notazioni riguardanti lo stato 4. Entrambe le scritture precedenti non equivalgono a ϕ[ v / x ], in quanto quest ultima sta ad indicare un frame che associa ad x il valore v e si comporta come ϕ, qualunque esso sia, in corrispondenza di ogni altro identificatore 5. Infine, mentre ϕ[ v / x ] rappresenta comunque un frame diverso da ϕ (con la particolarissima eccezione in cui ϕ(x) = v), σ[ v / x ] può essere una pila di frame identica a σ 19/12/2007 UNICAM - p. 43/??