Symbolisches Rechnen Vorlesung Wintersemester

Werbung
Symbolisches Rechnen Vorlesung Wintersemester
2006, 2014
Johannes Waldmann, HTWK Leipzig
11. Dezember 2015
1
Einleitung
Symbolisches Rechnen: Definition
• Rechnen mit Funktionen.
(mit Ausdrücken, die Funktionen bezeichnen,
d.h. gebundene Variablen enthalten)
Bsp: expand(λx.(x + 1)2 ) = λx.(x2 + 2x + 1)
• im Gegensatz zum numerischen Rechnen (mit Zahlen)
wie in der Mathematik (leider) üblich: der Binder (λ) wird nicht notiert, die gebundenen Variablen sehen dadurch frei aus: expand((x+1)ˆ2);
Symbolisches Rechnen: Motivation
hat weitreichende Anwendungen:
• Lösen von (parametrisierten) Aufgabenklassen
(für numerisches Rechnen muß Parameter fixiert werden)
• exaktes Lösen von Aufgaben
(numer. R. mit Maschinenzahlen: nur Approximation)
• experimentelle, explorative, exakte Mathematik
1
ist nützlich im Studium, benutzt und vertieft:
• Mathematik (Analysis, Algebra)
• Algorithmen-Entwurf, -Analyse
• Prinzipien von Programmiersprachen
Überblick
• Grundlagen (6 Wochen)
– Term-Ersetzungs-Systeme (Differentiation, Vereinfachung)
– exaktes Rechnen mit (beliebig großen) Zahlen
• Vertiefung (6)
– Vektoren (Gitterbasen)
– Polynome, Gröbnerbasen
– Geometrische Konfigurationen und Beweise
• Ausblick (2): Musik-Notationen, Beweisüberprüfer, . . .
Literatur
• Wolfram Koepf: Computeralgebra, Springer, 2006. http://www.mathematik.
uni-kassel.de/˜koepf/CA/
• Hans-Gert Gräbe: Einführung in das Symbolische Rechnen, Gröbnerbasen und Anwendungen, Skripte, Universität Leipzig http://www.informatik.uni-leipzig.
de/˜graebe/skripte/
• Franz Baader and Tobias Nipkow: Term Rewriting and All That, Cambridge, 1998.
http://www21.in.tum.de/˜nipkow/TRaAT/
• Gerhard Nierhaus: Algorithmic Composition, Springer, 2009.
2
Software
• Maxima http://maxima.sourceforge.net/
Hinweis: benutze rlwrap maxima
• GHC http://www.haskell.org/ghc/
• Geogebra http://www.geogebra.org/
• Coq/Coqide http://coq.inria.fr/,
Isabelle/HOL http://isabelle.in.tum.de/
Beispiel: S.R. und Term-Ersetzung
Regeln für symbolisches Differenzieren (nach t):
D(t) -> 1
D(constant) -> 0
D(+(x,y)) -> +(D(x),D(y))
D(*(x,y)) -> +(*(y,D(x)),*(x,D(y)))
D(-(x,y)) -> -(D(x),D(y))
Robert Floyd 1967, zitiert in: Nachum Dershowitz: 33 Examples of Termination, http:
//citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.9447
• Korrektheit? Termination? Komplexität?
• Strategie (Auswahl von Regel und Position)?
• ausreichend? angemessen?
Beispiel: Termersetzung (cont.)
data E = Zero | One | T
| Plus E E | Times E E
deriving Show
e :: E
e = let b = Plus T One in Times b b
d :: E -> E
d e = case e of
Zero -> Zero ; One -> Zero ; T -> One
Plus x y -> Plus (d x) (d y)
Times x y ->
Plus (Times y (d x)) (Times x (d y))
3
Beispiel: Inverse Symbolic Calculator
http://oldweb.cecm.sfu.ca/projects/ISC/ISCmain.html
zur Bestimmung ganzzahliger Relationen (z.B. zwischen Potenzen einer numerisch
gegebenen Zahl)
sqrt(2+sqrt 3)
==>
1.9318516525781366
Roots of polynomials of degree less than or equal to 8.
1931851652578136 = -1+4*xˆ2-xˆ4
mit LLL-Algorithmus (Lenstra, Lenstra, and Lovasz, 1982), der einen kurzen Vektor in
geeignetem Gitter bestimmt.
Hausaufgaben KW 42
• zum Haskell-Programm zum Symb. Differenzieren:
– füge Syntax und Regel für Quotienten hinzu
– schlage Regeln zur Vereinfachung vor
• ISC
– verifziere diese Behauptung für
p
√
2+ 3
Mixed constants with 5 operations
1931851652578136 = 1/2/sin(Pi/12)
√
√
– bestimme ein Polynom mit Nullstelle 2 2 + 3 3
Übung KW 42
zu Aufgabenblatt Geometrie http://www.imn.htwk-leipzig.de/˜waldmann/
edu/ws14/sym/SR-1/Aufgaben.pdf
• Skizze zu Aufgabe 4 (kein Beweis), Begriff kollinear
• Beweis Aufgabe 7 (von Hand)
• Aufgabe 6 für die nähere Zukunft
Beispiele aus Einf. Symb. Rechn. http://www.imn.htwk-leipzig.de/˜waldmann/
edu/ws14/sym/SR-1/folien.pdf
4
• Kreisgleiter (Folie 13) herleiten und nachrechnen (maxima)
e : subst(r*(x+1),y, xˆ2+yˆ2-1);
s : solve(e, x);
subst (part (s,2), e);
ratsimp (%);
Beachte: Vorzeichenfehler auf Folie.
Symbolisches Differenzieren
• . . . von Quotienten:
data E = .. | Sub E E | Quotient E E
d e = case e of ...
Sub x y -> Sub (d x) (d y)
Quotient x y -> Quotient ( Sub ( Times (d x ) (y) ) (Times (
• Vereinfachen zum Beispiel so (selbst vervollständigen)
simp :: E -> E
simp e = case e of
Plus x y -> case (simp x, simp y) of
(sx, Zero) -> sx
(Zero, sy) -> sy
(sx, sy) -> Plus sx sy
Times x y -> case (simp x, simp y) of
(One, sy) -> sy
(sx, One) -> sx
(sx,sy) -> Times sx sy
Quotient x y -> case (simp x, simp y) of
(sx,sy) -> Quotient sx sy
_ -> e
2
Terme, Ersetzungs-Systeme (Grundl.)
Termbäume, Positionen
5
•
•
•
•
•
Signatur Σ: Menge von Funktionssymbolen mit Stelligkeit, Bsp. {(s, 1), (z, 0), (p, 2)},
Term(Σ) ist die kleinste Menge M mit . . .
Pos(t): Menge der Positionen in t ∈ Term(Σ): . . .
t(p) Symbol an Position p in t
t |p Teilterm an Position p in t
Beispiele:
• Term t = p(z, s(s(z))),
• Positionen Pos(t) = {, 1, 2, 21, 211},
• Symbol t(2) = s,
Teilterm t|2 = s(s(z)),
Baum-Bereiche
Def: Menge P ⊆ N∗ heißt Baum-Bereich (tree domain), wenn
(. . . es einen Term t gibt, so daß P = Pos(t) — das soll aber ohne Benutzung des
Term-Begriffs definiert werden)
• ∈P
• P abgeschlossen unter . . .
Hinweise: definiere und benutze Relationen <u (up) und <l (left).
Def: ein Term t über Signatur Σ ist Abbildung von einem Baumbereich P nach Σ
Einsetzen an Position
• t[p := s] in t an Position p den Term s einsetzen
Übung: definiere das exakt:
• für Term als Zeichenketten
• für Term als Abbildung von Baumbereich
6
Variablen, Substitutionen
• Term(Σ, V ): Menge der Terme mit Symbolen aus Σ und Variablen aus V .
• Vereinbarung: Variablen am Ende des Alphabets (x, y, . . .), Funktionssymbole am
Anfang (f, g, a, b, . . .)
• Menge der in einem Term t vorkommende Variablen: Var(t)
• Substitution σ ist Abbildung V → Term(Σ, W )
• eine Substitution σ angewendet auf einen Term t erzeugt Term tσ
Beispiel t = f (x), Var(t) = {x}, σ : x 7→ p(0, 0), tσ = f (p(0, 0)).
Regeln
• Regel (l, r), Schreibweise (l → r), mit l, r ∈ Term(Σ, V )
• Regel (l → r) an Position p in t ∈ Term(Σ) anwenden, um s zu erhalten, Schreibweise t →(l→r),p s
∃σ : V → Term(Σ) : t|p = lσ ∧ t[p := rσ] = s
Beispiel: Regel (l, r) = (f (x), g(x, x)), Term t = h(1, f (f (2))).
Position p = [2] ∈ Pos(t), Teilterm t|p = f (f (2)),
Substitution σ : x 7→ f (2) mit t|p = lσ,
auf r anwenden: rσ = g(f (2), f (2)),
in t einsetzen: s = t[p := rσ] = h(1, rσ) = h(1, g(f (2), f (2))).
Regelsysteme
• R eine Menge von Regeln, definiert Relation (einmalige Anwendung irgendeiner
Regel irgendwo):
→R := {(t, s) | ∃(l, r) ∈ R, p ∈ Pos(t) : t →(l,r),p s}
• transitive Hülle →+
R (mehrmalige Regelanwendung)
liefert nichtdeterministisches Berechnungsmodell (vgl. Grammatiken/Wortersetzungssysteme)
Fragen:
• jede Rechnung endet? (Termination) nach welcher Zeit?
• jede Rechnung endet mit genau einem Resultat?
dabei: Resultat = Term, auf den keine Regel anwendbar ist = Normalform.
7
Aufgaben
Signatur (mit Stelligkeiten): Σ = {e0 , s1 , p2 , m2 , h2 }
• Rp = {p(e, y) → y, p(s(x), y) → s(p(x, y))}
• Rm = Rp ∪ {m(e, y) → e, m(s(x), y) → p(m(x, y), y)}
• Rh = Rm ∪ {h(x, e) → s(e), h(x, s(y)) → m(h(x, y), x)}
Fragen (leicht):
• Menge der Rh -Normalformen?
• Normalformen (Existenz? Eindeutigkeit?) von: p(s(p(s(e), s(e))), s(e)), m(s(s(e)), s(s(e))),
h(s(s(e)), s(s(s(e)))).
(schwerer) Σ = {a2 , d0 }, R = {a(a(d, x), y) → a(x, a(x, y))}: Normalformen? Ableitungslängen?
Termersetzung/Anwendungen
Termersetzung ist
• Turing-vollständiges Berechnungsmodell
• Grundlage für funktionale Programmierung
• Grundlage für Symbolisches Rechnen
• (Grundlage für XML-Transformationen mit XSLT, . . . )
Für Anwendungen wichtig sind
• Termination (keine unendlich langen Rechnungen)
• Konfluenz (eindeutige Ergebnisse von Rechnungen)
• Ableitungskomplexität (Länge von Rechnungen als Funktion der Startgröße)
Term-Ersetzung und Computeralgebra
Regeln (Term-Ersetzungs-System) für das Differenzieren:
Dx (x) = 1, wenn x ∈
/ A : Dx (A) = 0
Dx (A + B) = Dx (A) + Dx (B)
Dx (A · B) = . . . , Dx (A/B) = . . .
Dx (log x) = 1/x, Dx (sin x) = cos x, . . .
8
Dazu braucht man aber noch Vereinfachungsregeln.
Wie drückt man die Kettenregel Dx (f (g(x)) = . . . aus?
Hier sind f und g Variablen, aber zweiter Ordnung (bezeichnen Funktionen).
Regeln für das Integrieren?
Existenz und Eindeutigkeit von Normalformen?
Termination und Normalisierung
Für eine zweistellige Relation ρ auf M
(zum Beispiel eine Ersetzungsrelation →R auf Term(Σ))
• ρ ist terminierend (stark normalisierend), falls es keine unendliche lange ρ-Folge
gibt
d. h. ρ(x0 , x1 ), ρ(x1 , x2 ), ρ(x2 , x3 ), . . .
• ρ is schwach normalisierend, falls zu jedem x0 ∈ M eine ρ-Folge zu einer ρNormalform führt
Beachte: es gibt ρ, die schwach, aber nicht stark normalisieren.
Normalformen
Für eine zweistellige Relation ρ auf M
(zum Beispiel eine Ersetzungsrelation →R auf Term(Σ))
heißt x ∈ M eine ρ-Normalform, falls ¬∃y ∈ M : ρ(x, y).
Beachte: für passende ρ und x kann vorkommen:
• p hat mehrere Normalformen
• p hat keine Normalform
Übung Termersetzung
• Der Ellipse 9 x2 + 16 y 2 = 144 soll ein flächenmäßig möglichst großes Rechteck
einbeschrieben werden, dessen Seiten parallel zu den Koordinatenachsen liegen. Bestimmen Sie die Abmessungen dieses Rechtecks.
Lösung (Vorschlag):
9
f : subst
( [solve(9*xˆ2+16*yˆ2=144,y) [2]], x*y );
plot2d (f, [x, -4, 4]);
solve ( diff(f,x),x );
• Definitionen Termersetzung,
Definiere t0 = t[p := s] mittels Baumbereichen:
– Variante A: Funktion als Menge von geordneten Paaren
t0 = t \ {(p · q, z) | q ∈ N∗ } ∪ {(p · q, z) | (q, z) ∈ s}
– Variante B: Funktion als Berechnungsvorschrift
t0 (q) = if p ≤up q then s(p \ q) else t(q)
mit (partieller) Funktion p \ q (Linksdivision): wenn p · r = q, dann r, sonst ⊥,
Bsp: 12 \ 1231 = 31
• Struktur von Termen ansehen
t : sin (2 * acos (x));
:lisp $t
– Operationen op, args,
– interne Darstellung sowie Wurzelsymbol (op) von 3*x/y, a+b-c, usw.
– wie kann man Terme zusammenbauen?
• Substitutionen
– subst(f(y),x,g(x,x))
– vergleiche
subst([y=g(x),x=4],f(x,y));
subst([x=4,y=g(x)],f(x,y));
load(to_poly_solve);
subst_parallel([y=g(x),x=4],f(x,y));
• Aufgaben autotool
– eine Ableitung finden (Aufg. wurde in Übung gestellt) https://autotool.
imn.htwk-leipzig.de/cgi-bin/Trial.cgi?problem=2162
10
– eine möglichst lange Ableitung finden (neue Aufg., für das System a(a(d, x), y) →
a(x, a(x, y))) https://autotool.imn.htwk-leipzig.de/cgi-bin/
Trial.cgi?problem=2163
• Umformungsregeln in Maxima (nicht in Übung, selbst ausprobieren)
matchdeclare(x,true,y,true);
tellsimp (m(S(x),y),p(m(x,y),y));
/* und weitere Regeln lt. Skript */
m(S(S(Z)),S(S(Z)));
Maxima-Trainingsaufgaben
Dreicksgeometrie, Standardbezeichnungen c = AB, usw.
• bestimme die Höhe hc (auf der Seite c). Ansatz: hc teilt c in p + q:
solve([pˆ2+hˆ2=bˆ2,qˆ2+hˆ2=aˆ2,p+q=c],[p,q,h]);
• bestimme daraus die Fläche des Dreiecks als Fkt. von a, b, c
• bestimme daraus den Inkreisradius r.
• berechne den Umkreisradius R.
Ansatz: der Umkreismittelpunkt O(c/2, y) hat von A(0, 0) und C(p, hc ) den gleichen Abstand R.
Gleichungssystem für R, y unter Verwendung (d.h. Substitution) von hc , p.
Oder: O liegt auf der Mittelsenkrechten von AC.
• beweise R ≥ 2r. Wann gilt Gleichheit?
Beweise explizit, daß Multiplikation von 3 × 3-Matrizen assoziativ ist.
• Matrix-Konstruktion mit genmatrix (lambda([i,j],i*j), 3, 3)
• Matrix-Multiplikation mit . (nicht: *)
• Konstruktion neuer Namen mit concat(’x,1,3)
11
3
Gleichungsdefinierte Strukturen
Gleichungssysteme (Syntax)
Def: ein Gleichungssystem E über einer Signatur Σ ist eine Menge von Paaren (l, r) ∈
Term(Σ, V )2 , geschrieben l ≈ r
∗
Def: die Relation ≈E ist (→E ∪ →−
E) .
5
3
Bsp: E1 = {f (a) ≈ a, f (a) ≈ a}. Zeige f (a) ≈E1 a.
Bsp: E2 = {f (f (x)) ≈ g(x)}. Zeige f (g(x)) ≈E2 g(f (x)).
Bsp: Die Relation ≈Di ist entscheidbar für
• D1 = {f (f (x, y), z) ≈ f (x, f (y, z))}
• D2 = {f (f (x, y), z) ≈ f (x, f (y, z)), f (x, y) ≈ f (y, x)}
≈C ist nicht entscheidbar für C = {A(A(K, x), y) ≈ x, A(A(A(S, x), y), z) ≈
A(A(x, z), A(y, z))}
Algebren (Semantik)
Def. eine Algebra A zur Signatur Σ ist: eine Menge (domain) DA und für jedes kstellige c aus Σ eine Funktion [c]A : Dk → D.
Bsp. Σ = {P/2, S/1, Z/0}, D = N, [P ](x, y) = x + y, [S](x) = x + 1, [Z] = 0.
Def: Wert eines Terms t ∈ Term(Σ, V ) in A
unter Belegung α : Var(t) → D, Notation [t, α]
Bsp. [P (S(Z), a), {(a, 5)}] = 6
beachte verschiedene Wortbedeutungen von Algebra“:
”
• “high school algebra”: Umformen von Ausdrücken.
• lineare, höhere, usw. Algebra: untersucht Polynome usw.
• abstrakte Algebra: allgemein Mengen mit Operationen.
Modelle
Def. eine Gleichung l ≈ r ist gültig in einer Σ-Algebra A = (DA , [·]A ), geschrieben
A |= l ≈ r, falls für jede Belegung α : Var(l) ∪ Var(r) 7→ DA gilt: [l, α] = [r, α]
Def. eine Σ-Algebra (D, [·]) heißt Modell
für ein Gls. E über Σ, wenn ∀(l ≈ r) ∈ E : A |= l ≈ r.
Bsp: [P ](x, y) = x + y, [S](x) = x + 1, [Z] = 0 ist Modell für E = {P (Z, y) ≈
y, P (S(x), y) ≈ S(P (x, y))}.
Übung: gibt es andere Modelle dafür?
12
Syntaktische u. semantische Äq. von Termen
Bsp. E = {P (Z, y) ≈ y, P (S(x), y) ≈ S(P (x, y))}.
• syntaktische Äquivalenz: ≈E
• semantische Äquivalenz: E |= s ≈ t
– Def. E |= s ≈ t: für jedes Modell A von E gilt A |= s ≈ t.
– Bsp: E |= P (S(S(Z)), y) ≈ S(S(y)).
– Übung: gilt E |= P (x, y) ≈ P (y, x)?
Satz (Birkhoff): s ≈E t ⇐⇒ E |= s ≈ t.
Gleichungstheoreme und induktive Th.
Bsp. E = {P (Z, y) ≈ y, P (S(x), y) ≈ S(P (x, y))}.
Gilt E |= P (x, y) ≈ P (y, x)?
Nein. Betrachte Modell A für E über N: [Z] = 0,
[S](x) = if 2|x then 2 + x else 1
[P ](x, y) = if 2|x then x + y else 1
A 6|= P (x, y) ≈ P (y, x), betrachte α = {(x, 2), (y, 1)}.
Nach Satz von Birkhoff folgt P (x, y) 6≈E P (y, x).
Beachte: ¬∃t ∈ Term(Σ, ∅) : [t]A = 1.
Für alle s, t ∈ Term(Σ, ∅) gilt P (s, t) ≈E P (t, s).
Sprechweise: P (x, y) ≈ P (y, x) ist ein induktives Theorem in E (aber kein GleichungsTheorem)
Aufgaben
• Für E = {aba(x) ≈ x}: gilt abbbaa(x) ≈E bba(x)?
• F = {f (x, f (y, z)) ≈ f (f (x, y), z), f (e, x) ≈ x, f (i(x), x) ≈ e}. Zeige f (x, e) ≈F
x.
• G = {f (x, f (y, z)) ≈ f (f (x, y), z), f (f (x, y), x) ≈ x}. Zeige f (x, x) ≈G x und
f (f (x, y), z) ≈G f (x, z)
13
• H = {f (x, f (y, z)) ≈ f (f (x, y), z), f (e, x) ≈ x, f (x, i(x)) ≈ e}. Zeige f (x, e) 6≈H
x.
Quellen: http://www.cs.vu.nl/˜tcs/trs/, Franz Baader und Tobias Nipkow: Term Rewriting and All That, http://www21.in.tum.de/˜nipkow/TRaAT/
Autotoolisierung dieser Aufgaben? (zwei Fälle)
4
Termination
Motivation
gibt es unendliche Ableitungen in den Systemen
•
•
•
•
ba → ab, ba → aab, 100 → 00110
A(A(D, x), y) → A(x, A(x, y))
Regeln zum symbolischen Differenzieren
Regeln zum Vereinfachen arithmetischer Ausdrücke usw.
vgl: warum und wie wird iterierte Regelanwendung (tellsimp,tellsimpafter) in
Maxima verhindert?
Anwendung (später): Vervollständigungs-Algorithmus
• zum Entscheiden der syntaktischen Kongruenz ≈E
• zum E. des Polynom-Ideal-Problems: Q ∈ hP1 , P2 , . . .i
Quellen
• Zohar Manna and Steven Ness: On the termination of Markov algorithms, 1970.
Dallas Lankford: On Proving term rewriting systems are Noetherian, 1979.
siehe http://perso.ens-lyon.fr/pierre.lescanne/not_accessible.html#
termination
• Nachum Dershowitz: 33 Examples of Termination, 1995. http://www.math.
tau.ac.il/˜nachumd/papers/printemp-print.pdf
TeReSe (Lite), VU Amsterdam, 2008. http://www.cs.vu.nl/˜tcs/trs/ (Lect.
5, 6)
14
Monotone Algebren, Interpretationen
Beispiel:
•
•
•
•
Regel ba → aab
Ableitung bba → baab → aabab → aaaabb
Interpretation in N: [a](x) = x + 1, [b](x) = 3x, [] = 0
[baa] = 9 > [baab] = 6 > [aabab] = . . . > [aaaabb] = . . .
Def: (D, >, [·]) ist wohlfundierte monotone Algebra
• keine unendlichen absteigenden Ketten in (D, >)
• Monotonie: ∀c ∈ Σ, x ∈ D, y ∈ D : x > y ⇒ [c](x) > [c](y)
Def: Algebra ist kompatibel mit R:
• Kompatibilität: ∀(l, r) ∈ R, x ∈ D : [l](x) > [r](x)
Satz: →R terminiert ⇐⇒ ∃ wfmA, die mit R kompatibel ist.
Beispiel wfmA
Signatur Σ = {P/2, S/1, Z/0}.
Regelmenge R = {P (Z, y) → y, P (S(x), y) → S(P (x, y))
verschiedene Σ-Algebren über N, überprüfe Eigenschaften.
Welche liefert einen Terminationsbeweis für R?
• [P ](x, y) = x + y, [S](x) = x + 1, [Z] = 0
• [P ](x, y) = 2x, [S](x) = x + 1, [Z] = 1
• [P ](x, y) = 2x + y + 1, [S](x) = x + 1, [Z] = 0
Aufgabe: finde kompatible wfmA für
R ∪ {M (Z, y) → Z, M (S(x), y) → P (M (x, y), y)}
Aufgabe: . . . für A(A(D, x), y) → A(x, A(x, y))
Merke: kompatibel: links > rechts, Modell: links = rechts,
15
Systematik wfmA
Beispiele benutzten lineare Funkt. über N. Erweiterungen:
• Polynome über N
• lineare Funktionen (Matrizen) über Nd
• . . . über anderen Halbringen, wie ({−∞} ∪ N, max, +)
für jedes solche Klasse von Algebren möchte man lösen:
das Verifikations-Problem:
• Monotonie, Kompatibilität mit R
das Synthese-Problem:
• gegeben R, gesucht R-kompatible wfmA
(z.B. Lösen des Constraint-Systems für Koeffizienten)
siehe http://www.termination-portal.org/
Aufgaben
(evtl. autotool) bestimme wfmAs für
• Peano-Multiplikation (Variante A: ohne Additionsregeln, B: mit)
• symbolisches Differenzieren
• {p ∧ (q1 ∨ q2 ) → (p ∧ q1 ) ∨ (p ∧ q2 ), (p1 ∨ p2 ) ∧ q → (p1 ∧ q) ∨ (p2 ∧ q)}.
beweise:
• das Verifikationsproblem für lineare Interpretationen (über N, über Nd ) ist entscheidbar
• das Syntheseproblem für lineare Interpretationen mit Anstieg 1 (d.h. [f ](x1 , . . . , xk ) =
x1 + . . . + xk + cf ) ist entscheidbar.
5
Konfluenz und Vervollständigung
Motivation
gesucht ist Entscheidungsverfahren für das Wortproblem:
• Eingabe: E über Σ, s, t ∈ Term(Σ, V )
16
• Frage: s ≈E t
Plan: Vergleich der →E -Normalformen von s, t. Beispiel: E = {(P (Z, y), y), (P (S(x), y), S(P (x, y))},
s = P (S(S(Z)), x), t = S(P (P (Z, S(Z)), x)), Probleme: 1. Existenz und 2. Eindeutigkeit der Nf. Bsp: E = {(aba, )}, s = abbbaa, t = bba
Motivation (II)
gesucht ist Entscheidungsverfahren für s ≈E t
Plan: Vergleich der →E -Normalformen von s, t.
Probleme: 1. Existenz und 2. Eindeutigkeit der Nf.
Lösung:
• (Ziel): 1. Termination und 2. Konfluenz
• (Verfahren): Vervollständigung.
Bsp: E = aba ≈ , abbbaa ≈E bba? Orientiere aba → ,
nicht konfluent wegen ba ← ababa → ab,
neue Regel ba → ab,
nicht konfluent wegen . . . , neue Regel . . . ,
konfluent? terminierend? NFs von s, t?
Konfluenz
Eine zweistellige Relation ρ heißt konfluent, wenn
∀x, y1 , y2 : ρ∗ (x, y1 ) ∧ ρ∗ (x, y2 ) ⇒ ∃z : ρ∗ (y1 , z) ∧ ρ∗ (y2 , z)
(Bild ist einfacher zu merken)
• Satz: wenn ρ auf M konfluent ist, dann besitzt jedes x ∈ M höchstens eine ρNormalform.
• Beachte: es wird nicht behauptet, daß x überhaupt eine Normalform besitzt.
Falls ρ jedoch terminiert, dann läßt sich Konfluenz charakterisieren und entscheiden
durch einen Hilfsbegriff (lokale Konfluenz, später)
17
Lokale Konfluenz
• Eine zweistellige Relation ρ heißt lokal konfluent, wenn
∀x, y1 , y2 : ρ(x, y1 ) ∧ ρ(x, y2 ) ⇒ ∃z : ρ∗ (y1 , z) ∧ ρ∗ (y2 , z)
• Beachte: es gibt Relationen ρ, die lokal konfluent sind, aber nicht konfluent.
• Satz: wenn ρ terminiert und lokal konfluent ist, dann ist ρ konfluent.
lokale Konfluenz erkennt man durch Betrachtung von Überlappungen von linken Regelseiten.
diese (Teilterme der) linke Seiten enthalten Variablen, deswegen muß man unifizieren.
Unifikation—Begriffe
• Substitution: partielle Abbildung σ : V → Term(Σ, V ),
so daß kein v ∈ dom σ in img σ vorkommt.
• Substitution σ auf Term t anwenden: tσ
(definiert durch Induktion über t)
• Produkt von Substitutionen: so definiert, daß t(σ1 ◦ σ2 ) = (tσ1 )σ2
(wie geht das genau?)
• die so definierten Substitutionen sind idempotent: σ ◦ σ = σ.
Unifikation—Definition
Unifikationsproblem (unvollst.)
• Eingabe: Terme t1 , t2 ∈ Term(Σ, V )
• Ausgabe: eine Substitution σ = mgu(t1 , t2 ) mit:
– σ unifiziert t1 , t2 : t1 σ = t2 σ.
Beispiele: bestimme jeweils Menge der Unifikatoren von:
• f (X), f (a)
18
• X, f (Y )
• f (X), g(Y )
• X, f (X)
Für den Fall mehrerer Unifikatoren möchte man bestimmte auswählen. (⇒ vollst. Def.
nächste Folie)
Unifikation—Definition (vollst.)
• Eingabe: Terme t1 , t2 ∈ Term(Σ, V )
• Ausgabe: eine Substitution σ = mgu(t1 , t2 ) mit:
– σ unifiziert t1 , t2 : t1 σ = t2 σ.
– σ ist minimal bzgl. ≤ unter allen Unifikatoren von t1 , t2
benutzt Prä-Ordnung auf Substitutionen:
σ1 ≤ σ2 ⇐⇒ ∃τ : σ1 ◦ τ = σ2
Satz: jedes Unifikationsproblem ist entweder gar nicht oder bis auf Umbenennung eindeutig lösbar
Bem: Prä-Ordung: transitiv und symmetrisch. (Beweis?)
Warum ist ≤ keine Halbordnung?
Unifikation—Algorithmus
mgu(s, t) nach Fallunterscheidung
• s ist Variable: . . .
• t ist Variable: symmetrisch
• s = f (s1 , s2 ) und t = g(t1 , t2 ): . . .
Bemerkungen:
• korrekt, übersichtlich, aber nicht effizient,
• es gibt Unif.-Probl. mit exponentiell großer Lösung (Ü)
• mit komprimierter Darstellung: Linearzeit.
autotool-Quelltexte Substitution und Unifikation: http://autolat.imn.htwk-leipzig.
de/gitweb/?p=tool;a=tree;f=collection/src/Prolog;hb=for-ghc-7.8
19
Kritische Paare
Für ein Termersetzungssystem R über Σ: falls
• (l1 → r1 ) und (l2 → r2 ) sind Regeln in R ohne gemeinsame Variable (ggf. vorher
umbenennen!)
• es gibt p ∈ Pos(l1 ) so daß l1 [p] und l2 unifizierbar sind
d. h., es existiert mgu σ mit l1 [p]σ = l2 σ
• falls (l1 → r1 ) = (l2 → r2 ) (vor Umbenennung), dann p 6= • dann heißt (r1 σ, (l1 σ)[p := r2 σ]) kritisches Paar von R.
Ein kritisches Paar (s, t) von R heißt zusammenführbar, falls ∃u : s →∗R u ∧ t →∗R u.
Satz: ein Termersetzungssystem ist genau dann lokal konfluent, wenn alle kritische
Paare zusammenführbar sind.
Orthogonale Systeme
• ein TES R über Σ heißt nichtüberlappend, wenn R keine kritischen Paare besitzt.
• ein TES R heißt linkslinear, wenn in keiner linken Regelseite eine Variable mehrfach
vorkommt.
• ein TES R heißt orthogonal, falls es linkslinear und nichtüberlappend ist.
Satz: jedes orthogonale System ist konfluent.
Funktionale Programmierung ≈ System R ist orthogonal und . . . (nächste Folie)
Konstruktor-Systeme
• Für TES R über Σ: ein Symbol f ∈ Σ heißt definiert, wenn es als Wurzel einer
linken Regelseite in R vorkommt.
• Alle anderen Symbole heißten Konstruktoren.
• R heißt Konstruktor-System, falls in jeder linken Seite nur ein definiertes Symbol
vorkommt (und zwar in der Wurzel).
Beispiele: {P (Z, y) → . . . , P (S(x), y) → . . . , M (Z, y) → . . . , M (S(x), y) → . . . }
ist Konstruktor-System, definierte Symbole sind {P, M }, Konstruktoren sind {S, Z}
aber {A(A(D, x), y) → A(x, A(x, y))} nicht.
20
Vervollständigung (basic)
. . . ist Algorithmus mit dieser Spezifikation
• Eingabe: Gleichungssystem E
• Ausgabe: Ersetzungssystem R mit Eigenschaften:
– R ist konvergent (:= terminierend und konfluent)
– ≈R = ≈E
Implementierung: zusätzliche Eingabe: eine wfmA A
• ordne Paare aus E bzgl. >A , Resultat R0
• wiederhole bis Ri+1 = Ri :
Ri+1 := Ri ∪ die folgenden Paare: ∀(s, t) ∈ CP(Ri ):
– wähle s0 ∈ Nf Ri (s), t0 ∈ Nf Ri (t)
– falls s0 =
6 t0 , ordne (s0 , t0 ) bzgl. >A .
Korrektheit? Termination? beachte: 3 Fehlermöglichkeiten
Vervollständigung (improved)
bei einfacher Vervollständigung:
• jedes neue kritische Paar muß sofort orientiert werden.
• manche sind evtl. nicht orientierbar
alternativer Ansatz:
• das Orientieren aufschieben,
• bis neue Regeln vorliegen, die zur Umformung des Paares benutzt werden können
• so daß das umgeformte Paar orientierbar ist
(nichtdeterministischer) Vervollständigungsalgorithmus wird formuliert mittels Inferenzsystem
21
Inferenzsystem für Vervollständigung
(Leo Bachmair 1991, zitiert in Baader/Nipkow)
• Grundbereich: Paare (E, R) , Start: (E0 , ∅), Ziel: (∅, Rn )
• Invariante: →Rk ⊆>A und ≈E0 =≈Ek ∪Rk
S
• Fairness: CP(Rn ) ⊆ k Ek
Regeln (weiter evtl. in Übung)
•
•
•
•
deduce: (s ←R u →R t) ⇒ (E, R) ` (E ∪ {s ≈ t}, R)
orient: (s >A t) ⇒ (E ∪ {s ≈ t}, R) ` (E, R ∪ {s → t})
delete: (E ∪ {s ≈ s}, R) ` (E, R)
simplify: (s →R u) ⇒ (E ∪ {s ≈ t}, R) ` (E ∪ {u ≈ t}, R).
Korrektheit?
Warum ist einfache Vervollst. ein Spezialfall?
Vervollständigung heute
• Anwendung in Theorembeweisern
z.B. http://www.waldmeister.org/
• Competition:
http://www.cs.miami.edu/˜tptp/CASC/
• Forschung z.B. an U Innsbruck
http://cl-informatik.uibk.ac.at/mkbtt/
wähle/ändere Terminationsordnung während der Rechnung
• Veranschaulichung (GUI) http://cl-informatik.uibk.ac.at/software/
kbcv/
Werbung: ISR 2015
8th International School on Rewriting ISR 2015
August 10-14, Leipzig, Germany
http://www.imn.htwk-leipzig.de/ISR2015/
• basic course (Prof. Aart Middeldorp, UIBK)
22
• advanced courses (verschiedene)
kann als Wahlfach belegt werden
wir suche Studenten, die bei Vorbereitung und Durchführung mithelfen
lokale Organisation: A. Geser, J. Waldmann.
6
Ideale
Teilbarkeit, Ringe, Ideale
Wiederholung: für ganze Zahlen:
• Def. (a | c) := (∃b : a · b = c).
Bsp: 2 | 12, −5 | 15
• Übung: was stimmt: 3 | 0, 3 | 3, 0 | 3, 0 | 0
• Def. gcd (größter gemeinsamer Teiler)
Merke: größter“ ist irreführend, es geht nicht um <.
”
Zur Definition wird nur | benutzt.
• Bestimmung des gcd durch Algorithmus von Euklid
Beachte: jetzt brauchen wir >.
Diese Ideen (Begriffe und Algorithmen) sollen verallgemeinert werden (auf Polynome,
Vektoren).
Algorithmus von Euklid
input: a >= 1, b >= 1;
// a = A, b = B
while (a /= b) {
// Invariante: gcd(a,b) = gcd(A,B)
// Variante: max (a,b)
if a > b then a := a - b else b := b - a
}
output: a
// a = gcd(A,B)
Beweis:
• Termination: die Variante ist ∈ N und streng fallend.
• Korrektheit: die Invarianz folgt aus gcd(a, a) = a, gcd(a − b, b) = gcd(a, b).
• Beweise dafür: mit gcd-Definition.
23
Erweiterter Algorithmus von Euklid
Satz: g = gcd(a, b) ⇒ ∃p, q : ap + bq = g
Bsp: 3 = gcd(15, 21), p = . . . , q = . . . .
Beweis: konstruktiv, (p, q) ausrechnen durch:
egcd :: N -> N -> (Z,Z)
egcd a b =
if b == 0 then ( ... , ... )
else let (d , m) = divMod a b
(p’ , q’) = egcd b m
in ( ... , ... )
Beweis für Algorithms:
• Korrektheit nach Konstruktion
• Termination durch Variante: . . .
Euklid — Zusammenfassung
wesentliche Argumente sind:
• Korrektheit:
Subtraktion von Vielfachen bzw. Berechnung des Restes:
Resultat ist im erlaubten Bereich“
”
(ist ein Vielfaches des gcd)
• Termination:
Rest ist kleiner als Divisor.
andere Bereiche, in denen das funktioniert?
Ringe
Ring (R, 0, 1, +, ·)
• (R, 0, +) ist komm. Gruppe,
(R, 1, ·) ist Monoid,
• Distributivgesetz für · und +
Bsp für Ringe:
• Z, Q, C (nicht: N)
24
• R ist Ring ⇒
– Matrizen über R bilden Ring Rd×d
– Polynome über R, in Variable X bilden Ring R[X].
– Polynome über R, in Variablen X1 , . . . , Xk bilden Ring R[X1 , . . . , Xk ].
– Vektoren Rd ? Nein, denn . . .
Ideale
• Ring (R, 0, 1, +, ·).
Def. Menge I ⊆ R heißt (Links-)Ideal,
wenn I + I ⊆ I und R · I ⊆ I.
• Bsp: R = Z, I = 2Z = Menge der geraden Zahlen.
ungerade Zahlen? nichtnegative gerade Zahlen?
• Def: das von einer Menge M erzeugte Ideal: hM i :=
das (bzgl. Inklusion) kleinste Ideal, das M enthält.
T
(equiv.) {I | I ist Ideal und M ⊆ I}
• Bsp: h{2}i in Z? h{15, 21}i in Z? (Schreibweise: h15, 21i)
• Def: R heißt Hauptidealring, falls jedes Ideal von einem Element erzeugt wird.
Bsp: Z, Q[X].
Kein HI-Ring: Q[X, Y ] (Hinweis: hX, Y i). — Ü: Z[X]?
Euklidische Ringe
• Def: (R, | · |) ist Euklidischer Ring, falls | · | : R \ {0} → N
und ∀a, b ∈ R : b 6= 0 ⇒ ∃q, r : a = b · q + r ∧ |r| < |b|.
• Beispiele: (Z, | · |), (Q[X], deg).
(Pol. in mehreren Variablen nicht, ⇒ Gröbnerbasen)
• Def: Euklidischer Algorithmus: (a, b) → (b, r) → · · · → (g, 0).
• Lemma: . . . terminiert und hgi = ha, bi.
• Satz: (R, | · |) ist Euklidischer Ring ⇒ R ist Hauptidealring.
25
Beweis:
• Sei I Ideal in R. Zu konstruieren ist e mit I = hei.
• Wähle e ∈ I \ {0} minimal bzgl. | · |. Zeige: I = hei.
• Falls f ∈ I \ hei, dann betrachte Euklid (f, e) 7→ g.
• g ∈ hf, ei ⊆ I.
• Weil e minimal in I, gilt hgi = hei und f ∈ hei.
Polynom-Division
• Satz: ∀a, b ∈ Q[X] : b 6= 0 ⇒ ∃q, r : a = b · q + r ∧ deg(r) < deg(b)
• Beweis: konstruktiv durch Angabe eines Algorithmus.
Benutze: a 6= 0 ⇒ a = lc a * lt a + red a
mit deg(red a)<deg a (Vereinbarung:deg(0) = −∞)
a : b =
if deg a < deg b then (0, a) else
let t = (lc a / lc b) * Xˆ(deg a - deg b)
(q,r) = (red a - t * red b) : b
in (t + q, r)
• (x10 − 1) : (x4 − 1) = . . . Rest . . .
• gcd(x10 − 1, x4 − 1) = . . . = . . . · (x10 − 1) + . . . · (x4 − 1)
Euklid für Vektoren?
• im folgenen Abschnitt (Gitter) ist der Grundbereich eine Menge von Vektoren
• die wesentliche algorithmische Idee ist ebenfalls:
oft genug einen vom anderen abziehen,
”
um einen kurzen Vektor zu erhalten“
• der Bereich ist kein Ring
(man kann Vektoren addieren, aber nicht multiplizieren),
26
• . . . aber ein Modul
(man kann Vektor mit Skalar multiplizieren)
• wir betrachten als interessante Teilmengen:
nicht Ideale, sondern Gitter.
7
Gitter
Definitionen, Beispiele
Def. Gitter Γ ⊆ Zd ist diskrete additive Gruppe
• diskret: ∀r ≥ 0 : | Balld (r) ∩ Γ| < ∞,
• d-dimensionale Kugel: Balld (r) = {x ∈ Rd : |x| ≤ r}.
• additive Gruppe: x, y ∈ Γ ⇒ (x + y) ∈ Γ ∧ (x − y) ∈ Γ.
Bsp:
Γ1 = {(x1 , x2 , x3 ) | x1 + x2 + x3 ≡ 0 (mod 5)}
Γ2 = {c1 · (4, 0, 1) + c2 · (4, 1, 0) + c3 · (5, 0, 0) | c1 , c2 , c3 ∈ Z}
Γ3 = {d1 · (1, −1, 0) + d2 · (0, 1, −1) + d3 · (4, 0, 1) | d1 , d2 , d3 ∈ Z}
Diese Gitter sehen verschieden aus, sind aber gleich!
Bsp: für v = (4, 7, −1) zeige v ∈ Γ1 , v ∈ Γ2 , v ∈ Γ3 .
Short(est) Vector Problem SVP
• Eingabe: (eine Basis B für) ein Gitter Γ, eine Zahl D
• Ausgabe:
ein Vektor v ∈ Γ \ {0} mit |v| ≤ D, falls existiert.
Beweis für v ∈ Γ durch c ∈ Zd mit v = c · B
Komplexität ist hoch
• man kann damit Geheimnisse verstecken
• effiziente Näherungsverfahren sind interessant
Anwendungen (außer Krypt.) bei
• Faktorisieren v. Polynomen , • ganzzahliger Optimierung
• Bestimmen von (Minimal)Polynomen für algebraische Zahlen, die nur numerisch
approximiert vorliegen
27
Gitter zur Best. v. Min.-Polynomen
gegeben: α ∈ R, B ∈ N, ∈ R
gesucht: Polynom p ∈ Z[X] mit Koeffz ≤ B und |p(α)| ≤ Ansatz: wähle d ∈ N, F ∈ N groß genug und bestimme kurzen Vektor in Gitter mit
Basis




1
0
0
0
0
10000
1 0 ... 0
F
0 1 0 0 0 31462 
0 1 . . . 0 bF αc 




0 0 1 0 0 98989 


.


..


0 0 0 1 0 311448
0 0 . . . 1 bF αd c
0 0 0 0 1 979897
Bsp: α = 3.14626, d = 4, F = 104
Kurzer Vektor? (Hinweis: letzte Komponente: 7)
Wie kann man aus diesem Vektor das Polynom ablesen?
SVP-Algorithmen (Ansatz)
• man bestimmt nicht nur einen kurzen Vektor in Γ,
sondern eine Basis aus kurzen Vektoren.
• Man transformiert die gegebene Basis schrittweise.
In jedem Schritt wird ein Basisvektor bi ersetzt durch b0i = bi −mbj für ein geeignetes
m ∈ Z mit |b0i | < |bi |.
zu untersuchen sind
• Korrektheit (Teil 1) — trivial, jederzeit bi ∈ Γ
• Strategie (Auswahl von i, j) und Laufzeit
• Korrektheit (Teil 2) — wenn so kein Vektor b mit |b| < D gefunden wird, gibt es
dann überhaupt keinen?
Ziel: guter Trade-Off zw. Genauigkeit und Geschwindigkeit.
Gitterbasisreduktion in 2D (evtl. Ü)
Bsp: h(12, 2), (13, 4)i
• Def: B = [b1 , b2 ] ist Lagrange-Gauß-reduziert, falls ∀q ∈ Z : |b1 | ≤ |b2 | ≤
|b2 + qb1 |.
• Satz: [b1 , b2 ] LG-reduz. B. für Γ ⇒ b1 ist kürzester V. in Γ.
28
• Algorithmus:
do { µ = hb2 , b1 i/hb1 , b1 i; (b2 , b1 ) := (b1 , b2 − bµeb1 ) } while (|b1 | > |b2 |)
• Satz: . . . erzeugt LG-reduzierte Basis in poly. Zeit.
Korrektheit offensichtlich,
Laufzeit: folgt aus |b01 |2 < |b1 |2 /3.
Eigenschaften von Gittern
• jedes Gitter Γ hat eine Basis B = {b1 , . . . , bn }:
∀x ∈ Γ : ∃c1 , . . . , cn ∈ Z : x = b1 c1 + . . . + bn cn
• je zwei Basen B, B 0 für Γ gilt: ∃T ∈ Zn×n : B 0 = BT .
(B und B 0 sind äquivalent, B ∼ B 0 )
Dann det T ∈ {−1, 1}. ⇒ folgende Def. ist erlaubt:
• Die Determinante eines Gitters det Γ ist | det B| für eine beliebige Basis B von Γ.
det Γ ist das Volumen des Parallel-Epipeds (Spates) aus den Basisvektoren.
Orthogonale Basen
(hier alles über Rn anstatt Zn )
• Def. Vektoren x, y sind orthogonal, falls hx, yi = 0
• Basis B = [b1 , . . . , bn ] orthogonal: i 6= j ⇒ hbi , bj i = 0
m.a.W., B · B T ist eine Diagonalmatrix.
• Satz: Jede Basis B besitzt eine äquivalente orthogonale Basis B ∗ , bestimme B ∗
durch Gram-Schmidt-Orthogonalisierung (GSO)
b∗i := bi − πspan(b1 ,...,bi−1 ) (bi ) nach:
• Satz: für µ = hx, yi/hy, yi gilt hx − µy, yi = 0
• Bezeichnung: µi,j := hbi , b∗j i/hb∗j , b∗j i.
29
Bestimmung von det Γ durch GSO
• mit GSO kann man die Determinante eines beliebigen Gitters mit Basis B schnell
ausrechnen:
bestimme O-Basis B ∗ mit B ∼ B ∗ und
Q
det(B ∗ · B ∗ T ) = i |b∗i |2 und det(B ∗ · B ∗ T ) = det(B ∗ ) det(B ∗ T ) = det(B ∗ )2
Q
• (Hadamard) für jede Basis B für Γ gilt b∈B |b| ≥ det Γ.
Beweis: det Γ = det B = det B ∗
und |bi | ≥ |b∗i | wg. Projektion
Vektorlängen in Gittern
• gegeben: Gitter Γ (durch Basis B).
gesucht: Abschätzung für λ := min{|x| : x ∈ Γ \ {0}}
• λ ≥ mini |b∗i | mit {b∗1 , . . .} = B ∗ = GSO(B)
• (Minkowski): det Γ ≥ vol Balld (λ/2) = (λ/2)d vol Balld (1)
vol Balld (1) ≥ vol W
√
√
mit W = Würfel mit Eckenmenge {−1/ d, +1/ d}d
√
vol W = (2/ d)d
√
√
aus det Γ ≥ (λ/2)d (2/ d)d folgt λ ≤ det Γ1/d d
√
Faktor d“ kann noch verbessert werden. (evtl. Ü)
”
Gitterbasisreduktion (naiv)
direkte Verallgemeinerung von Dimension 2:
• Gitter Γ mit Basis B,
• while (existieren i 6= j, q ∈ Z \ {0} mit |bi − qbj | < |bi |)
do bi := bi − qbj
• q so wählen, daß |bi − qbj | minimiert wird
(bestimme Minimum einer quadr. Funktion)
• Implementierung auf Lattice Reduction Challenge anwenden: für d = 200 OK, für
d ≥ 300 nicht.
30
• naive Idee muß modifiziert werden:
Algorithmus von Lenstra, Lenstra, Lovasz.
LLL-reduzierte Basen (size condition)
Idee: reduziere bi bzgl. b∗j (nicht: bj )
• Gitter Γ, Basis B in Zd , O-Basis B ∗ = GSO(B) in Qd .
• Def µi,j = hbi , b∗j i/hb∗j , b∗j i,
• Def: B heißt größenreduziert, falls ∀i > j : |µi,j | ≤ 1/2.
• Algorithmus (size reduction)
while (existiert i > j mit |µi,j | > 1/2) do bi := bi − bµi,j e · bj
• Satz: diese Alg. liefert eine zu B äquivalente größenreduzierte Basis
. . . in Polynomialzeit (quadratisch)
LLL-reduzierte Basen (Lovasz condition)
• Def. Lovasz-Bedingung (mit Parameter δ) an Stelle i:
|πspan(b1 ,...,bi−1 ) (bi )|2 ≤ δ · |πspan(b1 ,...,bi−1 ) (bi+1 )|2
equiv. (Ü) |b∗i |2 ≤ δ · |b∗i+1 + µi+1,i b∗i |2
• alternativ: |b∗i |2 ≤ 2|b∗i+1 |2
(nach V. Shoup, siehe v.z.Gathen: MCA, Notes 16.2)
• Algorithmus (LLL): do { größenreduktion;
wenn ∃i : ¬Lovaszδ (i), dann bi ↔ bi+1 ; continue }
• liefert (1.) Basis mit kurzen Vektor (2.) in Polynomialzeit
LLL-Algorithmus: Korrektheit
1. Satz: B größen- u. Lovasz-reduziert ⇒ |b1 | ≤ 2(d−1)/2 λ(Γ)
31
LLL-Algorithmus: Termination,
Laufzeit
P
2. Satz: der Wert von i log det(span(b1 , . . . , bi ))
• ist anfangs beschränkt durch . . .
• bleibt bei Größenreduktion unverändert
• sinkt bei Tausch um eine Konstante
(der von δ abhängt - wie?
Daraus ergibt sich der Bereich der für δ zulässigen Werte)
• ist immer ≥ 0
Folgerung: Laufzeit von LLL ist polynomiell in der Dimension.
Quellen, Ergänzungen
https://cseweb.ucsd.edu/classes/wi12/cse206A-a/lec3.pdf
http://www.cims.nyu.edu/˜regev/teaching/lattices_fall_2004/
ln/lll.pdf
http://www.latticechallenge.org/
sollte man mal ausprobieren: welche Vektorlängen man durch naive Implementierung
der Reduktion erreicht.
8
Symbolisches Rechnen und Musik
Akustische Signale (Audiodaten)
• (physikalisch) Geräusch = Folge von Luftdruckänderungen
. . . die sich wellenförmig ausbreitet und (u.a.) vom Ohr wahrgenommen wird
• (mathematisch) Abbildung von R (Zeit) nach R (Druck)
• (informatisch) Bsp. Audio-Synthese
32
Audiosynthese mit Csound
• Barry Vercoe, MIT Media Lab, 1968: Music 360, 1973: Music 11, 198*: Csound,
http://www.csounds.com/
Software-Synthesizer
• Anton Kholomiov: https://hackage.haskell.org/package/csound-expression
Haskell-API für csound
ghci
:m + Csound.Base Csound.IO
dac $ osc 440 -- Audio-Ausgabe
renderCsd ( osc 440 ) >>= putStrLn -- Quelltext
Partituren
verwendet:
• Atome: Note (Dauer, Höhe) und Pause (Dauer)
• Verknüpfungen: nacheinander, wiederholt, gleichzeitig
Werkzeuge (Beispiele):
• Han-Wen Nienhuys, Jan Nieuwenhuizen (2003) http://www.lilypond.org/
pdf/xivcim.pdf
• Paul Hudak, . . . : Haskore Music Notation — An Algebra of Music, JFP 1995 http:
//citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.36.8687
Paul Hudak, Henning Thielemann: https://hackage.haskell.org/package/
haskore
An Algebra of Music (Semantik)
Modul haskore-vintage:Haskore.Performance
die semantische Algebra:
• Grundbereich: Musikstücke
(als Folge von Ereignissen, monoton nach Zeitpunkt)
33
data Event = Event {eTime::Time, eDur::DurT
, ePitch::AbsPitch, eVol::Volume}
type Performance = [Event]
• Operationen:
– herstellen: Noten, Pausen
– verknüpfen: nacheinander (++), nebeneinander merge
– bearbeiten: Tempo skalieren, transponieren
An Algebra of Music (Syntax, Interpretation)
die syntaktische Algebra (Term-Algebra)
data Music
= Note Pitch Dur [Attribute] | Rest Dur
| Music :+: Music | Music :=: Music
| Tempo (Ratio Int) Music | Transpose Int Music
die Interpretationsfunktion
perform :: PMap -> Context --> Music
--> Performance
-let m = Note (C,4) 1 []
let p = perform defPMap defCon
let s = performToMidi p defUpm
outputMidiFile "test.midi" s
ˆ Parameter
ˆ Syntax
ˆ Semantik
m
An Algebra of Music (Eigenschaften)
Beispiele:
• nacheinander“ ist assoziativ :
”
perform pmap ctxt (a :+: (b :+: c))
== perform pmap ctxt ((a :+: b) :+: c)
• Transpose t ist Homomorphismus: . . .
Diskutiere:
34
• neutrale Elemente?
• kommutativ?
• distributiv? (wer über wen? von links, von rechts?)
• ist Performance ein Halbring?
Partitur und Aufführung
perform :: ... -> Music -> Performance
• Komponist Rhys Chatham, http://www.rhyschatham.net/ http://www.allmusic.
com/artist/mn0000759643
Guitar Trio (1977) sieht so aus: Note (C,2) 1 []
und dauert 30 min. eingespielt z.B. von Band Of Susans auf LP The Word and The
Flesh 1991.
• John Cage (1912-1992): As Slow As Possible
wird seit 2001 in Halberstadt aufgeführt http://www.aslsp.org/, wird 639
Jahre dauern,
nächster Klangwechsel: 5. September 2020.
Ströme
• Semantik: (unendliche) Folge von Werten (z.B. Noten)
• Realisierung
– Software: OO: Iterator, funktional (lazy) :
data Stream a = Cons a (Stream a)
– Mathematik:
∗ im Bereich Formale Sprachen: ω-Wort, s ∈ Aω = {f | f : N → A}
∗ im Bereich Algebra: formale Potenzreihe
P
S(x) = s0 + s1 x1 + s2 x2 + . . . = i∈N si xi
∗ Analysis: S heißt die erzeugende Funktion für s
Herbert Wilf: Generatingfunctionology (1990), http://www.math.
upenn.edu/˜wilf/DownldGF.html
35
Rechnen mit Strömen (I)
data Stream a = Cons a (Stream a)
Spezifikation und Verarbeitung durch Gleichungssysteme:
Beispiele:
• o :: Stream Int ; o = Cons 1 o
P
erz. Fkt. o = 1 + x · o, o = 1/(1 − x), o = i∈N 1 · xi
• map :: (a -> b) -> Stream a -> Stream b
map f (Cons x xs) = Cons (f x) (map f xs)
s = Cons 1 (map (\ c -> c + 1) s)
erzeugende Funktion s = 1 + x · (o + s)
Rechnen mit Strömen (II)
data Stream a
= Cons { head :: a, tail :: Stream a }
zipWith :: (a -> b -> c)
-> Stream a -> Stream b -> Stream c
zipWith f (Cons x xs) (Cons y ys) =
Cons (f x y) (zipWith f xs ys)
f = Cons 0 (Cons 1 (zipWith (+) f (tail f)))
geschlossener (algebraischer) Ausdruck für erzeugende Funktion?
Die Papier-Falt-Folge
• Definition:
f0 = Papierstreifen
fk + 1 = falte fk nach links, so daß rechtes Ende auf linkem Ende landet.
• Anfangswerte: f0 = , f1 = 1, f2 = 110, f3 = 1101100, . . .
• Eigenschaften:
36
– fk+1 = fk · 1 · . . .
– fk ist Präfix von fk+1 , damit exist. f := (limk fk ) ∈ {0, 1}ω
– f = merge((10)ω , f )
merge (Cons x xs) ys = Cons x (merge ys xs)
zz = Cons 1 (Cons 0 zz) ; f = merge zz f
– f ist überschneidungsfreier Pfad (1 = links, 0 = rechts)
Klassische Musiktheorie
• (Bsp.) die Papier-Falt-Folge f kann man als Tonfolge:
das klingt: unregelmäßig, aber langweilig (weil ziellos)
• wodurch wird eine Tonfolge zu Musik?
dadurch, daß sie einen Komponisten und einen Interpreten hat, der ein Gefühl ausdrücken bzw. beim Hörer hervorrufen will.
• Wollen reicht aber nicht (Kunst kommt von Können, . . . ), es gibt Regeln, die beschreiben,
wann Töne wohlklingen (Harmonie, Akkorde)
und Tonfolgen spannend sind (Kontrapunkt, Stimmführung)
Leipziger Musikpraktiker und -Theoretiker
• Johann Sebastian Bach (1685–1750) http://www.bachmuseumleipzig.de/,
http://imslp.org/wiki/Bach-Gesellschaft_Ausgabe_(Bach,_Johann_
Sebastian)
• Hugo Riemann (1849–1919)
(Hugo-Riemann-Straße: Floßplatz — Bayrischer Platz)
Handbuch der Harmonie- und Modulationslehre (1905) https://archive.org/
details/handbuchderharmo00riem
Lehrbuch des einfachen, doppelten und imitierenden Contrapunkts (1908) https:
//archive.org/details/lehrbuchdeseinfa1908riem
37
Mathematische Musiktheorie
Guerino Mazzola: Die Geometrie der Töne (1990)
• Differentialgeometrie: M ist Mannigfaltigkeit:
– M läßt sich durch lokale Karten überdecken
(∀x ∈ M : Umgebung von x sieht aus wie ein Rd )
– überlappende Karten passen (diff.bar) zusammen
Motivation
in der Mathematik: exakte Definition mehrdeutiger Funktionen“, z.B.
√
”
x 7→ x in C. Riemannsche Fläche (Bernhard Riemann, 1826–1866)
• musikalische Komposition als Mannigfaltigkeit:
– die lokalen Karten sind Akkorde,
– A1 paßt zu A2 , wenn A1 ∩ A2 6= ∅
(das ist eine sehr stark vereinfachte Darstellung)
Literatur Mathem. Musiktheorie
• Guerino Mazzola: Geometrie der Töne, Birkhäuser 1990. (https://zbmath.
org/?q=an:0729.00008)
• Thomas Noll: Ist der Tonraum flach oder gekrümmt?, Berlin 2001, http://www.
visual-geometry.de/unheard/materialien/skripte/Tonraum/Tonraum30.
11.html
• Gerhard Nierhaus: Algorithmic Composition, Springer 2009. (http://www.computermusicjournal
org/reviews/34-3/doornbusch-nierhaus.html)
• Christian Krattenthaler: Musik und Mathematik, http://www.mat.univie.ac.
at/˜kratt/artikel/musimath.html Intern. Math. Nachrichten 224(2013) 2960, http://www.oemg.ac.at/IMN/
Quelltexte
die Beispiele aus der Vorlesung:
https://git.imn.htwk-leipzig.de/ws14-code/sr
git clone https://git.imn.htwk-leipzig.de/ws14-code/sr.git
cd sr
cabal sandbox init
38
cabal install
cabal haddock --executable --hyperlink-source
cabal repl
9
Zusammenfassung
Themen und Prinzip
symbolisches Rechnen:
• nur Syntax: Terme, Termersetzungssysteme
• . . . mit Semantik:
– Polynome, algebraische Zahlen
– Gitter, Vektoren
– Geometrie
– Musik
Prinzip: beantworte semantische Fragen durch syntaktische Umformungen.
(Menge der Umformungsregeln: Kalkül.)
Umformungen
• abstrakt:
Termination, Konfluenz (lokal, global), Normalformen
• konkret
– für Terme:
(literale) Ersetzungsrelation, wohlfundierte monotone Algebra, Polynominterpretation, kritische Paare, Vervollständigung
– für Vektoren:
Größenreduktion, Lovasz-Reduktion, L3 -Algorithmus
– für Polynome/arithmetische Ausdrücke:
(algebraische) Ersetzung, Simplifikator, Rechnen m. algebr. Zahlen, zulässige
Termordnung, S-Polynome, Buchberger-Algorithmus, Euklid als Spezialfall
39
Anwendungen der Algorithmen
• Vervollst.-Algorithmus
⇒ Wortproblem entscheiden ⇒ (Gleichungs-)Theorem beweisen
• L3 -Algorithmus
⇒ kurzen Gittervektor finden ⇒ Minimalpolynom finden, (Nachricht entschlüsseln,
Polynom faktorisieren)
• arithm. Ausdruck simplifizieren (auf 0 testen)
⇒ geometrisches Theorem (v. rationalen konstruktiven Typ) beweisen
• Gröbnerbasis ausrechnen
⇒ Idealmitgliedschaft entscheiden ⇒ geometrisches Theorem (v. Gleichungstyp)
beweisen
Was (könnte der aufgeweckte Student hier noch) tun?
• autotool-Aufgaben dokumentieren, verbessern, erweitern https://autotool.
imn.htwk-leipzig.de/cgi-bin/Trial.cgi?lecture=214
– abstrakte und Termersetzung
– Polynome (Euklid, Gröbner)
– Gitter
– Geometrie (!)
• geometrische Geradeausprogramme/Theoreme http://autolat.imn.htwk-leipzig.
de/gitweb/?p=tool;a=tree;f=collection/src/Geo;hb=for-ghc-7.8
• Intl. School on Rewriting (10.–14. August) http://www.imn.htwk-leipzig.
de/ISR2015/
40
Herunterladen