semantica operazionale dei linguaggi di...

78
30/10/2006 UNICAM - p. 1/78 Semantica operazionale dei linguaggi di Programmazione Sistemi di transizioni Rosario Culmone , Luca Tesei

Upload: others

Post on 21-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 1/78

Semantica operazionale dei linguaggi diProgrammazione

Sistemi di transizioni

Rosario Culmone, Luca Tesei

Page 2: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 2/78

Introduzione

■ Presenteremo una tecnica per definire in maniera formale la semantica di unlinguaggio di programmazione

■ Formalismo: sistemi di transizione basati sugli alberi di derivazione deiprogrammi

■ Linguaggio di riferimento: una versione semplificata di Java

Page 3: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 3/78

Semantica di un linguaggio formale

■ È il significato attribuito ad ogni stringa

■ Le stringhe di un linguaggio di per sé non hanno un particolare significato

■ L’attribuzione del significato è un passo successivo e indipendente dalladefinizione del linguaggio

■ Ad uno stesso linguaggio possono essere attribuite più semantiche

Page 4: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 4/78

Come attribuire la semantica

■ La scelta del metodo è fondamentale:

■ “A parole”, con una prosa, informalmente

■ Semiformalmente utilizzando la prosa con l’aiuto di alcuni strumenti formali

■ In maniera rigorosa e formale, basandosi su una caratterizzazione formaledella sintassi

Page 5: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 5/78

Linguaggi di programmazione

■ Attualmente la caratterizzazione sintattica dei linguaggi di programmazione èquasi sempre formale (Grammatica)

■ Su questa base si poggerebbe in maniera naturale una definizione rigorosadella semantica

■ Nei manuali invece la semantica risulta sempre definita in maniera informale

■ Ciò a scapito della chiarezza, della precisione, della definizione e dellapossibilità di ragionare matematicamente sulla correttezza dei programmi

Page 6: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 6/78

Strumenti

■ In questa parte descriveremo un modo per caratterizzare formalmente lasemantica di un certo linguaggio

■ Lo strumento che useremo sono i Sistemi di Transizioni

■ Obiettivo finale: dare un sistema di transizioni in grado di legare ogniprogramma ben formato di un linguaggio Java semplificato ad un significatopreciso

■ Il significato sarà un certo elemento di un dominio semantico definitoformalmente

Page 7: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 7/78

Sistemi di transizione

■ Sono oggetti matematici molto versatili

■ Possono modellare il concetto di calcolo

■ Possono rappresentare sistemi di dimostrazione

■ Possono modellare processi, ambienti, sistemi complessi

■ Permettono di dare la semantica operazionale di un linguaggio diprogrammazione

■ ...

Page 8: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 8/78

Sistemi di transizioni

■ Possiamo per il momento considerarli come “automi evoluti”

■ Esprimono una sequenza di azioni che portano ad un risultato

■ Le azioni sono chiamate transizioni

■ Ogni passo ha una configurazione (stato) di partenza e una di arrivo

■ Le configurazioni (stati) possono essere infinite

Page 9: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 9/78

Un primo approccio

■ Vediamo un semplice sistema di transizioni che modella il calcolo di unasomma semplice

■ Il sistema, date due cifre e un riporto, deve calcolare la loro somma comecifra risultato e relativo riporto

■ Ad esempio: 3 + 5, 0 = 8, 0 (si legge “3 + 5 con riporto di 0 è uguale a 8 conriporto di 0”)

■ Ad esempio: 8 + 7, 1 = 6, 1 (si legge “8 + 7 con riporto di 1 è uguale a 6 conriporto di 1”)

Page 10: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 10/78

Modello del calcolo

■ Possiamo pensare a questo calcolo come a una transizione da unaconfigurazione ad un’altra

■ Ad esempio 3 + 5, 0 è una configurazione da cui possiamo fare un passo dicalcolo e arrivare nella configurazione 8, 0

■ Nella configurazione 8, 0 non possiamo fare nessun ulteriore calcolo

■ Una configurazione del genere è detta terminale

Page 11: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 11/78

Modello del calcolo

■ Rappresentiamo le configurazioni in questo modo:

◆ 〈3, 5, 0〉 sta per 3 + 5, 0

◆ 〈8, 0〉 sta per 8, 0

■ Configurazioni del tipo 〈10, 0〉 o 〈3, 5, 2〉 non sono contemplate perché non èpossibile nel calcolo che stiamo modellando

■ Da una configurazione contemplata che non è terminale è possibile fare, ingenerale, zero o più passi di calcolo (il sistema può essere nondeterministico)

