Estratto del documento

Interpretazione astratta

Abstrazione: selezionare una proprietà

Abstrazione: selezionare una (delle) proprietà.

Abstrazione e correttezza

Astrare un insieme di punti nel piano.

Interpretazione astratta

  • Una tecnica utilizzata da circa 30 anni (Patrick e Radhia Cousot, 1977) per trattare in modo sistematico astrazioni e approssimazioni.
  • Nata per descrivere analisi statiche di programmi imperativi e provarne la correttezza.
  • Sviluppata per varie classi di linguaggi di programmazione e sistemi reattivi.
  • Vista oggi come tecnica generale per ragionare su semantiche a diversi livelli di astrazione.

L'idea generale

  • Il punto di partenza è la semantica concreta, ovvero una funzione che assegna significati ai comandi di un programma in un dominio fissato di computazione.
  • Un dominio astratto, che modella alcune proprietà delle computazioni concrete, tralasciando la rimanente informazione (dominio di computazione astratto).
  • Derivare una semantica astratta, che permetta di “eseguire astrattamente” il programma sul dominio astratto per calcolare la proprietà che il dominio astratto modella.
  • Il calcolo della semantica astratta tipicamente è un calcolo di punto fisso.
  • Sarà inoltre possibile calcolare una approssimazione corretta della semantica astratta.

Semantica concreta

  • Considereremo un linguaggio pseudo-funzionale di base piuttosto che un linguaggio imperativo nello stile While.
  • Iniziamo da un linguaggio molto limitato, che permette unicamente di moltiplicare interi.

Exp e ::= n | e*e3

  • La semantica di questo linguaggio si può descrivere mediante una funzione definita da: ηZ: Exp → η = n η(n) * e = η(e)₁ η(e₂)

Semantica astratta

  • Possiamo considerare un’astrazione della semantica concreta che calcola solo il segno delle espressioni Exp {-,0,+}.

σ: a - 0 +

n > 0 + - 0 +
n = 0 0 0 0 0
n < 0 - + 0 -

Correttezza

  • Possiamo dimostrare che questa astrazione è corretta, ovvero che prevede correttamente il segno delle espressioni.
  • La dimostrazione è per induzione strutturale sull’espressione e semplicemente utilizza le proprietà della moltiplicazione tra interi (il prodotto di due positivi è positivo, etc.).

Per ogni espressione e ∈ Exp:

  • η(e) < 0 ⇒ σ(e) = -
  • η(e) = 0 ⇒ σ(e) = 0
  • η(e) > 0 ⇒ σ(e) = +

Una prospettiva diversa

  • Possiamo associare ad ogni valore astratto l’insieme di valori concreti che esso rappresenta: P(Z).

γ: {-,0,+} → Z

  • γ(-) = {x ∈ Z | x < 0}
  • γ(0) = {0}
  • γ(+) = {x ∈ Z | x > 0}

Concretizzazione

  • La funzione di concretizzazione mappa un valore astratto in un insieme di valori concreti.
  • Indichiamo con D il dominio concreto dei valori e con A il dominio astratto.

A σ: Exp → γ: {η(e)₂} ⊆ γ(σ(e)) ⊆ η ⊆ D ⊆ P(D)

Interpretazione astratta

  • Abbiamo specificato una interpretazione astratta.
  • Computazioni astratte in un dominio astratto.
  • In questo caso, il dominio astratto è {+,0,-}.
  • La semantica astratta è corretta.
  • È un’approssimazione della semantica concreta {η(e)} ⊆ γ(σ(e)).
  • La funzione di concretizzazione stabilisce la relazione tra il concetto di approssimazione nei due domini concreto ed astratto.

Aggiungiamo -

  • Aggiungiamo al nostro tiny language l’operatore unario di cambiamento di segno.

Exp e ::= n | e*e | -e3 = - η(e) η(-e) = - dove:

  • - (-) = +,
  • - (0) = 0,
  • - (+) = -

σ(-e) = σ(e)

Aggiungiamo +

Aggiungere l’addizione è più complesso, in quanto il dominio astratto non è chiuso rispetto a questa operazione.

Anteprima
Vedrai una selezione di 9 pagine su 40
Elementi di Software Dependability -Interpretazione Astratta Pag. 1 Elementi di Software Dependability -Interpretazione Astratta Pag. 2
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Elementi di Software Dependability -Interpretazione Astratta Pag. 6
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Elementi di Software Dependability -Interpretazione Astratta Pag. 11
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Elementi di Software Dependability -Interpretazione Astratta Pag. 16
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Elementi di Software Dependability -Interpretazione Astratta Pag. 21
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Elementi di Software Dependability -Interpretazione Astratta Pag. 26
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Elementi di Software Dependability -Interpretazione Astratta Pag. 31
Anteprima di 9 pagg. su 40.
Scarica il documento per vederlo tutto.
Elementi di Software Dependability -Interpretazione Astratta Pag. 36
1 su 40
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Sara F di informazioni apprese con la frequenza delle lezioni di Elementi di Software Dependability e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Firenze o del prof Monile Umberto.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community