Terminierungsanalyse mithilfe von Matrix-Interpretationen Eine Elaboration Niklas Hoppe RWTH Aachen 3. Februar 2009 1 Einleitung Die folgende Ausarbeitung soll Überblick und Verständnis der Idee zum Thema Terminierungsanalyse von Termersetzungssystemen mithilfe von MatrixInterpretationen vermitteln. Auf Beweise wird bewusst verzichtet, aber an entsprechender Stelle hingewiesen. 2 2.1 Voraussetzungen Termersetzungssysteme Ein Termersetzungssystem (TES) P über der Signatur (Σ, X ) ist eine Menge, die aus Paaren (l, r) ∈ T (Σ, X ) × T (Σ, X ) besteht, sodass l ∈ / X , d.h. l besteht nicht nur aus einer Variable, und alle Variablen die in r enthalten sind, sind auch in l enthalten. Solche Paare (l, r) sind sog. Regeln und werden üblicherweise geschrieben als l → r. Außerdem steht SN (P ) für die Terminierung des TES P und SN (P/R) für die relative Terminierung der TESe P und R. Für eine ausführliche Erläuterung von Termersetzungssystemen siehe [4]. 2.2 Monotone Algebren Eine Σ-Algebra (A, [·]) besteht aus einer Menge A und für jedes f ∈ Σ gibt es eine Funktion [f ] : A × ... × A → A. Die Funktion [f ] ist die Interpretation von f. α ist eine Abbildung α : X → A und instantiiert sozusagen alle Variablen eines Terms. Die Abbildung [·, α] : T (Σ, X ) → A evaluiert dabei die Terme 1 induktiv: [x, α] = α(x) [f (t1 , ..., tn ), α] = [f ]([t1 , α], ..., [tn , α]) Die Interpretation [f ] : A×...×A → A eines Funktionssymbols f ist monoton in Beziehung zu einer Binärrelation ◦ über A, wenn für alle ai , bi ∈ A, für i = 1, ..., n mit ai ◦ bi für gewisse i und aj = bj für alle j 6= i folgendes gilt: [f ](a1 , ..., an ) ◦ [f ](b1 , ..., bn ) Eine schwach monotone Σ-Algebra (A, [·], >, &) ist eine Σ-Algebra (A, [·]) mit zwei Relationen > und & über A, sodass: 1. > ist fundiert sowie > · & ⊆ > 2. Für jedes f ∈ Σ ist die Interpretation [f ] monoton in Beziehung zu & Zu (1): Eine fundierte Relation über einer Menge A ist eine Relation, die keine unendliche absteigende Kette a1 , a2 , a3 , ... mit ai ∈ A enthält. Das heißt also, dass die Menge A immer ein Ende nach unten hat. Dies ist eine zentrale Eigenschaft für die Verwendung zur Terminierungsanalyse. 2.3 Starke Normalisierung Die bisherigen Voraussetzungen charakterisieren Termersetzungssysteme und ihre Terminierung sowie Σ-Algebren und ihre Monotonie. Das folgende, für die Terminierungsanalyse zentrale, Theorem verbindet Termersetungssysteme und Σ-Algebren sowie deren Eigenschaften. Theorem 1. ([1]) Seien P und R TESe. SN (Ptop /R) genau dann, wenn es eine schwach monotone Σ-Algebra (A, [·], >, &) gibt, sodass [l, α] > [r, α] für jede Regel l → r ∈ R und [l, α] & [r, α] für jede Regel l → r ∈ P , für alle Variableninstantiierungen α : X → A. Das folgende Theorem erlaubt die schrittweise Vorgehensweise beim später konstruierten Verfahren, sodass nicht in einem Schritt alle Regeln des einen Termersetzungssystems die strikte Eigenschaft [l, α] > [r, α] erfüllen müssen. Stattdessen können die Regeln des Termersetzungssystems nacheinander ausgeschlossen werden ohne die Korrektheit des Beweises einzubüßen. Theorem 2. ([1]) Seien P und R TESe und sei (A, [·], >, &) eine schwach monotone Σ-Algebra, sodass [l, α] & [r, α] für jede Regel l → r in P ∪ R und jedes α : X → A. Sei P 0 die Menge aller Regeln l → r aus P für die gilt [l, α] > [r, α] für alle Variableninstantiierungen α : X → A. Dann gilt: SN ((P \P 0 )top /R) ⇒ SN (Ptop /R). Beispiel 1. Seien Σ = {a, b, f, g} und X, Y ∈ X . Weiter seien P , R TESe über der Signatur Σ und A = N. > entspreche dem üblichen > über N und & entspreche dem üblichen ≥ über N. 2 • P besteht aus der Regel f (X) → X. • R besteht aus der Regel g(X, Y ) → f (X). • [a] = 1, [b] = 2, [c] = 3, [f ](X) = 2 ∗ α(X), [g](X, Y ) = 3 ∗ [α](X) Offensichtlich gilt [l, α] & [r, α] für alle Regeln l → r ∈ P ∪R. Es gilt darüber hinaus [l, α] > [r, α] für die Regel f (X) → X ∈ P . Nach Theorem 2 kann man diese Regel aus P entfernen, sodass zu beweisen bleibt: SN (∅/ {g(X, Y ) → f (X)}). Das ist nach Theorem 1 wahr und damit ist auch SN (Ptop /R) bewiesen. 2.4 Dependency Pairs Für ein TES P ist f ∈ Σ ein definiertes Funktionssymbol, wenn f die linke Seite einer Regel aus P ist. Für jedes definierte Funktionssymbol f gebe es ein markiertes Funktionssymbol f# . Wenn f (s1 , ..., sn ) → C[g(t1 , ..., tm )] eine Regel aus P und g ein definiertes Funktionssymbol ist, dann ist f# (s1 , ..., sn ) → g# (t1 , ..., tm ) ein sogenanntes Dependency Pair von P . Die Menge aller Dependency Pairs von P heißt DP (P ). Beispiel 2. Sei P TES mit den folgenden drei Regeln: f (X) → X; g(X, Y ) → f (X); h(X, Y ) → f (g(X, Y )) Dann besteht DP (P ) aus: g# (X, Y ) → f# (X); h# (X, Y ) → f# (g(X, Y )); h# (X, Y ) → g# (X, Y ) Theorem 3. ([3]) Sei P ein TES. Dann gilt SN (P ) ⇔ SN (DP (P )top /P ) 3 Matrix-Interpretationen Hinter der Interpretation von Termen in eine Σ-Algebra steckt die Idee, jedem Term eine gewisse Wertigkeit zuzuweisen, beispielsweise als natürliche Zahl oder Vektor über den natürlichen Zahlen. Man fordert von den Regeln des TES, dass die Wertigkeit ihrer rechten Seiten im Gegensatz zu den linken Seiten möglichst abnimmt. Da durch die natürlichen Zahlen ein Ende nach unten gegeben ist, kann die Wertigkeit eines Terms nicht beliebig klein werden und damit auch keine unendliche Reihe von Termen t1 , t2 , t3 , ... mit ti → ti+1 für alle i = 1, 2, 3, ... entstehen. Die absteigende Wertigkeit und die Grenze der natürlichen Zahlen ist also direkt verknüpft mit der Terminierung eines Termersetzungssystems. Basierend auf den beiden vorgestellten Theoremen ist die Strategie für den Terminierungsbeweis eines Termersetzungssystems P über der Signatur Σ wie folgt: 3 1. Durch Theorem 3 lässt sich die Terminierung SN (P ) reduzieren auf SN (DP (P )top /P ). 2. Man wählt A und die beiden Relationen > sowie &, sodass > über A fundiert ist und > · & ⊆ > gilt. 3. Man wählt die Interpretationen [f ] der Funktionssymbole f ∈ Σ, sodass diese monoton im Bezug auf & (schwach monoton) sind. 4. Alle Regeln l → r aus DP (P ), für die gilt [l, α] > [r, α] für alle Variableninstantiierungen α : X → A, können nach Theorem 2 aus DP (P ) entfernt werden. Ist DP (P ) = ∅, gilt trivialerweise SN (DP (P )top /P ). Ist DP (P ) 6= ∅, wiederholt man das Verfahren mit der veränderten Menge DP (P ). Der entscheidende Punkt des Terminierungsbeweises ist daher die Wahl von A, >, & und [f ]. Im Fall von Polynom-Interpretationen ist A = N, alle Funktionen [f ] sind Polynomfunktionen, > hat seine übliche Bedeutung und & entspricht ≥. Hier geht es dagegen um Matrix-Interpretationen.1 Dazu wählt man nun A = Nd . Die Relationen & und > über A = Nd sind wie folgt definiert: (v1 , ..., vd ) & (u1 , ..., ud ) ⇔ vi ≥ ui mit i = 1, 2, 3, ..., d (v1 , ..., vd ) > (u1 , ..., ud ) ⇔ v1 > u1 ∧ vi ≥ ui mit i = 2, 3, ..., d Offensichtlich gilt: > ist fundiert sowie > · & ⊆ >. Außerdem setzt man folgende Rahmenbedingungen für die Wahl der Interpretation [f ] eines Funktionssymbols f bzw. [f# ] eines definierten Funktionssymbols f# . Bei Stelligkeit n von f , wählt man n Matrizen F1 , F2 , ..., Fn ∈ Nd×d . Hinzu kommt ein Vektor f~ ∈ Nd . Die Interpretation [f ] von f ist dann: [f ](~v1 , ..., ~vn ) = F1~v1 + ... + Fn~vn + f~ mit vi ∈ Nd . 0-stellige Funktionssymbole werden offensichtlich ohne Matrizen direkt als Vektoren f~ ∈ Nd interpretiert. [f ] ist monoton in Beziehung zu &. In der selben Form kann man die rechte und linke Seite einer Regel l → r interpretieren. Die Regelseiten l, r einer Regel l → r ∈ P ∪ DP (P ) haben folgende Form: [l, α] = L1 ~x1 + ... + Lk ~xk + ~l [r, α] = R1 ~x1 + ... + Rk ~xk + ~r mit den Matrizen L1 , ..., Lk , R1 , ..., Rk ∈ Nd×d und Vektoren ~l, ~r ∈ Nd . 1 Die Bezeichnung Matrix-Interpretationen ist irreführend, da die Terme eigentlich als Vektoren interpretiert werden und nicht als Matrizen. 4 Erinnerung: Die Abbildung α : X → A steht für die Variableninstantiierung. x1 , ..., xk sind also die Variablen, die in der Regel l → r vorkommen. Die Instantiierung und Interpretation einer Variable α(xi ) = ~xi resultiert daher in einem Vektor. Wie in der Beweisstrategie aufgeführt, möchte man die Regelseiten l und r einer Regel l → r vergleichen: [l, α] & [r, α]. Dazu muss man, analog zum Vergleich von Vektoren, nun noch die Relation & über Matrizen wie folgt definieren: B & C ⇔ ∀i, j : (B)i,j ≥ (C)i,j Folgendes Lemma verknüpft die Relation der Interpretation einer Regelseite L1 , ..., Lk und ~l bzw. R1 , ..., Rk und ~r für eine Regel l → r ∈ P mit der Relation der Regelseiten [l, α] bzw. [r, α]: Lemma 4. ([4]) Seien L1 , ..., Lk , R1 , ..., Rk Matrizen und ~l, ~r Vektoren die wie beschrieben zu einer Regel l → r gehören. Dann gilt: ∀ α : X → A : [l, α] & [r, α] ⇔ Li & Ri mit i = 1, ..., k und ~l & ~r ∀ α : X → A : [l, α] > [r, α] ⇔ Li & Ri mit i = 1, ..., k und ~l > ~r Nun kann man die vorläufige Strategie zum Beweis SN (P ) eines TES R, anhand eines Beispiels, folgendermaßen konkretisieren: Beispiel 3. Seien Σ = {a, b, f, g} und X, Y ∈ X . Weiter seien A = Nd sowie alle Relationen und Operationen wie zuvor beschrieben. Sei P TES über Σ mit den folgenden Regeln: f (X) → X g(X, Y ) → f (f (X)) Schritt 1. Nach Theorem 3 beweist man SN (DP (P )top /P ) statt SN (P ) DP (P ) = {g# (X, Y ) → f# (X); g# (X, Y ) → f# (f (X))} Schritt 2. Man legt die Dimension d fest. Dimension d = 3 Schritt 3. Man wählt n Matrizen Fi ∈ Nd×d für jedes Funktionssymbol f und jedes f# , wobei n die Stelligkeit von f bzw. f# ist. Hinzu kommt der Vektor f~ ∈ Nd . 1 0 0 1 1 0 0 1 F1 = 0 0 0, f~ = 0, F#1 = 0 0 0, f~# = 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 2 G1 = 0 0 0, G2 = 0 0 0, ~g = 0 0 0 0 0 0 0 0 2 0 0 1 0 0 3 G#1 = 0 0 0, G#2 = 0 0 0, g~# = 0 0 0 0 0 0 0 0 5 Schritt 4. Für alle Regeln l → r ∈ P ∪ DP (P ) überprüfen, ob gilt Li & Ri für i = 1, ..., k und ~l & ~r. Sind die Bedingungen nicht erfüllt, schlägt das Verfahren fehl. f (X) → X: Trivial X 2 2 g(X, Y ) → f (f (X)): ~g = 0 & 0 = F1 · f~ + f~ X 0 0 1 0 0 1 0 0 und G1 = 0 0 0 & 0 0 0 = F1 · F1 X 0 0 0 0 0 0 2 0 0 1 0 0 g# (X, Y ) → f# (X): G#1 = 0 0 0 & 0 0 0 = F#1 X 0 0 0 0 0 0 3 1 und g~# = 0 & 0 = f~# X 0 0 2 0 0 1 0 0 g# (X, Y ) → f# (f (X)): G#1 = 0 0 0 & 0 0 0 = 0 0 0 0 0 0 F#1 · F1 X 2 3 und g~# = 0 & 0 = f~# + f~ X 0 0 Schritt 5. Alle Regeln l → r ∈ DP (P ), für die darüber hinaus gilt ~l > ~r, werden aus DP (P ) entfernt. 3 1 g# (X, Y ) → f# (X): g~# = 0 > 0 = f~# X 0 0 3 2 g# (X, Y ) → f# (f (X)): g~# = 0 > 0 = f~# + F#1 · f~ X 0 0 Die Regeln g# (X, Y ) → f# (X) und g# (X, Y ) → f# (f (X)) können also aus DP (P ) entfernt werden. Schritt 6. Ist DP (P ) die leere Menge, folgt SN (P ). Ist DP (P ) nicht leer, wiederholt man das Verfahren mit der reduzierten Menge DP (P ) ab Punkt 2. DP (P ) = ∅ ⇒ SN (P ). Fertig. 6 4 Arktische Matrizen Die Interpretation von Termen als Vektoren über den natürlichen Zahlen A = Nd wie im vorangegangenen Abschnitt lässt sich außerdem auf die Interpretation als Vektoren über den sog. arktischen natürlichen Zahlen A = AN realisieren. Die arktischen natürlichen Zahlen AN sind nichts anderes als die natürlichen Zahlen N vereinigt mit −∞. Durch die Hinzunahme von −∞ ist eine andere Definition der zwei benötigten Binärrelationen > und & über A = AN nötig, damit diese die Kriterien für eine schwach monotone Σ-Algebra erfüllen. Außerdem sind die Operationen über A = AN nicht trivial und müssen die Monotonie der Interpretationen [f ] in Beziehung zu & gewährleisten. Man wählt daher folgende Definitionen: Die neue Operation ⊕ über AN entspricht dem üblichen max. Das bedeutet, dass −∞ das neutrale Element der Operation ⊕ ist: x⊕−∞ = x bzw. −∞⊕x = x. Die zweite neue Operation ⊗ über AN entspricht dem üblichen +. Das bedeutet, dass 0 das neutrale Element der Operation ⊗ ist: x ⊗ 0 = x bzw. 0 ⊗ x = x. Außerdem ergibt sich: −∞ ⊗ x = x ⊗ −∞ = −∞. Vektor- und Matrixmultiplikation funktionieren entsprechend dem folgenden Beispiel: Beispiel 4. 1 0 = 1 −∞ 0 1 −∞ 1 (1 ⊗ 0) ⊕ (1 ⊗ 1) (1 ⊗ −∞) ⊕ (1 ⊗ 1) (0 ⊗ 0) ⊕ (−∞ ⊗ 1) (0 ⊗ −∞) ⊕ (1 ⊗ 1) 1⊕2 −∞ ⊕ 2 2 2 = = 0 ⊕ −∞ −∞ ⊕ 2 0 2 Die Interpretation [f ] eines Funktionssymbols f ∈ Σ mit Stelligkeit n hat folgende lineare Form analog zur bereits beschriebenen Matrix-Interpretation: [f ](~v1 , ..., ~vn ) = F1 ⊗ ~v1 ⊕ ... ⊕ Fn ⊗ ~vn ⊕ f~ Weiterhin: • Eine Zahl a ∈ A ist finit, wenn a > −∞ • Ein Vektor x = (x1 , ..., xd ) ∈ AdN ist finit, wenn x1 finit ist. • Eine Matrix F ∈ Ad×d ist finit, wenn F1,1 finit ist. • Eine lineare Funktion [f ] ist irgendwo finit, wenn für die dazugehörigen Matrizen Fi gilt ∃1 ≤ i ≤ n : Fi finit oder der dazugehörige Vektor f~ ist finit. 7 Die Relationen und & sind wie folgt definiert: • x y ⇔ (x > y) ∨ (x = y = −∞) • x & y ⇔ (x > y) ∨ (x = y) Die definierten Operationen, Relationen und Interpretationen erfüllen die nötigen Kriterien für eine schwach monotone Σ-Algebra. Mit dem folgenden abschließenden Theorem lässt sich der Terminierungsbeweis mithilfe der verwendeten arktischen Zahlen AN als Grundlage analog zum Terminierungsbeweis mithilfe der natürlichen Zahlen N bewerkstelligen: Theorem 5. Seien P , R TES über der Signatur Σ und (AdN , [·], , &) eine schwach monotone Σ-Algebra. Wenn: • Für alle Funktionssymbole f ∈ Σ ist die Interpretation [f ] irgendwo finit. • [l] & [r] für alle Regeln l → r ∈ P ∪ R. • P 0 ist die Menge aller Regeln l → r ∈ P , für die gilt [l] [r]. Dann gilt: SN ((P \P 0 )top /R) ⇒ SN (P/R) Beweis siehe [2]. Beispiel 5. Das TES P sei wie in Beispiel 4. Die Beweisstrategie folgt ebenfalls Beispiel 4. Schritt 1. DP (P ) = {g# (X, Y ) → f# (X); g# (X, Y ) → f# (f (X))} Schritt 2. Dimension d = 3 Schritt 3. 1 −∞ −∞ 1 0 −∞, f~ = −∞, F1 = −∞ −∞ −∞ 0 −∞ 1 −∞ −∞ 1 0 −∞, f~# = −∞ F#1 = −∞ −∞ −∞ 0 −∞ 2 −∞ 0 1 −∞ 0 0, G2 = −∞ −∞ G1 = −∞ −∞ −∞ 0 −∞ −∞ 2 0 −∞ 1 0 G#1 = −∞ 0 −∞, G#2 = −∞ 0 −∞ 0 0 −∞ 0 8 0 2 0, ~g = −∞ 0 −∞ −∞ 3 −∞, g~# = 0 0 0 Schritt 4. f (X) → X: Trivial X 2 1 g(X, Y ) → f (f (X)): ~g = −∞ & −∞ = f~ ⊕ F1 ⊗ f~ X −∞ −∞ 2 −∞ 0 2 −∞ −∞ 0 0 & −∞ 0 −∞ = F1 ⊗ F1 X und G1 = −∞ −∞ −∞ 0 −∞ −∞ 0 g# (X, Y ) → f# (X): 2 0 −∞ 1 −∞ −∞ 0 −∞ = F#1 X G#1 = −∞ 0 −∞ & −∞ −∞ 0 0 −∞ −∞ 0 3 1 und g~# = 0 & −∞ = f~# X 0 −∞ g# (X, Y ) → f# (f (X)): 2 −∞ −∞ 2 0 −∞ 0 −∞ = F#1 ⊗ F1 X G#1 = −∞ 0 −∞ & −∞ −∞ −∞ 0 −∞ 0 0 3 1 und g~# = 0 & −∞ = f~# ⊕ F#1 ⊗ f~ X 0 −∞ Schritt 5. 1 3 g# (X, Y ) → f# (X): g~# = 0 > −∞ = f~# X −∞ 0 1 3 g# (X, Y ) → f# (f (X)): g~# = 0 > −∞ = f~# ⊕ F#1 ⊗ f~ X −∞ 0 Die Regeln g# (X, Y ) → f# (X) und g# (X, Y ) → f# (f (X)) können also aus DP (P ) entfernt werden. Schritt 6. DP (P ) = ∅ ⇒ SN (P ). Fertig. 5 Implementierung Die tatsächliche Implementierung des vorgestellten Verfahrens folgt einem etwas anderen Schema als das Verfahren selbst. So werden Σ-Algebra und Interpretationen [f ] der Funktionssymbole f nicht im klassischen Sinne gesucht. Es geht 9 um die Erfüllung der konkreten Bedingungen (Constraints) bei der Wahl der Vektoren und Matrizen der Interpretation: ^ {(l → r) ∈ P ∪ DP (P ) : Li & Ri mit i = 1, ..., k und ~l & ~r} Wobei Li bzw. Ri die Koeffizienten-Matrizen der linken bzw. rechten Regelseite sind und ~l sowie ~r die Koeffizienten-Vektoren. Hinzu kommt die Bedingung um mindestens eine der Regeln aus DP (P ) löschen zu dürfen: _ {(l → r) ∈ DP (P ) : ~l 6= ~r} Die Leistung der Implementierung liegt also in der Umwandlung des Problems in eine aussagenlogische Formel. Das Lösen dieser entstehenden SATFormel wird auf einen separaten SAT-Solver ausgelagert. 6 Zusammenfassung Die Terminierungsanalyse mithilfe von Matrix-Interpretationen basiert also auf der Interpretation der Funktionssymbole in den mehrdimensionalen Raum der natürlichen oder arktischen Zahlen. Analog dazu gibts es auch die Möglichkeit der Interpretation als Polynomfunktionen über den natürlichen Zahlen. Mehrstellige Funktionssymbole werden als lineare und monotone Funktionen dargestellt. 0-stellige Funktionssymbole werden direkt als Vektoren interpretiert. Das Finden von Vektoren und Funktionen, die die beschriebenen Kriterien der Monotonie erfüllen, ist äquivalent mit der Terminierung des Termersetzungssystems. Die Automatisierung ist dabei nichts anderes, als die Umwandlung dieser Kriterien in eine aussagenlogische Formel, deren Lösung ausgelagert wird. Literatur [1] J. Endrullis, J. Waldmann, and H. Zantema: Matrix interpretations for proving termination of term rewriting. Journal of Automated Reasoning, Seiten 195-220, 2007. [2] A. Koprowski and J. Waldmann: Arctic Termination... Below Zero. Proceedings of the 19th International Conference on Rewriting Techniques and Applications, Seiten 202-216, 2008. [3] T. Arts and J. Giesl: Termination of term rewriting using dependency pairs. Theoretical Computer Science, Seiten 133-178, 2000. [4] J. Giesl: Termersetungssysteme. Vorlesungsskript, 2007. 10