Page 12: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 12/78

Passi di transizione

■ Un passo di calcolo è modellato come un’associazione tra unaconfigurazione e un’altra

■ Si scrive così: 〈3, 7, 1〉 → 〈1, 1〉

■ Non tutte le configurazioni sono associate!

■ Ad esempio: 〈3, 7, 1〉 6→ 〈2, 1〉

■ Se lo fosse il sistema potrebbe fare dei calcoli sbagliati

Page 13: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 13/78

Passi di transizione

■ La logica del sistema di transizione, il suo modo di funzionare, è data da tuttele associazioni

■ Ogni associazione modella un possibile passo di transizione

■ Le associazioni, in generale, possono essere infinite

■ Nel nostro esempio sono un numero finito

Page 14: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 14/78

Formalizziamo

■ Un sistema di transizioni S è una tripla 〈Γ, T,→〉

◆ Γ è l’insieme delle configurazioni

◆ T ⊆ Γ è un sottoinsieme di Γ contenente le configurazioni terminali

◆ → è un insieme di coppie 〈γ, γ′〉 di configurazioni e viene detta relazionedi transizione

◆ L’appartenenza della coppia 〈γ, γ′〉 alla relazione → si indica così: γ → γ′

◆ Tali coppie sono chiamate transizioni

Page 15: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 15/78

Definizione delle configurazioni

■ In genere le configurazioni sono tuple (sequenze di elementi delimitate da〈 e 〉)

■ Ogni elemento della tupla è un oggetto definito matematicamente

■ Ad esempio: insieme, funzione, relazione, elemento di un insieme, stringa,simbolo di alfabeto, . . .

■ Nei sistemi che definiremo per dare la semantica operazionale dei linguaggidi programmazione gli elementi saranno spesso alberi di derivazione o alberisintattici

Page 16: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 16/78

Convenzione

In questa prima parte sui sistemi di transizioni adotteremo la seguenteconvenzione:

■ Se S è un simbolo non terminale di una certa grammatica dataallora l’espressione x ∈ S indica che x è una stringa associata ad un alberodi derivazione la cui radice è S

Nel seguito vedremo invece che x sarà spesso un albero sintattico astratto lacui radice è S

Page 17: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 17/78

Nell’esempio

Consideriamo questa semplice grammatica:

Cif ::= 0 | 1 | 2 | ... | 9

Definiamo formalmente il sistema dell’esempio.

Diamo un nome al sistema e alle sue componenti: Scr = 〈Γcr , Tcr ,→cr 〉

■ Γcr è l’insieme di tutte le configurazioni possibili

■ Tcr è l’insieme delle configurazioni terminali

■ →cr è l’insieme delle associazioni (transizioni) che esprimono i calcolipossibili

Page 18: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 18/78

Configurazioni

Γcr = {〈c, c′, r〉 | r ∈ {0, 1} e c, c′ ∈ Cif} ∪

{〈c, r〉 | r ∈ {0, 1} e c ∈ Cif}

Tcr = {〈c, r〉 | r ∈ {0, 1} e c ∈ Cif}.

■ Per esprimere tutte le associazioni tra le configurazioni che modellano ilcalcolo in questo caso semplice possiamo elencarle:

Page 19: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 19/78

Transizioni

〈0, 0, 0〉 →cr 〈0, 0〉 〈0, 0, 1〉 →cr 〈1, 0〉

〈0, 1, 0〉 →cr 〈1, 0〉 〈0, 1, 1〉 →cr 〈2, 0〉

〈0, 2, 0〉 →cr 〈2, 0〉 〈0, 2, 1〉 →cr 〈3, 0〉

. . . . . . . . . . . .〈9, 8, 0〉 →cr 〈7, 1〉 〈9, 8, 1〉 →cr 〈8, 1〉

〈9, 9, 0〉 →cr 〈8, 1〉 〈9, 9, 1〉 →cr 〈9, 1〉

Page 20: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 20/78

Un sistema più complesso

■ Consideriamo la seguente grammatica

Num ::= Cif | Num CifCif ::= 0 | 1 | 2 | ... | 9

■ Una qualsiasi stringa n ∈ Num è la rappresentazione di un numero naturale inbase dieci.

■ Definiamo un sistema di transizioni che◆ prese due stringhe n e n’◆ calcoli una stringa m che rappresenta il numero ottenuto sommando n e n’

■ Diamo un nome al sistema: Sn+ = 〈Γn+, Tn+,→n+〉

Page 21: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 21/78

Configurazioni

■ Sicuramente dobbiamo mettere nel sistema delle configurazioni 〈n, n′〉

