• Non ci sono risultati.

Fondamenti dei linguaggi di programmazione Fondamenti dei linguaggi di Fondamenti dei linguaggi di programmazione programmazione

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti dei linguaggi di programmazione Fondamenti dei linguaggi di Fondamenti dei linguaggi di programmazione programmazione"

Copied!
4
0
0

Testo completo

(1)

1

Murano Aniello

Fond. LP - Quarta Lezione 1

Fondamenti dei linguaggi di programmazione

Fondamenti dei linguaggi di Fondamenti dei linguaggi di

programmazione programmazione

Aniello Murano Aniello Murano Universit

Universitààdegli Studi di Napolidegli Studi di Napoli

“Federico IIFederico II”

Murano Aniello

Fond. LP - Quarta Lezione 2

Esercitazione sulla semantica di IMP e sulle tecniche di prova Esercitazione sulla semantica di Esercitazione sulla semantica di

IMP e sulle tecniche di prova IMP e sulle tecniche di prova

(2)

2

Murano Aniello

Fond. LP - Quarta Lezione 3

Argomenti di Esercitazione

Seconda lezione: Sintassi e semantica operazionale del linguaggio imperativo IMP

1. Utile per definire sintassi e semantica di nuovi operatori di un linguaggio

2.Utile per provare l’equivalenza semantica di due elementi di un linguaggio

Terza lezione: Tecniche di prova per induzione

3.Utile per provare delle proprietà semantiche degli elementi di un linguaggio

Murano Aniello

Fond. LP - Quarta Lezione 4

1. Definizione di un nuovo operatore

Supponiamo di voler estendere le espressioni aritmetiche di IMP includendo un nuovo operatore “^” con il significato di elevamento a potenza.

La sintassi di Aexp di IMP verrà estesa includendo anche a0^a1 dove a0e a1sono elementi di Aexp. Dunque per Aexp avremo:

a ::= n | X | a0+ a1| a0- a1| a0x a1| a0^ a1.

Valutazione del nuovo operatore

<a0,σ> → n0 <a1,σ> → n1

<a0^a1 ,σ> → n dove n è uguale a n0elevato a n1

(3)

3

Murano Aniello

Fond. LP - Quarta Lezione 5

2. Equivalenza semantica di due espressioni

Utilizzando le regole di valutazione introdotte per le espressioni aritmetiche è possibile mostrare l’equivalenza di due espressioni Per esempio, è possibile mostrare formalmente che

“ y + y ” equivale all’espressione “ y * 2 ”, cioè (y + y) ∼ (y * 2) Formalmente, si vuole provare che

<(y + y),σ> → m iff <(y * 2),σ> → m, per qualsiasi σ e m

“⇒” se <(y + y), σ> → m allora deve esistere un albero di derivazione con y valutato m0 e conclusione <(y + y), σ> → m=m0+m0. Dunque m è due volte la valutazione di y. Allora possiamo definire un albero di derivazione per <(y * 2), σ> con conclusione <(y * 2), σ> → m’=2 x m0= m0+m0=m

“⇐” L’inverso del discorso precedente

Murano Aniello

Fond. LP - Quarta Lezione 6

2. Equivalenza semantica di due comandi

Utilizzando le regole di valutazione introdotte per i comandi è possibile mostrare l’equivalenza di due comandi

Per esempio, è possibile mostrare formalmente che if y=3 then y:=y+1 else y:=y-1

if ¬(y=3) then y:=y-1 else y:=y+1 Formalmente, si vuole provare che

<if y=3 then y:=y+1 else y=y-1, σ> → σ’ iff <if ¬(y=3) then y:=y-1 else y:=y+1,σ> → σ’, per ogni scelta degli stati σ, σ’

“⇒” <if y=3 then y:=y+1 else y:=y-1, σ> → σ’ allora deve esistere un albero di derivazione in cui σ’ dipende dalla valutazione di y=3.

Allora possiamo definire un albero di derivazione per <if ¬(y=3) then y:=y-1 else y:=y+1,σ> con conclusione <if ¬(y=3) then y:=y-1 else y:=y+1,σ> → σ’’ dove σ’’=σ’

“⇐” L’inverso del discorso precedente

(4)

4

Murano Aniello

Fond. LP - Quarta Lezione 7

3. →Bexp è deterministica

Usando l’induzione strutturale proviamo che

P(b)=∀σ ∈ Loc e ∀w,w’ ∈ {true,false}. <b,σ> → w & <b,σ> → w’ ⇒ w=w’

Se b ≡ true/false. Allora c’è una sola regola per true/false che si può applicare e dunque w=w’.

Se b ≡ a0 = a1oppure b ≡ a0 · a1 allora i valori w e w’ dipendono dalle regole di valutazione delle espressioni aritmetiche. Il risultato segue dal fatto che →Aexpè deterministica.

Se b ≡ b0 b1 oppure b ≡ b0 b1 oppure b ≡ ¬b0, il risultato segue per ipotesi induttiva.

Murano Aniello

Fond. LP - Quarta Lezione 8

Esercizio

Provare che →Bexp è totale utilizzando il metodo di induzione strutturale

Riferimenti

Documenti correlati

Induzione matematica e strutturale sono casi particolari di un potente metodo di prova chiamato induzione ben fondata In questa lezione vedremo in dettaglio:. ¾ Induzione

Negli anni sessanta, Christopher Strachey e Dana Scott riuscirono a superare le limitazioni della semantica operazionale introducendo una semantica più astratta basata sull’utilizzo

La sintassi specifica sia la struttura lessicale del linguaggio (come costruire le parole a partire dai caratteri dell’alfabeto) sia le regole per la costruzione delle

Si noti che nel comando if, comunque sia valutato b in σ’, esso viene interrotto dopo l’esecuzione di c e dunque in questo caso &lt;w,σ&gt; è valutato σ’ sse &lt;if,σ&gt;.

Passo induttivo: supponendo che l’asserto sia vero per un albero di derivazione alto n e per n cicli di valutazioni nella denotazione del while (con n &gt; 0, quindi anche per

L'iterazione ed il singolo ciclo terminano non appena viene incontrata una espressione booleana che valuta a falso”. Verificare che le due semantiche

[r]

Ma siccome stiamo valutando l’equivalenza dei due comandi if nel senso di un utilizzo alternativo degli stessi (nello stesso istante), qualsiasi scelta venga effettuata tra c 0 e c