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