■ Rappresentano lo stato in cui il sistema si appresta a calcolare la somma tran e n′

■ Potremmo chiamarle configurazioni “iniziali”

■ Le configurazioni terminali che ci aspettiamo sono i risultati, cioèrappresentazioni (m) di un numero naturale che sarà la somma

■ Sono sufficienti?

Page 22: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 22/78

Strategia

■ Prima di poter rispondere a questa domanda dobbiamo decidere in qualemodo fare operare il sistema per ottenere quello che vogliamo

■ Nel sistema precedente il calcolo poteva essere fatto con un solo passo ditransizione

■ Un sistema di transizioni in generale può operare facendo diversi passi ditransizione in sequenza

Page 23: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 23/78

Funzionamento di un sistema

È elementare:

■ In ogni momento il sistema si trova o viene posto in una delle sue possibiliconfigurazioni, diciamo γ

■ Il suo compito consiste nel fare un passo di derivazione, se possibile

■ Il sistema determina se c’è una configurazione γ′ associata con γ: cioè valeγ → γ′

■ Se esiste una (o più) γ′ di questo tipo allora il sistema compie il passo diderivazione e si porta in γ′ (una qualsiasi delle possibili, se più di una)

Page 24: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 24/78

Funzionamento del sistema

■ La configurazione γ′ diventa la configurazione corrente e il sistema si ritrovanella situazione iniziale in cui deve cercare di fare un altro passo diderivazione

■ Continuando questo processo si possono verificare tre situazioni:

Page 25: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 25/78

Funzionamento del sistema

1. Il sistema raggiunge una configurazione terminale (dalle quali in genere nonè possibile nessun passo di derivazione) e conclude quindi il suo compito

2. Il sistema raggiunge una configurazione non terminale dalla quale non èpossibile nessun passo di derivazione. In questo caso la configurazione sidice bloccata . Il sistema ha fallito nel portare a termine il suo compito

3. Il sistema continua a fare passi di derivazione all’infinito. Anche in questocaso consideriamo il compito fallito

Page 26: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 26/78

Formalizziamo

Dato un sistema di transizioni S = 〈Γ, T,→〉

■ Una derivazione in S è una sequenza (eventualmente infinita) diconfigurazioni γ0, γ1, . . . , γi−1, γi, . . . tale che per ogni k ≥ 1 γk−1 → γk

■ Una derivazione in S è indicata con γ0 → γ1 → . . . → γi

■ Indicheremo con γ∗

→ γ′ l’esistenza di una derivazione γ0 → γ1 → . . . → γi incui γ0 = γ e γi = γ′

Page 27: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 27/78

Strategia

■ Una strategia per risovere il problema della somma di numeri naturali si basasul concetto di derivazione

■ L’idea è di svolgere il calcolo per fasi successive seguendo il semplicealgoritmo delle addizioni in colonna che abbiamo imparato alle scuoleelementari

■ Facciamo un esempio. Supponiamo di voler sommare 54 e 38. Lo stadioiniziale del calcolo lo possiamo rappresentare così:

5438

Page 28: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 28/78

Strategia

■ Il calcolo procede effettuando una somma semplice tra due cifre ecalcolando un riporto:

15438

----2

■ poiché 4+8=2 con riporto 1

Il calcolo ha prodotto un risultato parziale, 2, ed un riporto, 1

Page 29: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 29/78

Modelliamo

Possiamo pensare di rappresentare lo stadio iniziale del calcolo, nel sistema ditransizioni, con la configurazione 〈54, 38〉

Il primo passo di calcolo che abbiamo fatto può essere modellato con unatransizione da 〈54, 38〉 ad una configurazione intermedia di questo tipo:

〈5, 3, 2, 1〉

5 e 3 rappresentano i numeri ancora da sommare, 2 il risultato intermedio e 1 ilriporto.

A questo punto il sistema si trova in questa configurazione e deve continuarecon un altro passo di derivazione

Page 30: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 30/78

Strategia

■ Procedendo nell’algoritmo di somma in colonna si ottiene:

05438----92

poiché 5+3+1=9 con riporto 0

■ A questa situazione corrisponde, nel sistema, la transizione da 〈5, 3, 2, 1〉 a〈0, 0, 92, 0〉

Page 31: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 31/78

Strategia

■ Non essendoci più cifre da sommare, il risultato è 92

■ A questa situazione corrisponde, nel sistema, la transizione da 〈0, 0, 92, 0〉 a92

■ Il sistema, in questo caso, ha quindi eseguito la seguente derivazione:〈54, 38〉 →n+ 〈5, 3, 2, 1〉 →n+ 〈0, 0, 92, 0〉 →n+ 92

