• Keine Ergebnisse gefunden

Bernhard Hering

N/A
N/A
Protected

Academic year: 2022

Aktie "Bernhard Hering"

Copied!
42
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Kontrollflussanalyse 2

0-CFA Analyse

Bernhard Hering

24.Juni.2009

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 1 / 40

(2)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Inhaltsverzeichnis

1 Kontrollflussanalyse

2 0-CFA Verfahren Beispiel

3 Syntax orientierte Analyse Spezifikation

Anwendung auf Beispiel Korrektheit der Analyse

4 Algorithmus zum Sammeln der Bedingungen Spezifikation

Beispiel

Korrektheit der Analyse

5 Algorithmus zum Lösen der Bedingungen

Algorithmus

(3)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Kontrollflussanalyse Einführung

statische Analyse

vor dem Ausführen eines Programms durchgeführt von welchen Block im Programm die Kontrolle an welchen Block übergeben wird

Graph der Kontrollfluss modelliert Ziel Modellierung des Kontrollflusses

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 3 / 40

(4)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Das 0-CFA Verfahren

1

abstrakte Spezifikation, strukturelle Operationalisierung und Korrektheit

2

Syntax orientierte Analyse

3

Algorithmus zum Sammeln und Lösen der Bedingungen

(Constraints)

(5)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel

((fn x ⇒ x )(fn y ⇒ y ))

Programmiersprache FUN ähnlich SML id y : Funktion in die id x einsetzen

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 5 / 40

(6)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel mit Labels

Labels setzen:

((fn x ⇒ x 1 ) 2 (fn y ⇒ y 3 ) 4 ) 5

Denkbare Lösung für die Menge ( ˆ C , ρ): ˆ

( ˆ C , ρ) ˆ C(1) fn y ⇒ y 3 C(2) fn x ⇒ x 1

C(3) ∅

C(4) fn y ⇒ y 3 C(5) fn y ⇒ y 3 r(x) fn y ⇒ y 3

r(y) ∅

(7)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel mit Labels

Labels setzen:

((fn x ⇒ x 1 ) 2 (fn y ⇒ y 3 ) 4 ) 5

Denkbare Lösung für die Menge ( ˆ C , ρ): ˆ ( ˆ C , ρ) ˆ

C(1) fn y ⇒ y 3 C(2) fn x ⇒ x 1

C(3) ∅

C(4) fn y ⇒ y 3 C(5) fn y ⇒ y 3 r(x) fn y ⇒ y 3

r(y) ∅

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 6 / 40

(8)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Syntax orientierte Analyse

Spezifikation

[con] ( ˆ C, ρ) ˆ | = s c l always [var] ( ˆ C, ρ) ˆ | = s x l

iff ρ(x) ˆ ⊆ C(l) ˆ [fn] ( ˆ C, ρ) ˆ | = s (fn x ⇒ e 0 ) l

iff {fn x ⇒ e 0 } ⊆ C ˆ (l) ∧ ( ˆ C, ρ) ˆ | = s e 0

[fun] ( ˆ C, ρ) ˆ | = s (fun f x ⇒ e 0 ) l

iff {fun f x ⇒ e 0 } ⊆ C(l) ˆ ∧ ( ˆ C , ρ) ˆ | = s e 0

∧ {fun f x ⇒ e 0 } ⊆ ρ(f ˆ ) [app] ( ˆ C, ρ) ˆ | = s (t 1 l

1

t 2 l

2

) l

iff ( ˆ C , ρ) ˆ | = s t 1 l

1

∧ ( ˆ C , ρ) ˆ | = s t 2 l

2

∧ (∀(fn x ⇒ t 0 l

0

) ∈ C(l ˆ 1 ) :

C(l ˆ 2 ) ⊆ ρ(x) ˆ ∧ C ˆ (l 0 ) ⊆ C ˆ (l))

(∀(fun f x ⇒ t l

0

) ∈ C ˆ (l ) :

(9)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Spezifikation

[if ] ( ˆ C , ρ) ˆ | = s (if t 0 l

0

then t 1 l

1

else t 2 l

2

) l iff ( ˆ C, ρ) ˆ | = s t 0 l

0

∧ ( ˆ C, ρ) ˆ | = s t 1 l

1

∧ ( ˆ C , ρ) ˆ | = s t 2 l

2

C(l ˆ 1 ) ⊆ C(l) ˆ ∧ C(l ˆ 2 ) ⊆ C(l)) ˆ [let] ( ˆ C , ρ) ˆ | = s (let t 1 l

1

in t 2 l

2

) l

iff ( ˆ C, ρ) ˆ | = s t 1 l

1

