¨Ubungsblatt 4

Werbung
Termersetzungsysteme
SS 2014
Übungsblatt 4
Abgabe der Lösungen: 14.05.2014
Aufgabe 1
Substitution im Kontext
(3 Punkte)
Geben Sie eine formale Definition des Operators t[s]p , der den Unterterm von t an der Position
p ∈ Pos(t) durch s ersetzt, an. Beweisen Sie dann die Gleichung t[t |p ]p = t.
Aufgabe 2
Eigenschaften vom TES-Reduktion
(5 Punkte)
Beweisen Sie, dass die Relation →R die folgenden Eigenschaften hat: falls s →R t, dann gilt
1. C[s] →R C[t] für jeden (Ein-Lücken-)Kontext C;
2. r[s/x] →∗R r[t/x] für jeden Term r;
3. sσ →R tσ für jede Substitution σ.
Aufgabe 3
Listen mit TRS
(8 Punkte)
Betrachten Sie die Signatur Σ = {o : 0 → 1, s : 1 → 1, nil : 0 → 1, cons : 2 → 1}. Dabei haben
die Signatursymbole die folgende intuitive Bedeutung.
• o repräsentiert die natürliche Zahl 0 ;
• s(x) repräsentiert den Nachfolger der natürlichen Zahn x;
• nil repräsentiert die leere Liste;
• cons(x, l) hängt das Element x vorn an die Liste l.
Somit kann man beispielsweise die Zahl 3 als s(s(s(o))) repräsentieren und die liste [1, 2] als
cons(s(o), cons(s(s(o)), nil)). Beachten Sie, dass man auch Terme hinschreiben kann, die keine
sinnvolle Bedeutung haben, wie z.B. cons(s(o), o).
Geben Sie TRS über passenden Erweiterungen von Σ an, die folgende Operationen über Listen
und natürlichen Zahlen definieren:
• binäre Multiplikation von natürlichen Zahlen;
• binäre Exponentiation;
• binäre Listenkonkatenation;
• Konkatenation einer Liste von Listen;
• Summe einer Liste von natürlichen Zahlen.
GLoLoP, SS 2014
Musterbeispiel: um die binäre Summe von natürlichen Zahlen zu definieren, muss man Σ mit
einer Operation p : 2 → 1 erweitern und ein TES mit zwei Regeln p(x, o) → x und p(x, s(y)) →
s(p(x, y)) einführen.
Aufgabe 4
Reaktive Programmierung mit TRS
(4 Punkte)
Mann kann nicht-terminierende TES verwenden, um unendliche Folgen (Streams) zu definieren.
Dafür verwenden wir ein spezielles Funktionssymbol out : 2 → 1 und Regeln der Form
t → out(s, r),
wobei out ansonsten weder in t noch in s noch in r vorkommt. Die Regel
nat(x) → out(x, nat(s(x))).
definiert beispielsweise die Folge aller natürlichen Zahlen in dem Sinne, dass jede Reduktion, die
in nat(o) beginnt, die folgende Form hat:
nat(o) → o : nat(o) → o : s(o) : nat(o) → o : s(o) : s(s(o)) : nat(o) → · · · ,
wobei wir x : y statt out(x, y) schreiben.
Geben Sie ein TES an, das auf die gleiche Weise die Folge aller Fibonacci-Zahlen 1, 1, 2, 3, 5, 8, . . .
ausgibt (s. Übungsblatt 3, Aufgabe 3).
Bonusaufgabe
(2 Punkte)
Ergänzen Sie die Definitionen von Aufgabe Aufgabe 3 mit einem TRS, das ihren Lieblingssortieralgorithmus definiert.
2
Herunterladen