Page 32: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 32/78

Configurazioni

■ Se vogliamo che il sistema usi questa strategia per calcolare il risultatodobbiamo definire le relative configurazioni possibili:

Γn+ = {〈n, n′〉 | n, n′ ∈ Num} ∪

{〈n, n′, m, r〉 | r ∈ {0, 1} e n, n′, m ∈ Num} ∪

{n | n ∈ Num}

Tn+ = {n | n ∈ Num}

Page 33: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 33/78

Attenzione

■ In questo sistema abbiamo un numero infinito di configurazioni possibili

■ In questo sistema abbiamo un numero infinito di associazioni fraconfigurazioni da definire affinché il calcolo che abbiamo visto possaavvenire fra due numeri qualsiasi

■ Come fare per definire →n+, che è infinita, usando una descrizione finita?

■ Ci vengono in aiuto le regole condizionali

Page 34: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 34/78

Regole condizionali

Sono regole scritte in questa forma:

π1 π2 . . . πn

γ → γ′

■ π1, π2 . . . πn sono formule dette precondizioni o premesse della regola

■ γ → γ′ è la conclusione della regola

■ La transizione indicata nella conclusione può essere fatta solo se tutte lepremesse πi sono verificate

Page 35: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 35/78

Regole condizionali

■ In generale una regola contiene, sia nelle premesse che nella conclusione,variabili che possono assumere valori in un certo dominio del discorsodefinito a priori

■ In realtà quindi una regola rappresenta un insieme, spesso infinito, di regoleche si ottengono sostituendo opportunamente le variabili della regola

■ Formalmente dovremmo quindi parlare di schemi di regole

■ Che tipo di formule possono essere le premesse?

Page 36: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 36/78

Premesse

Nel seguito saranno di un tipo tra questi:

■ un’uguaglianza del tipo x = t, dove x è una variabile e t è una espressione(termine) costruita a partire da costanti, variabili e operatori elementari

■ un predicato del tipo t rel t′, dove t, t′ sono termini e rel è un operatore direlazione elementare

■ una transizione del tipo δ → δ′, dove δ, δ′ sono configurazioni e → è larelazione di transizione di un sistema di transizioni (può anche essere ilsistema che si sta definendo, che sarà quindi ricorsivo)

Page 37: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 37/78

Lettura delle regole

■ Le regole possono essere lette in maniera logica o dichiarativa: laconclusione è vera se e solo se tutte le premesse sono vere

■ Esiste però anche un tipo di lettura operazionale

■ Noi scriveremo sempre regole che possono avere una corretta letturaoperazionale

■ Illustriamo questo modo di procedere scrivendo le regole per il sistema Sn+

Page 38: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 38/78

Scrittura di una regola

■ In generale dobbiamo scrivere un insieme di regole in modo da coprire tuttele possibili configurazioni non terminali

■ In questo modo definiamo cosa fa il sistema in ogni possibile configurazionein cui si può trovare

■ Naturalmente alcune configurazioni potranno essere comunque bloccate senon soddisfano le premesse delle regole

■ Ogni regola gestirà un insieme di configurazioni, mediante l’uso di variabili

■ La configurazione γ prima della freccia nella conclusione della regola è ilpunto di inizio della scrittura

Page 39: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 39/78

Le regole di Sn+

■ Partiamo con il considerare le configurazioni “iniziali” {〈n, n′〉 | n, n′ ∈ Num}

■ Ci aiuteremo sempre con la definizione della relativa grammatica se nelleconfigurazioni ci sono stringhe

■ Questo modo di scrivere le regole si chiama guidato dalla sintassi

■ Il caso più semplice di un Num è il caso base della grammatica Cif

■ Consideriamo quindi il caso più semplice di una coppia di Num:{〈c, c′〉 | c, c′ ∈ Cif}

Page 40: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 40/78

Le regole di Sn+

c ∈ Cif, c′ ∈ Cif, ?

〈c, c′〉 →n+ ?

Per evitare di inserire sempre le premesse del tipo c ∈ Cif fissiamo dellemetavariabili:

■ c, c′, c′′, . . . stanno per generiche cifre decimali, ovvero elementi dellacategoria sintattica Cif

■ r, r′, r′′, . . . stanno per elementi dell’insieme {0,1}, i riporti derivanti dallasomma tra due cifre

■ n, n′, m, . . . stanno per generici numeri decimali, ovvero elementi dellacategoria sintattica Num

Page 41: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 41/78

Le regole di Sn+

πi?

〈c, c′〉 →n+ γ′?

