• Keine Ergebnisse gefunden

2 Reflexiv-transitive H¨ ulle

N/A
N/A
Protected

Academic year: 2022

Aktie "2 Reflexiv-transitive H¨ ulle"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Lehrstuhl f¨ ur Programmierparadigmen

Daniel Wasserrab

daniel.wasserrab@kit.edu

Theorembeweiserpraktikum – SS 2010

http://pp.info.uni-karlsruhe.de/lehre/SS2010/tba

Blatt 7: Induktion in Isar Besprechung: 25.05.2010

1 Rotation mal ungew¨ ohnlich

Wir definieren eine Funktion auf Listen, welche das erste Element an die letzte Stelle schiebt:

fun rot :: "’a list ’a list"

where "rot (x#y#zs) = y # rot(x#zs)"

| "rot xs = xs"

Die von Isabelle automatisch erstellte Rekursionsregel lautet rot.induct:

[[V

x y zs. P (x # zs) = P (x # y # zs); P []; Vv. P [v]]] = P a0 Damit beweisen Sie bitte folgende Aussagen mittels einesverst¨andlichen Isar-Beweises:

lemma "length (rot xs) = length xs"

oops

lemma "xs 6= [] = rot xs = tl xs @ [hd xs]"

oops

2 Reflexiv-transitive H¨ ulle

Wir definieren die reflexiv-transitive H¨ulle einer bin¨aren Pr¨adikatsrmittels eines induktiven Pr¨adikats:

inductive rtc :: "(’a ’a bool) ’a ’a bool" ("( *)" [1000] 1000) for r::"’a ’a bool"

where refl: "r* x x"

| step: "[[r x y; r* y z]] = r* x z"

Anstatt rtc r darf man also r* schreiben. Auch hier generiert Isabelle automatisch eine Indukti- onsregelrtc.induct:[[r* x1 x2; V

x. P x x; V

x y z. [[r x y; r* y z; P y z]] = P x z]]

= P x1 x2. Zeigen Sie jetzt, dassr*tats¨achlich transitiv ist:

lemma "[[r* x y; r* y z]] = r* x z"

oops

Außerdem beweisen Sie noch, dassr* idempotent (die reflexiv-transitive H¨ulle vonr* gleich r*) ist.

Dazu brauchen Sie folgende Aussage:ext: (V

x. ?f x = ?g x) = ?f = ?g lemma rtc idemp: "(r*)* = r*"

proof(rule ext)+

oops

Alle Beweise sollen nat¨urlich mittels Isar erstellt werden.

(2)

3 Kontextfreie Grammatiken f¨ ur Klammerausdr¨ ucke

Im folgenden soll eine Grammatik f¨ur Klammerausdr¨ucke (als Listen) formalisiert werden. Solche Grammatiken haben ¨ublicherweise folgende Darstellung:

S → ε | 0(0 S 0)0 | S S

Sie sollen nun diese Grammatik als induktives Pr¨adikat definieren. Dabei soll der folgende Datentyp die Klammern beschreiben, A eine ¨offnende, B eine schließende Klammer (die normalen Klammern sind in Isabelle funktional ¨uberladen):

datatype brack = A | B

Man kann auch noch auf eine andere Weise pr¨ufen, ob Klammerausdr¨ucke korrekt sind: durch Abz¨ahlen der ¨offnenden und schließenden Klammern. F¨ur jede ¨offnende Klammer inkrementiert man einen Z¨ahler, f¨ur jede schließende dekrementiert man ihn. Wenn der Z¨ahler 0 ist, darf er nicht weiter dekre- mentiert werden!

Definieren Sie ein Pr¨adikat zur Pr¨ufung von Klammerausdr¨ucken, basierend auf dieser Methode.

Hinweise:

• verwenden sie stattn + 1 Suc n

• wenn eine beliebige nat¨urliche Zahl von 0 abgezogen wird, ist das Resultat wieder 0

• wie muss der Z¨ahler beschaffen sein, wenn man auf eine schließende Klammer trifft?

Und nun beweisen Sie, dass jeder Parameter, der das oben definierte induktive Pr¨adikat erf¨ullt auch dieses Pr¨adikat erf¨ullt.

Theorembeweiserpraktikum – ¨Ubung 7 2

Referenzen

ÄHNLICHE DOKUMENTE

On economical construction of the transitive closure of an oriented graph.

Durchlaufe Graphen, indem wir, solange m¨ oglich, den vordersten Knoten v aus der Queue nehmen, ihn behandeln und die Liste seiner noch nicht behandelten Nachbarn in die Queue

Hinweis: Man verwende die Polardarstellung der komplexen Zahlen..5. Man bestimme die L¨ osungsmenge der folgenden

Erinnern Sie die Ausdr¨ ucke f¨ ur den zusammenh¨ angenden Teil der Zweipunkt- skorrelationsfunktion auf der entfalteten Skala Y 2 (r) f¨ ur. (a) die Wigner–Dyson Verteilung, (b)

• F¨ ur den restlichen Definitionsbereich (in dem der Term zwischen den Betragsstrichen < 0 ist) ersetzt Du die Betragsstriche ebenfalls durch Klammern, schreibst aber vor

[r]

Abgabe bis Do, 27.11., 12 Uhr Aufgabe 1 zur Bearbeitung in der ¨ Ubung Aufgaben 2-4 zur selbst¨ andigen Bearbeitung.

Ermitteln Sie daf¨ ur zun¨ achst die Anzahl der Klammerausdr¨ ucke, die ebenso viele ¨ offnende wie schließende Klammern verwenden.. Welcher An- teil dieser Ausdr¨ ucke ist