Symbolisches Rechnen Vorlesung Wintersemester 2006, 2014 Johannes Waldmann, HTWK Leipzig 11. Dezember 2015 Symbolisches Rechnen: Definition I Rechnen mit Funktionen. (mit Ausdrücken, die Funktionen bezeichnen, d.h. gebundene Variablen enthalten) Bsp: expand(λx.(x + 1)2 ) = λx.(x 2 + 2x + 1) I 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: I I I 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 ist nützlich im Studium, benutzt und vertieft: I I I Mathematik (Analysis, Algebra) Algorithmen-Entwurf, -Analyse Prinzipien von Programmiersprachen Überblick I Grundlagen (6 Wochen) I I I Vertiefung (6) I I I I Term-Ersetzungs-Systeme (Differentiation, Vereinfachung) exaktes Rechnen mit (beliebig großen) Zahlen Vektoren (Gitterbasen) Polynome, Gröbnerbasen Geometrische Konfigurationen und Beweise Ausblick (2): Musik-Notationen, Beweisüberprüfer, . . . Literatur I Wolfram Koepf: Computeralgebra, Springer, 2006. http: //www.mathematik.uni-kassel.de/˜koepf/CA/ I 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/ I Franz Baader and Tobias Nipkow: Term Rewriting and All That, Cambridge, 1998. http://www21.in.tum.de/˜nipkow/TRaAT/ I Gerhard Nierhaus: Algorithmic Composition, Springer, 2009. Software I Maxima http://maxima.sourceforge.net/ Hinweis: benutze rlwrap maxima I GHC http://www.haskell.org/ghc/ I Geogebra http://www.geogebra.org/ I 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 I Korrektheit? Termination? Komplexität? I Strategie (Auswahl von Regel und Position)? I 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)) 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 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 I zum Haskell-Programm zum Symb. Differenzieren: I I I ISC I I füge Syntax und Regel für Quotienten hinzu schlage Regeln zur Vereinfachung vor p √ verifziere diese Behauptung für 2 + 3 Mixed constants with 5 operations 1931851652578136 = 1/2/sin(Pi/12) √ √ 2 bestimme ein Polynom mit Nullstelle 2 + 3 3 Übung KW 42 zu Aufgabenblatt Geometrie http://www.imn.htwk-leipzig.de/˜waldmann/edu/ ws14/sym/SR-1/Aufgaben.pdf I Skizze zu Aufgabe 4 (kein Beweis), Begriff kollinear I Beweis Aufgabe 7 (von Hand) I 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 I 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 I . . . von Quotienten: Termbäume, Positionen I I I I I 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: I I I 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) I ∈P I 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 I t[p := s] in t an Position p den Term s einsetzen Übung: definiere das exakt: I für Term als Zeichenketten I für Term als Abbildung von Baumbereich Variablen, Substitutionen I I I I I 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 I Regel (l, r ), Schreibweise (l → r ), mit l, r ∈ Term(Σ, V ) I 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 I I 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: I I jede Rechnung endet? (Termination) nach welcher Zeit? jede Rechnung endet mit genau einem Resultat? dabei: Resultat = Term, auf den keine Regel anwendbar ist = Normalform. Aufgaben Signatur (mit Stelligkeiten): Σ = {e0 , s1 , p2 , m2 , h2 } I I I 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 , d 0 }, R = {a(a(d, x), y ) → a(x, a(x, y ))}: Normalformen? Ableitungslängen? I I Termersetzung/Anwendungen Termersetzung ist I I I I 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 I I I 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, . . . 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(Σ)) I ρ ist terminierend (stark normalisierend), falls es keine unendliche lange ρ-Folge gibt d. h. ρ(x0 , x1 ), ρ(x1 , x2 ), ρ(x2 , x3 ), . . . I ρ 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: I p hat mehrere Normalformen I p hat keine Normalform Übung Termersetzung I I Der Ellipse 9 x 2 + 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): 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 t 0 = t[p := s] mittels Baumbereichen: I I I Variante A: Funktion als Menge von geordneten Paaren t 0 = t \ {(p · q, z) | q ∈ N∗ } ∪ {(p · q, z) | (q, z) ∈ s} Variante B: Funktion als Berechnungsvorschrift t 0 (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 Maxima-Trainingsaufgaben Dreicksgeometrie, Standardbezeichnungen c = AB, usw. I 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]); I bestimme daraus die Fläche des Dreiecks als Fkt. von a, b, c I bestimme daraus den Inkreisradius r . I 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. I beweise R ≥ 2r . Wann gilt Gleichheit? Beweise explizit, daß Multiplikation von 3 × 3-Matrizen assoziativ ist. I Matrix-Konstruktion mit genmatrix (lambda([i,j],i*j), 3, 3) 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 I I 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 k-stellige c aus Σ eine Funktion [c]A : D k → 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“: ” I “high school algebra”: Umformen von Ausdrücken. I lineare, höhere, usw. Algebra: untersucht Polynome usw. I 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? Syntaktische u. semantische Äq. von Termen Bsp. E = {P(Z , y) ≈ y , P(S(x), y) ≈ S(P(x, y))}. I syntaktische Äquivalenz: ≈E I semantische Äquivalenz: E |= s ≈ t I I I 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[S](x) Modell A N:2 +[Z = 0,1 = fürif E2|xüber then x ]else [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 Gleichungs-Theorem) Aufgaben I I I I 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) 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) Motivation gibt es unendliche Ableitungen in den Systemen I I I I 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 I I zum Entscheiden der syntaktischen Kongruenz ≈E zum E. des Polynom-Ideal-Problems: Q ∈ hP1 , P2 , . . .i Quellen I 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 I 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) Monotone Algebren, Interpretationen Beispiel: I I I I 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 I I keine unendlichen absteigenden Ketten in (D, >) Monotonie: ∀c ∈ Σ, x ∈ D, y ∈ D : x > y ⇒ [c](x) > [c](y ) Def: Algebra ist kompatibel mit R: I 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? I I I [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, Systematik wfmA Beispiele benutzten lineare Funkt. über N. Erweiterungen: I I I 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: I Monotonie, Kompatibilität mit R das Synthese-Problem: I 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 I I I 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: I I 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. Motivation gesucht ist Entscheidungsverfahren für das Wortproblem: I Eingabe: E über Σ, s, t ∈ Term(Σ, V ) I 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: I (Ziel): 1. Termination und 2. Konfluenz I (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) I Satz: wenn ρ auf M konfluent ist, dann besitzt jedes x ∈ M höchstens eine ρ-Normalform. I 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) Lokale Konfluenz I Eine zweistellige Relation ρ heißt lokal konfluent, wenn ∀x, y1 , y2 : ρ(x, y1 ) ∧ ρ(x, y2 ) ⇒ ∃z : ρ∗ (y1 , z) ∧ ρ∗ (y2 , z) I Beachte: es gibt Relationen ρ, die lokal konfluent sind, aber nicht konfluent. I 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 I Substitution: partielle Abbildung σ : V → Term(Σ, V ), so daß kein v ∈ dom σ in img σ vorkommt. I Substitution σ auf Term t anwenden: tσ (definiert durch Induktion über t) I Produkt von Substitutionen: so definiert, daß t(σ1 ◦ σ2 ) = (tσ1 )σ2 (wie geht das genau?) I die so definierten Substitutionen sind idempotent: σ ◦ σ = σ. Unifikation—Definition Unifikationsproblem (unvollst.) I I Eingabe: Terme t1 , t2 ∈ Term(Σ, V ) Ausgabe: eine Substitution σ = mgu(t1 , t2 ) mit: I σ unifiziert t1 , t2 : t1 σ = t2 σ. Beispiele: bestimme jeweils Menge der Unifikatoren von: I I I I f (X ), f (a) 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.) I I Eingabe: Terme t1 , t2 ∈ Term(Σ, V ) Ausgabe: eine Substitution σ = mgu(t1 , t2 ) mit: I I σ 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 I I I s ist Variable: . . . t ist Variable: symmetrisch s = f (s1 , s2 ) und t = g(t1 , t2 ): . . . Bemerkungen: I I I 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 Kritische Paare Für ein Termersetzungssystem R über Σ: falls I I I I (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 I ein TES R über Σ heißt nichtüberlappend, wenn R keine kritischen Paare besitzt. I ein TES R heißt linkslinear, wenn in keiner linken Regelseite eine Variable mehrfach vorkommt. I 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 I Für TES R über Σ: ein Symbol f ∈ Σ heißt definiert, wenn es als Wurzel einer linken Regelseite in R vorkommt. I Alle anderen Symbole heißten Konstruktoren. I 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. Vervollständigung (basic) . . . ist Algorithmus mit dieser Spezifikation I I Eingabe: Gleichungssystem E Ausgabe: Ersetzungssystem R mit Eigenschaften: I I R ist konvergent (:= terminierend und konfluent) ≈R = ≈E Implementierung: zusätzliche Eingabe: eine wfmA A I I ordne Paare aus E bzgl. >A , Resultat R0 wiederhole bis Ri+1 = Ri : Ri+1 := Ri ∪ die folgenden Paare: ∀(s, t) ∈ CP(Ri ): I I wähle s0 ∈ NfRi (s), t 0 ∈ NfRi (t) falls s0 6= t 0 , ordne (s0 , t 0 ) bzgl. >A . Korrektheit? Termination? beachte: 3 Fehlermöglichkeiten Vervollständigung (improved) bei einfacher Vervollständigung: I jedes neue kritische Paar muß sofort orientiert werden. I manche sind evtl. nicht orientierbar alternativer Ansatz: I das Orientieren aufschieben, I bis neue Regeln vorliegen, die zur Umformung des Paares benutzt werden können I so daß das umgeformte Paar orientierbar ist (nichtdeterministischer) Vervollständigungsalgorithmus wird formuliert mittels Inferenzsystem Inferenzsystem für Vervollständigung (Leo Bachmair 1991, zitiert in Baader/Nipkow) I I I 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) I I I I 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 I Anwendung in Theorembeweisern z.B. http://www.waldmeister.org/ I 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 I I 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/ I basic course (Prof. Aart Middeldorp, UIBK) I advanced courses (verschiedene) kann als Wahlfach belegt werden wir suche Studenten, die bei Vorbereitung und Durchführung mithelfen lokale Organisation: A. Geser, J. Waldmann. Teilbarkeit, Ringe, Ideale Wiederholung: für ganze Zahlen: I Def. (a | c) := (∃b : a · b = c). Bsp: 2 | 12, −5 | 15 I Übung: was stimmt: 3 | 0, 3 | 3, 0 | 3, 0 | 0 I Def. gcd (größter gemeinsamer Teiler) Merke: größter“ ist irreführend, es geht nicht um <. ” Zur Definition wird nur | benutzt. I 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: I I I 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. 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: I Korrektheit nach Konstruktion I Termination durch Variante: . . . Euklid — Zusammenfassung wesentliche Argumente sind: I Korrektheit: Subtraktion von Vielfachen bzw. Berechnung des Restes: Resultat ist im erlaubten Bereich“ ” (ist ein Vielfaches des gcd) I Termination: Rest ist kleiner als Divisor. andere Bereiche, in denen das funktioniert? Ringe Ring (R, 0, 1, +, ·) I I (R, 0, +) ist komm. Gruppe, Distributivgesetz für · und + (R, 1, ·) ist Monoid, Bsp für Ringe: I I Z, Q, C (nicht: N) R ist Ring ⇒ I I I I Matrizen über R bilden Ring R d×d Polynome über R, in Variable X bilden Ring R[X ]. Polynome über R, in Variablen X1 , . . . , Xk bilden Ring R[X1 , . . . , Xk ]. Vektoren R d ? Nein, denn . . . Ideale I Ring (R, 0, 1, +, ·). Def. Menge I ⊆ R heißt (Links-)Ideal, wenn I + I ⊆ I und R · I ⊆ I. I Bsp: R = Z, I = 2Z = Menge der geraden Zahlen. ungerade Zahlen? nichtnegative gerade Zahlen? I Def: das von einer Menge M erzeugte Ideal: hMi := das (bzgl. Inklusion) kleinste Ideal, das M enthält. T (equiv.) {I | I ist Ideal und M ⊆ I} I Bsp: h{2}i in Z? h{15, 21}i in Z? (Schreibweise: h15, 21i) I 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 I Def: (R, | · |) ist Euklidischer Ring, falls | · | : R \ {0} → N und ∀a, b ∈ R : b 6= 0 ⇒ ∃q, r : a = b · q + r ∧ |r | < |b|. I Beispiele: (Z, | · |), (Q[X ], deg). (Pol. in mehreren Variablen nicht, ⇒ Gröbnerbasen) I Def: Euklidischer Algorithmus: (a, b) → (b, r ) → · · · → (g, 0). I Lemma: . . . terminiert und hgi = ha, bi. I Satz: (R, | · |) ist Euklidischer Ring ⇒ R ist Hauptidealring. Beweis: I Sei I Ideal in R. Zu konstruieren ist e mit I = hei. I Wähle e ∈ I \ {0} minimal bzgl. | · |. Zeige: I = hei. I Falls f ∈ I \ hei, dann betrachte Euklid (f , e) 7→ g. I g ∈ hf , ei ⊆ I. I Weil e minimal in I, gilt hgi = hei und f ∈ hei. Polynom-Division I Satz: ∀a, b ∈ Q[X ] : b 6= 0 ⇒ ∃q, r : a = b·q+r ∧deg(r ) < deg(b) I 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) I (x 10 − 1) : (x 4 − 1) = . . . Rest . . . I gcd(x 10 − 1, x 4 − 1) = . . . = . . . · (x 10 − 1) + . . . · (x 4 − 1) Euklid für Vektoren? I im folgenen Abschnitt (Gitter) ist der Grundbereich eine Menge von Vektoren I die wesentliche algorithmische Idee ist ebenfalls: oft genug einen vom anderen abziehen, ” um einen kurzen Vektor zu erhalten“ I der Bereich ist kein Ring (man kann Vektoren addieren, aber nicht multiplizieren), I . . . aber ein Modul (man kann Vektor mit Skalar multiplizieren) I wir betrachten als interessante Teilmengen: nicht Ideale, sondern Gitter. Definitionen, Beispiele Def. Gitter Γ ⊆ Zd ist diskrete additive Gruppe I diskret: ∀r ≥ 0 : | Balld (r ) ∩ Γ| < ∞, I d-dimensionale Kugel: Balld (r ) = {x ∈ Rd : |x| ≤ r }. I 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 I I 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 I I man kann damit Geheimnisse verstecken effiziente Näherungsverfahren sind interessant Anwendungen (außer Krypt.) bei I I Faktorisieren v. Polynomen , • ganzzahliger Optimierung Bestimmen von (Minimal)Polynomen für algebraische Zahlen, die nur numerisch approximiert vorliegen 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 inGitter 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) I I 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 bi0 = bi − mbj für ein geeignetes m ∈ Z mit |bi0 | < |bi |. zu untersuchen sind I I I 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 I Def: B = [b1 , b2 ] ist Lagrange-Gauß-reduziert, falls ∀q ∈ Z : |b1 | ≤ |b2 | ≤ |b2 + qb1 |. I Satz: [b1 , b2 ] LG-reduz. B. für Γ ⇒ b1 ist kürzester V. in Γ. I Algorithmus: do { µ = hb2 , b1 i/hb1 , b1 i; (b2 , b1 ) := (b1 , b2 − bµeb1 ) } while (|b1 | > |b2 |) I Satz: . . . erzeugt LG-reduzierte Basis in poly. Zeit. Korrektheit offensichtlich, Laufzeit: folgt aus |b10 |2 < |b1 |2 /3. Eigenschaften von Gittern I jedes Gitter Γ hat eine Basis B = {b1 , . . . , bn }: ∀x ∈ Γ : ∃c1 , . . . , cn ∈ Z : x = b1 c1 + . . . + bn cn I 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: I 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 ) I Def. Vektoren x, y sind orthogonal, falls hx, y i = 0 I Basis B = [b1 , . . . , bn ] orthogonal: i 6= j ⇒ hbi , bj i = 0 m.a.W., B · B T ist eine Diagonalmatrix. I Satz: Jede Basis B besitzt eine äquivalente orthogonale Basis B ∗ , bestimme B ∗ durch Gram-Schmidt-Orthogonalisierung (GSO) bi∗ := bi − πspan(b1 ,...,bi−1 ) (bi ) nach: I Satz: für µ = hx, y i/hy , y i gilt hx − µy, yi = 0 I Bezeichnung: µi,j := hbi , bj∗ i/hbj∗ , bj∗ i. Bestimmung von det Γ durch GSO I I mit GSO kann man die Determinante eines beliebigen Gitters mit Basis B schnell ausrechnen: bestimme O-Basis B ∗ mit B ∼ B ∗ und Q T det(B ∗ · B ∗ ) = i |bi∗ |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 | ≥ |bi∗ | wg. Projektion Vektorlängen in Gittern I gegeben: Gitter Γ (durch Basis B). gesucht: Abschätzung für λ := min{|x| : x ∈ Γ \ {0}} I λ ≥ mini |bi∗ | mit {b1∗ , . . .} = B ∗ = GSO(B) I (Minkowski): det Γ ≥ vol Balld (λ/2) = (λ/2)d vol Balld (1) vol Balld (1) ≥ vol W √ d √ d, +1/ d} mit W = Würfel mit Eckenmenge {−1/ √ 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: I I I I I 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. naive Idee muß modifiziert werden: Algorithmus von Lenstra, Lenstra, Lovasz. LLL-reduzierte Basen (size condition) Idee: reduziere bi bzgl. bj∗ (nicht: bj ) I Gitter Γ, Basis B in Zd , O-Basis B ∗ = GSO(B) in Qd . I Def µi,j = hbi , bj∗ i/hbj∗ , bj∗ i, I Def: B heißt größenreduziert, falls ∀i > j : |µi,j | ≤ 1/2. I Algorithmus (size reduction) while (existiert i > j mit |µi,j | > 1/2) do bi := bi − bµi,j e · bj I Satz: diese Alg. liefert eine zu B äquivalente größenreduzierte Basis . . . in Polynomialzeit (quadratisch) LLL-reduzierte Basen (Lovasz condition) I Def. Lovasz-Bedingung (mit Parameter δ) an Stelle i: |πspan(b1 ,...,bi−1 ) (bi )|2 ≤ δ · |πspan(b1 ,...,bi−1 ) (bi+1 )|2 ∗ +µ ∗ 2 equiv. (Ü) |bi∗ |2 ≤ δ · |bi+1 i+1,i bi | I ∗ |2 alternativ: |bi∗ |2 ≤ 2|bi+1 (nach V. Shoup, siehe v.z.Gathen: MCA, Notes 16.2) I Algorithmus (LLL): do { größenreduktion; wenn ∃i : ¬Lovaszδ (i), dann bi ↔ bi+1 ; continue } I 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 λ(Γ) LLL-Algorithmus: Termination, Laufzeit 2. Satz: der Wert von P i log det(span(b1 , . . . , bi )) I ist anfangs beschränkt durch . . . I bleibt bei Größenreduktion unverändert I sinkt bei Tausch um eine Konstante (der von δ abhängt - wie? Daraus ergibt sich der Bereich der für δ zulässigen Werte) I 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. Akustische Signale (Audiodaten) I (physikalisch) Geräusch = Folge von Luftdruckänderungen . . . die sich wellenförmig ausbreitet und (u.a.) vom Ohr wahrgenommen wird I (mathematisch) Abbildung von R (Zeit) nach R (Druck) I (informatisch) Bsp. Audio-Synthese Audiosynthese mit Csound I Barry Vercoe, MIT Media Lab, 1968: Music 360, 1973: Music 11, 198*: Csound, http://www.csounds.com/ Software-Synthesizer I 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: I Atome: Note (Dauer, Höhe) und Pause (Dauer) I Verknüpfungen: nacheinander, wiederholt, gleichzeitig Werkzeuge (Beispiele): I Han-Wen Nienhuys, Jan Nieuwenhuizen (2003) http://www.lilypond.org/pdf/xivcim.pdf I 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: I I Grundbereich: Musikstücke (als Folge von Ereignissen, monoton nach Zeitpunkt) data Event = Event {eTime::Time, eDur::DurT , ePitch::AbsPitch, eVol::Volume} type Performance = [Event] Operationen: I I I 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: I nacheinander“ ist assoziativ : ” perform pmap ctxt (a :+: (b :+: c)) == perform pmap ctxt ((a :+: b) :+: c) I Transpose t ist Homomorphismus: . . . Diskutiere: I neutrale Elemente? I kommutativ? I distributiv? (wer über wen? von links, von rechts?) I ist Performance ein Halbring? Partitur und Aufführung perform :: ... -> Music -> Performance I 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. I 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 I Semantik: (unendliche) Folge von Werten (z.B. Noten) I Realisierung I I Software: OO: Iterator, funktional (lazy) : data Stream a = Cons a (Stream a) Mathematik: I I I im Bereich Formale Sprachen: ω-Wort, s ∈ Aω = {f | f : N → A} im Bereich Algebra: formale Potenzreihe P S(x) = s0 + s1 x 1 + s2 x 2 + . . . = i∈N si x i Analysis: S heißt die erzeugende Funktion für s Herbert Wilf: Generatingfunctionology (1990), http: //www.math.upenn.edu/˜wilf/DownldGF.html Rechnen mit Strömen (I) data Stream a = Cons a (Stream a) Spezifikation und Verarbeitung durch Gleichungssysteme: Beispiele: I o :: Stream Int ; o = Cons 1 o P erz. Fkt. o = 1 + x · o, o = 1/(1 − x), o = i∈N 1 · x i I 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 I Definition: f0 = Papierstreifen fk + 1 = falte fk nach links, so daß rechtes Ende auf linkem Ende landet. I Anfangswerte: f0 = , f1 = 1, f2 = 110, f3 = 1101100, . . . I Eigenschaften: I I I 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 I f ist überschneidungsfreier Pfad (1 = links, 0 = rechts) Klassische Musiktheorie I (Bsp.) die Papier-Falt-Folge f kann man als Tonfolge: das klingt: unregelmäßig, aber langweilig (weil ziellos) I 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. I 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 I Johann Sebastian Bach (1685–1750) http://www.bachmuseumleipzig.de/, http://imslp.org/wiki/Bach-Gesellschaft_ Ausgabe_(Bach,_Johann_Sebastian) I 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 Mathematische Musiktheorie Guerino Mazzola: Die Geometrie der Töne (1990) I Differentialgeometrie: M ist Mannigfaltigkeit: I I 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) I musikalische Komposition als Mannigfaltigkeit: I I die lokalen Karten sind Akkorde, A1 paßt zu A2 , wenn A1 ∩ A2 6= ∅ (das ist eine sehr stark vereinfachte Darstellung) Literatur Mathem. Musiktheorie I Guerino Mazzola: Geometrie der Töne, Birkhäuser 1990. (https://zbmath.org/?q=an:0729.00008) I Thomas Noll: Ist der Tonraum flach oder gekrümmt?, Berlin 2001, http://www.visual-geometry.de/unheard/ materialien/skripte/Tonraum/Tonraum30.11.html I Gerhard Nierhaus: Algorithmic Composition, Springer 2009. (http://www.computermusicjournal.org/ reviews/34-3/doornbusch-nierhaus.html) I Christian Krattenthaler: Musik und Mathematik, http://www.mat.univie.ac.at/˜kratt/artikel/ musimath.html Intern. Math. Nachrichten 224(2013) 29-60, 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/ cd sr cabal sandbox init cabal install cabal haddock --executable --hyperlink-source cabal repl Themen und Prinzip symbolisches Rechnen: I nur Syntax: Terme, Termersetzungssysteme I . . . mit Semantik: I I I I Polynome, algebraische Zahlen Gitter, Vektoren Geometrie Musik Prinzip: beantworte semantische Fragen durch syntaktische Umformungen. (Menge der Umformungsregeln: Kalkül.) Umformungen I I abstrakt: Termination, Konfluenz (lokal, global), Normalformen konkret I I I 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 Anwendungen der Algorithmen I Vervollst.-Algorithmus ⇒ Wortproblem entscheiden ⇒ (Gleichungs-)Theorem beweisen I L3 -Algorithmus ⇒ kurzen Gittervektor finden ⇒ Minimalpolynom finden, (Nachricht entschlüsseln, Polynom faktorisieren) I arithm. Ausdruck simplifizieren (auf 0 testen) ⇒ geometrisches Theorem (v. rationalen konstruktiven Typ) beweisen I Gröbnerbasis ausrechnen ⇒ Idealmitgliedschaft entscheiden ⇒ geometrisches Theorem (v. Gleichungstyp) beweisen Was (könnte der aufgeweckte Student hier noch) tun? I autotool-Aufgaben dokumentieren, verbessern, erweitern https://autotool.imn.htwk-leipzig.de/cgi-bin/ Trial.cgi?lecture=214 I I I I I 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 I Intl. School on Rewriting (10.–14. August) http://www.imn.htwk-leipzig.de/ISR2015/
© Copyright 2024 ExpyDoc