Chiamiamo questa regola (i). A questo stadio la lettura operazionale è laseguente:

■ se il sistema Sn+ si trova in una configurazione che fa match con 〈c,c′〉allora◆ se si possono rendere vere tutte le premesse πi

allora il sistema può effettuare un passo di transizione verso laconfigurazione γ′

Page 42: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 42/78

Lettura operazionale: copertura

■ Le variabili c e c’ possono essere viste come dei parametri di input

■ Attraverso il pattern matching con la configurazione attuale del sistema,quando la regola verrà usata, esse assumeranno un certo valore

■ Questi valori, tramite il nome delle variabili, possono essere usati nellepremesse per effettuare calcoli e trovare dei valori intermedi legati a nuovevariabili

Page 43: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 43/78

Lettura operazionale: copertura

La struttura della configurazione di arrivo γ′ (l’“output”) potrà essere specificatasolamente tramite:

■ costanti

■ le variabili di “input” in γ

■ le variabili inserite nelle premesse per il calcolo dei valori intermedi

■ combinazione di queste con operatori noti

Page 44: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 44/78

Le regole di Sn+

〈c, c′, 0〉 →cr 〈c′′, r〉

〈c, c′〉 →n+ γ′?

Ad esempio rappresenta il seguente calcolo intermedio:

0 14 ---> 48 8---- ------

2

con c = 5, c′ = 5, c′′ = 1, r = 1

Siccome siamo all’inizio del calcolo poniamo il riporto iniziale uguale a 0

Page 45: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 45/78

Le regole di Sn+

〈c, c′, 0〉 →cr 〈c′′, r〉

〈c, c′〉 →n+ γ′?

■ La premessa è una transizione del sistema Scr

■ La configurazione di partenza della transizione è costruita con i valori dellevariabili di “input”, che avranno un valore definito quando la regola verràapplicata

■ La configurazione di arrivo contiene le nuove variabili c′′e r

■ Il loro valore dipende dal comportamento di Scr

Page 46: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 46/78

Transizioni nelle premesse

Se una premessa è una transizione di un sistema di transizioni (anche lostesso):

■ La configurazione di partenza deve essere completamente specificata concostanti variabili di “input”, o comunque variabili “coperte”, e applicazioni dioperatori noti a queste

■ La premessa è soddisfatta se il sistema richiamato (si individua dal nomedella freccia), posto nella configurazione specificata può effettuare unatransizione

■ Nella lettura operazionale il processo può essere visto come una chiamata difunzione/procedura dell’altro sistema (ricorsiva se è lo stesso)

Page 47: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 47/78

Transizioni nelle premesse

■ Se il sistema interpellato può effettuare la transizione allora le nuove variabilinella configurazione di arrivo assumeranno un valore e risulteranno “coperte”

■ Le variabili coperte possono giocare lo stesso ruolo delle variabili di “input”

■ Nel caso non ricorsivo c’è una relazione gerarchica fra il sistema chiamantee quello chiamato

■ Il sistema chiamato nelle premesse viene detto sottosistema

Page 48: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 48/78

Le regole di Sn+

〈c, c′, 0〉 →cr 〈c′′, r〉

〈c, c′〉 →n+ 〈0, 0, c′′, r〉

Costruiamo la configurazione di arrivo del sistema Sn+:

■ nei casi corrispondenti alla configurazione di partenza che fa match con〈c, c′〉

■ in base ai valori calcolati dal sistema Scr in corrispondenza della relativaconfigurazione 〈c, c′, 0〉

Page 49: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 49/78

Le regole di Sn+

■ Abbiamo trattato, con la scrittura di questa regola, 100 possibiliconfigurazioni (2 cifre da 0 a 9) “iniziali” del sistema Sn+

■ Le possibili configurazioni sono infinite!

■ La prossima regola che scriviamo tratta infiniti casi

■ Seguendo sempre l’approccio guidato dalla sintassi dobbiamo trattare ora ilcaso in cui il primo numero della configurazione di Sn+ è del tipo nc, cioè siauna stringa composta da più di una cifra

■ Corrisponde al caso sintattico Num ::= Num Cif

Page 50: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 50/78

Le regole di Sn+

πi?

〈nc, c′〉 →n+ γ′?

Chiamiamo questa regola (ii). Deve trattare, ad esempio, questo caso:

0 134 ---> 347 07

--- ----1

Page 51: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 51/78

Le regole di Sn+

Basta di nuovo chiamare il sistema Scr per fare un passo di calcolo elementaree scrivere la configurazione di arrivo di Sn+ di conseguenza:

〈c, c′, 0〉 →cr 〈c′′, r〉

〈nc, c′〉 →n+ 〈n, 0, c′′, r〉

Page 52: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 52/78

Le regole di Sn+

Manca il caso sintattico simmetrico al precedente e quello in cui entrambi inumeri di partenza sono formati da più di una cifra:

〈c′, c, 0〉 →cr 〈c′′, r〉

〈c′, nc〉 →n+ 〈0, n, c′′, r〉

〈c, c′, 0〉 →cr 〈c′′, r〉

〈nc, n′c′〉 →n+ 〈n, n′, c′′, r〉

Page 53: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 53/78

Le regole di Sn+

Mettendo tutto insieme:

〈c, c′, 0〉 →cr 〈c′′, r〉

〈c, c′〉 →n+ 〈0, 0, c′′, r〉(i)

〈c, c′, 0〉 →cr 〈c′′, r〉

〈nc, c′〉 →n+ 〈n, 0, c′′, r〉(ii)

〈c′, c, 0〉 →cr 〈c′′, r〉

〈c′, nc〉 →n+ 〈0, n, c′′, r〉(iii)

〈c, c′, 0〉 →cr 〈c′′, r〉

〈nc, n′c′〉 →n+ 〈n, n′, c′′, r〉(iv)

Page 54: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 54/78

Le regole di Sn+

■ Abbiamo trattato tutte le possibili configurazioni “iniziali” di Sn+

■ La prova sta nel fatto che abbiamo trattato tutti i casi sintattici dellagrammatica

■ Le stringhe nelle configurazioni sono tutte e sole quelle generate dallagrammatica

■ Dobbiamo ora occuparci delle configurazioni intermedie del tipo 〈n, n′, m, r〉

Page 55: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 55/78

Configurazioni intermedie

■ Nelle configurazioni intermedie ci troviamo nella stessa situazione di quelleiniziali

■ Abbiamo due stringhe n e n′ di Num, una terza stringa m e una cifra di riporto

■ Le variabili che guidano il calcolo sono sempre n e n′, mentre m e il resto

sono accumulatori di comodo per i valori intermedi

Page 56: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 56/78

Le regole di Sn+

〈c, c′, r〉 →cr 〈c′′, r′〉

〈c, c′, m, r〉 →n+ 〈0, 0, c′′m, r′〉

Gestisce il calcolo intermedio in cui sono rimaste due cifre da sommare:r r’0c ---> 00c’ 0----- -------m c’’m

Page 57: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 57/78

Le regole di Sn+

Gli altri casi sintattici si ripetono in maniera analoga:

〈c, c′, r〉 →cr 〈c′′, r′〉

〈nc, c′, m, r〉 →n+ 〈n, 0, c′′m, r′〉

〈c′, c, r〉 →cr 〈c′′, r′〉

〈c′, nc, m, r〉 →n+ 〈0, n, c′′m, r′〉

〈c, c′, r〉 →cr 〈c′′, r′〉

〈nc, n′c′, m, r〉 →n+ 〈n, n′, c′′m, r′〉

Page 58: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 58/78

Terminazione

■ A questo punto abbiamo trattato tutte le possibili configurazioni, ma...

■ In nessun caso il sistema va a finire in una configurazione terminale!

■ Con le regole attuali il sistema continua a fare passi intermedi all’infinitoaggiungendo delle cifre 0 alla sinistra del risultato:

0 0 00 ---> 0 ---> 0 ---> ...0 0 0---- ----- -----m 0m 00m

Page 59: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 59/78

Terminazione

■ Dobbiamo fare in modo che quando il sistema ha concluso il calcolo facciauna transizione verso la configurazione che contiene solo la stringa risultato

■ Tutte le configurazioni in cui questo deve accadere sono della forma〈0, 0, m, 0〉

■ Aggiungiamo quindi questa regola, che non ha premesse:〈0, 0, m, 0〉 →n+ m

Page 60: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 60/78

Terminazione

■ Con questa nuova regola il sistema può decidere, in una configurazione〈0, 0, m, 0〉, di fermarsi

■ Tuttavia, nella stessa configurazione è ancora applicabile la regola:

〈c, c′, r〉 →cr 〈c′′, r′〉

〈c, c′, m, r〉 →n+ 〈0, 0, c′′m, r′〉

Page 61: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 61/78

Non determinismo

■ Quando ci sono più regole applicabili il sistema può sceglierne una qualsiasi

■ In altre parole i sistemi di transizioni possono essere non deterministici

■ Per i nostri scopi cercheremo sempre di definire sistemi deterministici