∧ ( ˆ C, ρ) ˆ | = s t 2 l

2

∧ C(l ˆ 1 ) ⊆ ρ(x) ˆ ∧ C(l ˆ 2 ) ⊆ C(l)) ˆ [op] ( ˆ C , ρ) ˆ | = s (t 1 l

1

op t 2 l

2

) l

iff ( ˆ C, ρ) ˆ | = s t 1 l

1

∧ ( ˆ C, ρ) ˆ | = s t 2 l

2

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 8 / 40

(10)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Anwendung auf Beispiel

von aussen nach innen

zuerst anwenden des Konstrukts [app]

[app] ( ˆ C, ρ) ˆ | = s (t 1 l

1

t 2 l

2

) l

iff ( ˆ C , ρ) ˆ | = s t 1 l

1

∧ ( ˆ C , ρ) ˆ | = s t 2 l

2

∧ (∀(fn x ⇒ t 0 l

0

) ∈ C(l ˆ 1 ) :

C(l ˆ 2 ) ⊆ ρ(x) ˆ ∧ C ˆ (l 0 ) ⊆ C ˆ (l )) (∀(fun f x ⇒ t 0 l

0

) ∈ C ˆ (l 1 ) : C(l ˆ 2 ) ⊆ ρ(x) ˆ ∧ C ˆ (l 0 ) ⊆ C ˆ (l )) C(l ˆ 2 ) ⊆ ρ(x): ˆ C(l ˆ 2 ) wird an x gebunden

C(l ˆ 0 ) ⊆ C(l)): Modelliert die Parameterübergabe ˆ

(11)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Anwendung auf Beispiel

Anwendung:

[app] ( ˆ C, ρ) ˆ | = s ((fn x ⇒ x 1 ) 2 (fn y ⇒ y 3 ) 4 ) 5

iff ( ˆ C , ρ) ˆ | = s (fn x ⇒ x 1 ) 2 ∧ ( ˆ C, ρ) ˆ | = s (fn y ⇒ y 3 ) 4 ∧ C(4) ˆ ⊆ ρ(x) ˆ ∧ C(1) ˆ ⊆ C(5) ˆ

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 10 / 40

(12)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Anwendung auf Beispiel 2

Konstrukt [fn] für Label 2, 4 [fn] ( ˆ C , ρ) ˆ | = s (fn x ⇒ e 0 ) l

iff {fn x ⇒ e 0 } ⊆ C ˆ (l) ∧ ( ˆ C , ρ) ˆ | = s e 0

(13)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Anwendung auf Beispiel 2