■ Se le grammatiche che usiamo non sono ambigue e se trattiamo ogniconfigurazione in un’unica regola il sistema sarà deterministico

■ In casi come questo ci può essere la necessità di porre delle condizioni perottenere il determinismo

Page 62: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 62/78

Condizioni di applicazione

■ Vogliamo escludere la possibilità che il sistema applichi la regola che fa unpasso intermedio nella configurazione 〈0, 0, m, 0〉

■ Per far questo basta aggiungere una condizione logica o nelle premesse o adestra della regola

■ In questo caso poniamola a destra per mettere in evidenza che si tratta diuna condizione di applicabilità sulla configurazione:

〈c, c′, r〉 →cr 〈c′′, r′〉

〈c, c′, m, r〉 →n+ 〈0, 0, c′′m, r′〉

se 〈c, c′, r〉 6= 〈0, 0, 0〉

Page 63: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 63/78

Sn+ completato

〈c, c′, 0〉 →cr 〈c′′, r〉

〈c, c′〉 →n+ 〈0, 0, c′′, r〉(i)

〈c, c′, 0〉 →cr 〈c′′, r〉

〈nc, c′〉 →n+ 〈n, 0, c′′, r〉(ii)

〈c′, c, 0〉 →cr 〈c′′, r〉

〈c′, nc〉 →n+ 〈0, n, c′′, r〉(iii)

〈c, c′, 0〉 →cr 〈c′′, r〉

〈nc, n′c′〉 →n+ 〈n, n′, c′′, r〉(iv)

Page 64: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 64/78

Sn+ completato

〈0, 0, m, 0〉 →n+ m (v)

〈c, c′, r〉 →cr 〈c′′, r′〉

〈c, c′, m, r〉 →n+ 〈0, 0, c′′m, r′〉se 〈c, c′, r〉 6= 〈0, 0, 0〉 (vi)

〈c, c′, r〉 →cr 〈c′′, r′〉

〈nc, c′, m, r〉 →n+ 〈n, 0, c′′m, r′〉(vii)

〈c′, c, r〉 →cr 〈c′′, r′〉

〈c′, nc, m, r〉 →n+ 〈0, n, c′′m, r′〉(viii)

Page 65: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 65/78

Sn+ completato

〈c, c′, r〉 →cr 〈c′′, r′〉

〈nc, n′c′, m, r〉 →n+ 〈n, n′, c′′m, r′〉(ix)

Page 66: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 66/78

Derivazioni

■ Proviamo adesso a porre il sistema in una certa configurazione e adapplicare le regole

■ Eseguiamo tutte le transizioni passo dopo passo costruendo una derivazione

■ Alla fine il sistema si troverà in una configurazione terminale

■ Per operare dobbiamo istanziare le regole che abbiamo scritto e fare dellesostituzioni

Page 67: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 67/78

Esempio di derivazione

Supponiamo di porre il sistema Sn+ nella configurazione 〈927, 346〉 e facciamoil primo passo di transizione:

〈927, 346〉

→n+ {(iv), 〈7, 6, 0〉 →cr 〈3, 1〉 }

〈92, 34, 3, 1〉

■ È stata applicata la regola (iv)

■ Il matching con la configurazione implica: n = 92, c = 7, n′ = 34, c′ = 6

Page 68: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 68/78

Sostituzione

■ Sostituendo i valori nella configurazione della premessa otteniamo:

〈7, 6, 0〉 →cr 〈c′′, r〉

■ Il sistema Scr associa a quella configurazione di partenza la configurazionedi arrivo 〈3, 1〉

■ Quindi, per rendere vera la premessa della regola (iv), dobbiamo porrec′′ = 3 e r = 1

■ In questo modo c′′ e r divengono coperte, cioè vengono associate a valori

intermedi del calcolo

■ Otteniamo quindi la configurazione risultato sostituendo i valori alle variabilinella configurazione di arrivo della regola (iv)

Page 69: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 69/78

Istanza della regola

La regola che abbiamo applicato è la (iv):

〈c, c′, 0〉 →cr 〈c′′, r〉

〈nc, n′c′〉 →n+ 〈n, n′, c′′, r〉

La sua istanza effettivamente applicata si ottiene sostituendo alle variabili tutti ivalori che abbiamo loro associato:

〈7, 6, 0〉 →cr 〈3, 1〉

〈92 7, 34 6〉 →n+ 〈92, 34, 3, 1〉

Page 70: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 70/78

Derivazione

La configurazione in cui siamo arrivati non è terminale, continuiamo con altripassi:

〈92, 34, 3, 1〉

→n+ {(ix), 〈2, 4, 1〉 →cr 〈7, 0〉 }

〈9, 3, 73, 0〉

→n+ {(vi), 〈9, 3, 0〉 →cr 〈2, 1〉 }

〈0, 0, 273, 1〉

→n+ {(vi), 〈0, 0, 1〉 →cr 〈1, 0〉 }

〈0, 0, 1273, 0〉

Page 71: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 71/78

Derivazione

Siamo nella configurazione immediatamente precedente a quella terminale:

〈0, 0, 1273, 0〉

→n+ {(v)}

1273

Il sistema, dopo la derivazione, si trova nella configurazione terminale 1273

Page 72: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 72/78

Copertura: definizione formale

■ Data una configurazione γ di un sistema di transizioni o un termine tcostruito usando costanti, variabili e operatori:V ars(γ) (risp. V ars(t)) indica l’insieme di tutte e sole le variabili checompaiono γ (risp. t)

■ Data una regola condizionale R:V ars(R) è l’insieme di tutte e sole le variabili che compaiono in R

Data una R:

π1 π2 . . . πn

γ → γ′

Page 73: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 73/78

Copertura: definizione formale

Sia x ∈ V ars(R). Diciamo allora che x è coperta in R se e solo se vale unadelle seguenti condizioni:

1. x occorre in γ

2. esiste in R una premessa πi del tipo x = t tale che x è coperta in R ex ∈ V ars(t)

3. esiste in R una premessa πi del tipo x = t tale che tutte le variabili inV ars(t) sono coperte

4. esiste in R una premessa πi del tipo δ →′ δ′ tale che tutte le variabili in δsono coperte in R e x ∈ V ars(δ′)

Page 74: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 74/78

Copertura

Se in una regola ci sono variabili non coperte allora la regola può essere privadi significato operazionale:

〈c, c′, 0〉 →cr 〈c′′, r〉, p, k > 0, p = k + 1

〈nc, n′c′〉 →n+ 〈n, n′, c′′, r〉

Le variabili p e k non sono coperte e infatti non sono logicamente legate alsignificato della regola

Noi considereremo solo regole in cui le variabili che appaiono sono tuttecoperte

Page 75: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 75/78

Sostituzione: definizione formale

■ Sia V = {x1, . . . , xn} un insieme di variabili distinte e sia c1, . . . , cn unasequenza di costanti

■ L’insieme di associazioni ϑ = {c1/x1, . . . , cn/xn} è detta sostituzione per levariabili in V

Esempio: ϑ1 = {92/n, 7/c, 34/n′, 6/c′, 3/c′′, 1/r}

Page 76: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 76/78

Applicazione di sostituzione

■ Sia X un termine o una configurazione e sia V = V ars(X) l’insieme dellevariabili che vi compaiono

■ Sia inoltre ϑ una sostituzione per le variabili in V

■ L’applicazione di ϑ a X , denotata da (X)ϑ, è il termine o la configurazioneche si ottiene rimpiazzando in X ogni variabile x con la costante c tale chec/x ∈ ϑ

■ Il termine o configurazione (X)ϑ verrà detto istanza di X via ϑ

Page 77: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 77/78

Applicazione di sostituzione

■ Sia R una regola condizionale, sia V = V ars(R) l’insieme di tutte e sole levariabili che occorrono in R e sia ϑ una sostituzione per le variabili in V

■ L’istanza di R via ϑ è la regola condizionale che si ottiene applicando ϑ atutti i termini e a tutte le configurazioni che occorrono in R

Esempio: applicando alla regola (iv) la sostituzione ϑ1 si ottiene

〈7, 6, 0〉 →cr 〈3, 1〉

〈92 7, 34 6〉 →n+ 〈92, 34, 3, 1〉

Page 78: Semantica operazionale dei linguaggi di Programmazionecomputerscience.unicam.it/culmone/?download=semantica11.pdf · 30/10/2006 UNICAM - p. 2/78 Introduzione Presenteremo una tecnica

30/10/2006 UNICAM - p. 78/78

Regole e relazione di transizione

Sia S = 〈Γ, T,→〉 un sistema di transizioni la cui relazione di transizione → èdefinita mediante un insieme finito di regole condizionali (r1), . . . , (rn)

Date due configurazioni γ, γ′ ∈ Γ, la coppia (γ, γ′) appartiene alla relazione →se e soltanto se esiste una sostituzione ϑ per le variabili in V ars(ri), con1 ≤ i ≤ n, tale che:

■ tutte le premesse di (ri)ϑ sono soddisfatte

■ la conclusione di (ri)ϑ è γ → γ′