Konstrukt [fn] für Label 2, 4 [fn] ( ˆ C , ρ) ˆ | = s ((fn x ⇒ x 1 ) 2

iff fn x ⇒ x 1 ⊆ C ˆ (2) ∧ ( ˆ C , ρ) ˆ | = s x 1 [fn] ( ˆ C , ρ) ˆ | = s ((fn y ⇒ y 3 ) 4

iff fn y ⇒ y 3 ⊆ C ˆ (4) ∧ ( ˆ C , ρ) ˆ | = s y 3

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 12 / 40

(14)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Anwendung auf Beispiel 3

Konstrukt [var ] für Label 1, 3 [var ] ( ˆ C , ρ) ˆ | = s x l

iff ρ(x ˆ ) ⊆ C ˆ (l)

(15)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Anwendung auf Beispiel 3

Konstrukt [var ] für Label 1, 3 [var ] ( ˆ C , ρ) ˆ | = s x 1

iff ρ(x ˆ ) ⊆ C ˆ (1) [var ] ( ˆ C , ρ) ˆ | = s x 3

iff ρ(y ˆ ) ⊆ C ˆ (3)

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 14 / 40

(16)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Anwendung auf Beispiel 4

Menge der Bedingungen.

( ˆ C , ρ) = ˆ

{ (fn x ⇒ x 1 ) ⊆ C ˆ (2) ⇒ C ˆ (4) ⊆ ρ(x), ˆ (fn x ⇒ x 1 ) ⊆ C ˆ (2) ⇒ C ˆ (1) ⊆ C ˆ (5), fn x ⇒ x 1 ⊆ C ˆ (2),

fn y ⇒ y 3 ⊆ C ˆ (4),

ρ(x ˆ ) ⊆ C ˆ (1),

id y ⊆ C ˆ (3)}

(17)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Korrektheit der Analyse

( ˆ C , ρ) ˆ kann unendlich groß werden

( ˆ C , ρ) ˆ einschränken auf alle Terme die im Programm konkret vorkommen

( ˆ C , ρ) ˆ v ( ˆ C T , ρ ˆ T ) wobei ( ˆ C T , ρ ˆ T )

wenn ( ˆ C , ρ) ˆ | = s e und ( ˆ C , ρ) ˆ v ( ˆ C T , ρ ˆ T )

dann ( ˆ C , ρ) ˆ | = e ∗

⇒ ( ˆ C , ρ) ˆ | = s e ∗ ist auch eine Lösung

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 16 / 40

(18)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Korrektheit der Spezifikation - Beweis

wenn ( ˆ C , ρ) ˆ | = s e und ( ˆ C , ρ) ˆ v ( ˆ C T , ρ ˆ T ) wird angenommen.

Coindunktion über ( ˆ C , ρ) ˆ | = e alle Konstrukte gleich bis auf [app]

Gleichheit durch Einschränkung gegeben

(19)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Algorithmus zum Sammeln der Bedingungen

Algorithmus C ∗ [[e ∗ ]]

Eingabe e ∗

Ausgabe der Bedingungen Form der Bedingungen:

lhs ⊆ rhs oder ({t} ⊆ rhs 0 ⇒ lhs ) ⊆ rhs .

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 18 / 40

(20)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Algorithmus zum Sammeln der Bedingungen

Spezifikation [con] C ∗ [[c l ]] = ∅

[var] C ∗ [[c l ]] = {r(x) ⊆ C(l)}

[fn] C ∗ [[(fn x ⇒ e 0 ) l ]] =

{{fn x ⇒ e 0 } ⊆ C(l)} ∪ C ∗ [[e 0 ]]

[fun] (C ∗ [[(fun x ⇒ e 0 ) l ]] = {{fun f x ⇒ e 0 } ⊆ C(l)}

∪ C ∗ [[e 0 ]] ∪ {{fun f x ⇒ e 0 } ⊆ r(f )}

[app] C ∗ [[(t 2 l

2

t 2 l

2

) l ]] = C ∗ [[t 1 l

1

]] ∪ C ∗ [[t 2 l

2

]]

∪ {t} ⊆ C (l 1 ) ⇒ C(l 2 ) ⊆ r(x)

| t = (fn x ⇒ t 0 l

0

) ∈ Term ∗

∪ {t} ⊆ C (l 1 ) ⇒ C(l 0 ) ⊆ C(l)

| t = (fn x ⇒ t 0 l

0

) ∈ Term ∗

∪ {t} ⊆ C (l 1 ) ⇒ C(l 2 ) ⊆ r(x)

| t = (fun x ⇒ t 0 l

0

) ∈ Term

(21)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Algorithmus zum Sammeln der Bedingungen

Spezifikation

[if ] C ∗ [[if t 0 l

0

then t 1 l

1

else t 2 l

2

) l ]] =

C ∗ [[t 0 l

0

]] ∪ C ∗ [[t 1 l

1

]] ∪ C ∗ [[t 2 l

2

]] ∪ {C(l 1 ) ⊆ C(l)} ∪ {C(l 2 ) ⊆ C(l)}

[let] C [[(let x = t 1 l

1

in t 2 l

2

) l ]] = C ∗ [[t 1 l

1

]] ∪ C ∗ [[t 2 l

2

]] ∪

{{C(l 1 ) ⊆ r(x)} ∪ {C(l 2 ) ⊆ C(l)}}

[op] C ∗ [[(t 1 l

1

op t 2 l

2

) l ]] = C ∗ [[t 1 l

1

]] ∪ C ∗ [[t 2 l

2

]]

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 20 / 40

(22)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Anwendung auf Beispiel

Analog zur Syntax orientierten Spezifikation bis auf [app].

Alle t werden behandelt.

Damit ergibt sich für Menge der Bedingungen C ∗ [[((fn x ⇒ x 1 ) 2 (fn y ⇒ y 3 ) 4 ) 5 ]] = {r(x ) ⊆ C (1)

fn x ⇒ x 1 ⊆ C (2) r (y ) ⊆ C (3) fn y ⇒ y 3 ⊆ C (4)

(fn x ⇒ x 1 ) ⊆ C (2) ⇒ C (4) ⊆ r(x ) (fn x ⇒ x 1 ) ⊆ C (2) ⇒ C (1) ⊆ C (5).

(fn y ⇒ y 3 ) ⊆ C (2) ⇒ C (4) ⊆ r(y )

(fn y ⇒ y 3 ) ⊆ C (2) ⇒ C (3) ⊆ C (5)}

(23)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Korrektheit des Algorithmus

Berechnet der Algorithmus das selbe?

wenn ( ˆ C , ρ ˆ v ( ˆ C T , ρ ˆ T ) dann C ˆ , ρ ˆ | = s e ∗

genau dann wenn C ˆ , ρ ˆ | = c C ∗ [[e ∗ ]]

Beweis: strukturelle Induktion über e

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 22 / 40

(24)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Algorithmus zum Lösen der Bedingungen

Eingabe die Menge der Bedingungen C ∗ [[e ∗ ]]

erstellt Graph

( ˆ C , ρ) ˆ (Durch aufzeichnen des Graphs)

drei Datensätze (Arbeitsliste W, Datenfeld D,

Kantenmenge E)

(25)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Syntax orientierte Analyse

Spezifikation

Schritt 1: Inizialisieren W:=nil;

forqin Nodes doD[q] :=∅;

forqin Nodes doE[q] :=nil; Schritt 2: Erstellen des Graphs

forccinC∗[[e∗]]do caseccof

{t} ⊆p: add(p,{t});

p1⊆p2: E[p1] :=cons(cc,E[p1]);

{t} ⊆p⇒p1⊆p2: E[p1] :=cons(cc,E[p1]);

E[p] :=cons(cc,E[p]);

Schritt 3: Iteration while W6=nil do

q:=haed(W); W:=tail(W);

forccinE[q]do caseccof

p1⊆p2: add(p2,D[p1]);

{t} ⊆p⇒p1⊆p2: ift∈D[p]then add(p2,D[p1]);

Schritt 4: Aufzeichnen der Lösungen forlinLabdoC(l) :=ˆ D[C(l)];

forxinVar∗doρ(x) :=ˆ D[r(x)];

Unterprogramme: procedure add(q,d)is iff¬(d⊆D[q])

thenD[q] :=D[q]∪d; W:=cons(q,W);

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 24 / 40

(26)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel

Eingabe:

C [[((fn x ⇒ x 1 ) 2 (fn y ⇒ y 3 ) 4 ) 5 ]] = {r (x ) ⊆ C (1)

fn x ⇒ x 1 ⊆ C (2) r(y ) ⊆ C (3) fn y ⇒ y 3 ⊆ C (4)

(fn x ⇒ x 1 ) ⊆ C (2) ⇒ C (4) ⊆ r(x) (fn x ⇒ x 1 ) ⊆ C (2) ⇒ C (1) ⊆ C (5).

(fn y ⇒ y 3 ) ⊆ C (2) ⇒ C (4) ⊆ r (y )

(fn y ⇒ y 3 ) ⊆ C (2) ⇒ C (3) ⊆ C (5)}

(27)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 1

Schritt 1

Initialisieren der Datenstrukturen:

p D[p] E [p]

W =

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 26 / 40

(28)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 2

Schritt 2

Erstellen des Graphen:

für jedes C (l) und jedes r (x ) ein Konten:

r (x ) r (y )

id x

C (2)

C(1) C(3)

id y

C(4)

C (5)

(29)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 2

Schritt 2

Erstellen des Graphen:

für jedes C (l) und jedes r (x ) ein Konten:

r (x ) r (y )

id x

C (2)

C(1) C(3)

id y

C(4)

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009

C(5)

27 / 40

(30)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 2 b

Nach Schritt 2 W = [C (4), C (2)]

r (x) r (y)

id x

C(2)

C (1) C(3)

id y

C (4) id x ⊆ C(2)

id y ⊆ C(2)

id y ⊆ C (2)

(31)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 3

Schritt 3

Arbeitsliste abarbeiten

das heißt wird betrachten C(4)

[ (fn x ⇒ x 1 ) ⊆ C (2) ⇒ C (4) ⊆ r (x ), (fn y ⇒ y 3 ) ⊆ C (2) ⇒ C (4) ⊆ r(y )]

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 29 / 40

(32)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 3

W [C(4),C(2)] [r(x),C(2)]

p D[p] D[p]

C(1) ∅ ∅

C(2) id x id x

C(3) ∅ ∅

C(4) id y id y

C(5) ∅ ∅

r(x) ∅ id y

r(y) ∅ ∅

(33)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 3

Schritt 3

wir betrachten r(x)

[r(x ) ⊆ C (1)]

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 31 / 40

(34)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 3

W [C(4),C(2)] [r(x),C(2)] [C(1),C(2)]

p D[p] D[p] D[p]

C(1) ∅ ∅ id y

C(2) id x id x id x

C(3) ∅ ∅ ∅

C(4) id y id y id y

C(5) ∅ ∅ ∅

r(x) ∅ id y id y

r(y) ∅ ∅ ∅

(35)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 3

Schritt 3

wir betrachten C(1)

[(fn x ⇒ x 1 ) ⊆ C (2) ⇒ C (1) ⊆ C (5)]

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 33 / 40

(36)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 3

W [C(4),C(2)] [r(x),C(2)] [C(1),C(2)] [C(5),C(2)]

p D[p] D[p] D[p] D[p]

C(1) ∅ ∅ id y id y

C(2) id x id x id x id x

C(3) ∅ ∅ ∅ ∅

C(4) id y id y id y id y

C(5) ∅ ∅ ∅ id y

r(x) ∅ id y id y id y

r(y) ∅ ∅ ∅ ∅

(37)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 3

wir betrachten C(5) E(5) ist leer

wir betrachten C(2)

[ (fn x ⇒ x 1 ) ⊆ C (2) ⇒ C (4) ⊆ r (x ), (fn x ⇒ x 1 ) ⊆ C (2) ⇒ C (1) ⊆ C (5) (fn y ⇒ y 3 ) ⊆ C (2) ⇒ C (4) ⊆ r(y ), (fn y ⇒ y 3 ) ⊆ C (2) ⇒ C (3) ⊆ C (5)]

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 35 / 40

(38)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Schritt 3

W [C(4),C(2)] [r(x),C(2)] [C(1),C(2)] [C(5),C(2)] [C(2)] [ ]

p D[p] D[p] D[p] D[p] D[p] D[p]

C(1) ∅ ∅ idy idy idy idy

C(2) idx idx idx idx idx idx

C(3) ∅ ∅ ∅ ∅ ∅ ∅

C(4) idy idy idy idy idy idy

C(5) ∅ ∅ ∅ idy idy idy

r(x) ∅ idy idy idy idy idy

r(y) ∅ ∅ ∅ ∅ ∅ ∅

(39)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Beispiel - Ende

id y

r (x) r (y)

id x

C(2) id y

C (1) C(3)

id y

C (4)

id y

C (5) id x ⊆ C(2)

id x ⊆ C(2)

id y ⊆ C(2)

id y ⊆ C(2)

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 37 / 40

(40)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Korrektheit des Algorithmus

terminiert der Algorithmus?

berechnet er wirklich die kleinste Lösung?

( ˆ C , ρ) = ˆ u{( ˆ C , ρ ˆ ) | ( ˆ C , ρ ˆ ) | = c C [[e ]]}

kleinste Belegung wird erweitert ⇒ kleinste Lösung

(41)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Zusammenfassung

Wir haben gezeigt: Der Algorithmus berechnet die kleinste Lösung ( ˆ C , ρ) ˆ aus C [[e 0 ]]

( ˆ C , ρ) ˆ | = c C [[e 0 ]]

Die Bedingung die der Algorithmus ausgibt sind auch eine Lösung der Syntax orientierten Analyse

( ˆ C , ρ) ˆ | = s e

Die Syntax orientierte Lösung ist auch eine Lösung der abstrakten Analyse

( ˆ C , ρ) ˆ | = e ∗

Bernhard Hering Kontrollflussanalyse 2 24.Juni.2009 39 / 40

(42)

Kontrollflussanalyse 0-CFA Verfahren

Beispiel Syntax orientierte Analyse

Spezifikation Anwendung auf Beispiel Korrektheit der Analyse Algorithmus zum Sammeln der Bedingungen Spezifikation Beispiel Korrektheit der Analyse Algorithmus zum Lösen der Bedingungen

Algorithmus Beispiel Korrektheit des Algorithmus

Quellen & Literatur

Noch Fragen?

Referenzen

ÄHNLICHE DOKUMENTE

Figure 1 illustrates that the Volume Home Block has a pointer to the first sector of the File Headers, as well as to the first sector of the Master File Directory.. Each Directory

In order to get out of the self refresh mode, the display controller inputs the shift clock XSCL to the SED1580 for four or more horizontal display periods with the timing of the

Page direction address control is performed when the display RAM is accessed by the MPU and when contents of the display data RAM are read for the liquid crystal display.. When the

The voltage converter, consisting of a boost control cir- cuit and a voltage converter circuit, receives clocks from the clock generator circuit and boosts the input power voltage (V

◊ When the CK counter counts 8 of shift clock input (CK input) (reads the input 8-bit serial data), the serial data taken in the command/data register is output to the display

This is an oscillator having a complete built-in type CR, and its output is used as the display timing signal source or as the clock for voltage booster circuit of the LCD

The line count register is incremented by the CL clock once for every display line, thus generating a pointer to the current line of data in display data RAM being transferred to

*This problem is unlikely to occur in Building-Block alrays at clock rates below 500 kHz. dissipated by the array is calculated by determining the worst-case combination