IT training LNCS 6816 functional and constraint logic programming kuchen 2011 09 28

168 71 0
IT training LNCS 6816  functional and constraint logic programming kuchen 2011 09 28

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lecture Notes in Computer Science Commenced Publication in 1973 Founding and Former Series Editors: Gerhard Goos, Juris Hartmanis, and Jan van Leeuwen Editorial Board David Hutchison Lancaster University, UK Takeo Kanade Carnegie Mellon University, Pittsburgh, PA, USA Josef Kittler University of Surrey, Guildford, UK Jon M Kleinberg Cornell University, Ithaca, NY, USA Alfred Kobsa University of California, Irvine, CA, USA Friedemann Mattern ETH Zurich, Switzerland John C Mitchell Stanford University, CA, USA Moni Naor Weizmann Institute of Science, Rehovot, Israel Oscar Nierstrasz University of Bern, Switzerland C Pandu Rangan Indian Institute of Technology, Madras, India Bernhard Steffen TU Dortmund University, Germany Madhu Sudan Microsoft Research, Cambridge, MA, USA Demetri Terzopoulos University of California, Los Angeles, CA, USA Doug Tygar University of California, Berkeley, CA, USA Gerhard Weikum Max Planck Institute for Informatics, Saarbruecken, Germany 6816 Herbert Kuchen (Ed.) Functional and Constraint Logic Programming 20th International Workshop, WFLP 2011 Odense, Denmark, July 19, 2011 Proceedings 13 Volume Editor Herbert Kuchen Westfälische Wilhelms-Universität Münster Institut für Wirtschaftsinformatik Leonardo-Campus 3, 48149 Münster, Germany E-mail: kuchen@uni-muenster.de ISSN 0302-9743 e-ISSN 1611-3349 ISBN 978-3-642-22530-7 e-ISBN 978-3-642-22531-4 DOI 10.1007/978-3-642-22531-4 Springer Heidelberg Dordrecht London New York Library of Congress Control Number: 2011931683 CR Subject Classification (1998): F.4, F.3.2, D.3, I.2.2-5, I.1 LNCS Sublibrary: SL – Theoretical Computer Science and General Issues © Springer-Verlag Berlin Heidelberg 2011 This work is subject to copyright All rights are reserved, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, re-use of illustrations, recitation, broadcasting, reproduction on microfilms or in any other way, and storage in data banks Duplication of this publication or parts thereof is permitted only under the provisions of the German Copyright Law of September 9, 1965, in its current version, and permission for use must always be obtained from Springer Violations are liable to prosecution under the German Copyright Law The use of general descriptive names, registered names, trademarks, etc in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use Typesetting: Camera-ready by author, data conversion by Scientific Publishing Services, Chennai, India Printed on acid-free paper Springer is part of Springer Science+Business Media (www.springer.com) Preface This volume contains the proceedings of the 20th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2011), held in Odense, Denmark, July 19, 2011 at the University of Southern Denmark WFLP aims at bringing together researchers interested in functional programming, (constraint) logic programming, as well as the integration of the two paradigms It promotes the cross-fertilizing exchange of ideas and experiences among researchers and students from the different communities interested in the foundations, applications and combinations of high-level, declarative programming languages and related areas The previous editions of this workshop were: WFLP 2010 (Madrid, Spain), WFLP 2009 (Brasilia, Brazil), WFLP 2008 (Siena, Italy), WFLP 2007 (Paris, France), WFLP 2006 (Madrid, Spain), WCFLP 2005 (Tallinn, Estonia), WFLP 2004 (Aachen, Germany), WFLP 2003 (Valencia, Spain), WFLP 2002 (Grado, Italy), WFLP 2001 (Kiel, Germany), WFLP 2000 (Benicassim, Spain), WFLP 1999 (Grenoble, France), WFLP 1998 (Bad Honnef, Germany), WFLP 1997 (Schwarzenberg, Germany), WFLP 1996 (Marburg, Germany), WFLP 1995 (Schwarzenberg, Germany), WFLP 1994 (Schwarzenberg, Germany), WFLP 1993 (Rattenberg, Germany), and WFLP 1992 (Karlsruhe, Germany) Since its 2009 edition, the WFLP proceedings have been published by Springer in its Lecture Notes in Computer Science series, as volumes 5979 and 6559, respectively Each submission of WFLP 2011 was peer-reviewed by at least three Program Committee members with the help of some external experts The Program Committee meeting was conducted electronically in May 2011 with the help of the conference management system EasyChair After careful discussions, the Program Committee selected ten submissions for presentation at the workshop Nine of them were considered mature enough to be published in these proceedings On behalf of the Program Committee, I would like to thank all researchers, who gave talks at the workshop, contributed to the proceedings, and submitted papers to WFLP 2011 As Program Chair, I would also like to thank all members of the Program Committee and the external reviewers for their careful work Moreover, I am pleased to acknowledge the valuable assistance of the conference management system EasyChair and to thank its developer Andrei Voronkov for providing it Finally, all the participants of WFLP 2011 and I are deeply indebted to Peter Schneider-Kamp and his team, who organized the Odense Summer on Logic and Programming, which besides WFLP comprised the 21st International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR 2011), the 13th International ACM SIGPLAN Symposium on Principles and Practice of Declarative Programming (PPDP 2011), and the 4th International Workshop on Approaches and Applications of Inductive Programming (AAIP 2011) All the local organizers did a wonderful job and provided invaluable support in the preparation and organization of the overall event May 2011 Herbert Kuchen Organization Program Chair Herbert Kuchen University of Mă unster, Germany Program Committee Mara Alpuente Sergio Antoy Rafael Caballero-Rold´an Olaf Chitil Rachid Echahed Santiago Escobar Moreno Falaschi Sebastian Fischer Michael Hanus Julio Mari˜ no y Carballo Janis Voigtlă ander Universidad Politecnica de Valencia, Spain Portland State University, USA Universidad Complutense, Madrid, Spain University of Kent, UK Institut IMAG, Laboratoire Leibniz, France Universidad Polit´ecnica de Valencia, Spain University of Siena, Italy National Institute of Informatics, Tokyo, Japan Christian-Albrechts-Universită at Kiel, Germany Universidad Politecnica de Madrid, Spain Universită at Bonn, Germany Additional Reviewers Demis Ballis Ra´ ul Gutierrez Pablo Nogueira Local Organization Chair Peter Schneider-Kamp University of Southern Denmark, Odense, Denmark Table of Contents Functional Logic Programming KiCS2: A New Compiler from Curry to Haskell Bernd Braßel, Michael Hanus, Bjă orn Peemă oller, and Fabian Reck New Functional Logic Design Patterns Sergio Antoy and Michael Hanus 19 XQuery in the Functional-Logic Language Toy Jesus M Almendros-Jim´enez, Rafael Caballero, Yolanda Garc´ıa-Ruiz, and Fernando S´ aenz-P´erez 35 Functional Programming Size Invariant and Ranking Function Synthesis in a Functional Language Ricardo Pe˜ na and Agustin D Delgado-Mu˜ noz 52 Memoizing a Monadic Mixin DSL Pieter Wuille, Tom Schrijvers, Horst Samulowitz, Guido Tack, and Peter Stuckey 68 A Functional Approach to Worst-Case Execution Time Analysis V´ıtor Rodrigues, M´ ario Florido, and Sim˜ ao Melo de Sousa 86 Building a Faceted Browser in CouchDB Using Views on Views and Erlang Metaprogramming Claus Zinn 104 Integration of Constraint Logic and Object-Oriented Programming Logic Java: Combining Object-Oriented and Logic Programming Tim A Majchrzak and Herbert Kuchen 122 Term Rewriting On Proving Termination of Constrained Term Rewrite Systems by Eliminating Edges from Dependency Graphs Tsubasa Sakata, Naoki Nishida, and Toshiki Sakabe 138 Author Index 157 On Proving Termination of Constrained Term Rewrite Systems ⎧ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎨ (1) (2) (3) (4) (5) (6) (7) DP (R1 ) = (8) ⎪ ⎪ ⎪ ⎪ ⎪ (9) ⎪ ⎪ ⎪ ⎪ (10) ⎪ ⎪ ⎪ ⎪ ⎪ (11) ⎪ ⎪ ⎪ (12) ⎪ ⎪ ⎪ ⎪ (13) ⎪ ⎪ ⎩ (14) f (x)→u (x, 0, s(0)) f (x)→s (0) u (x, i, z)→u (x, s(i), plus(z, f(i))) u (x, i, z)→s (i) u (x, i, z)→plus (z, f(i)) u (x, i, z)→f (i) plus (x, s(y))→s (plus(x, y)) plus (x, s(y))→plus (x, y) plus (x, p(y))→p( plus(x, y)) plus (x, p(y))→plus (x, y) minus (x, s(y))→p (minus(x, y)) minus (x, s(y))→minus (x, y) minus (x, p(y))→s (minus(x, y)) minus (x, p(y))→minus (x, y) 143 ⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎬ [[x i]] [[x i]] [[x i]] [[x i]] [[s(y) 0]] [[s(y) 0]] ⎪ ⎪ ⎪ ⎪ [[0 p(y)]] ⎪ ⎪ ⎪ ⎪ [[0 p(y)]] ⎪ ⎪ ⎪ ⎪ [[s(y) 0]] ⎪ ⎪ ⎪ ⎪ [[s(y) 0]] ⎪ ⎪ ⎪ ⎪ [[0 p(y)]] ⎪ ⎪ ⎪ ⎭ [[0 p(y)]] Fig The dependency pairs of R1 Theorem A constrained TRS R is terminating iff there exists no infinite minimal DP (R)-chain Proof The proof is similar to the case of TRSs (cf Theorem in [2]) To prove termination of a constrained TRS R, we may show that there is no infinite minimal DP (R)-chain To this end, we show a criterion for an S ⊆ DP (R) to reduce the non-existence of infinite minimal S-chains to the non-existence of both S-innumerable chains and infinite minimal S -chains for some of proper subsets S of S Let A be a set The power set of A is denoted by Power(A) A set B in Power(A) is called maximal in X ⊆ Power(A) if B = C whenever B ⊆ C for any C ∈ X Theorem Let R be a constrained TRS, S ⊆ DP (R) and X ⊆ Power(S) such that there exists no S -innumerable chain for any S ∈ X There exists no infinite (minimal) S-chain iff there exists no infinite (minimal) S -chain for any maximal S in Power(S) \ X The proof can be found in [29] Thanks to Theorem 7, to prove the non-existence of infinite chains, we may show that for some X ⊆ Power(S), – there is no S -innumerable chain for any S in X, and – there is no infinite minimal S -chain for any maximal set S in Power(S)\X This scheme is helpful to show soundness of DP processors shown later Finally, we explain how Theorem helps us to show termination, by extending Theorem 18 in [2] to constrained TRSs Definition Let R be a constrained TRS and S ⊆ DP (R) The dependency graph of S and R, written as DG(S, R), is a directed graph (V, E) such that V = S and E = {(u, v) | u, v ∈ V, the sequence “u, v” is an S-chain} The dependency graph of DP (R) and R is called the dependency graph of R, and we denote DG(DP (R), R) by DG(R) 144 T Sakata, N Nishida, and T Sakabe (2) (6) (1) (4) (3) (5) (9) (10) (13) (14) (7) (8) (11) (12) Fig The dependency graph of R1 Theorem Let R be a constrained TRS and S ⊆ DP (R) There exists no infinite (minimal) S-chain iff there exists no infinite (minimal) S -chain for any S that is the vertex set of a strongly connected component (SCC, for short) of DG(S, R) Proof Let X = {S | DG(S , R) is not an SCC of DG(S, R)} Then, this theorem follows from Theorem since all of the following hold clearly: – there exists no S -innumerable chain for any S ∈ X, and – maximal sets in a Power(S) \ X are vertex sets of SCCs of DG(S, R) Example 10 The dependency graph of R1 in Fig is illustrated in Fig The vertex sets of SCCs of DG(R1 ) are {(1), (3), (6)}, {(8)}, {(10)}, {(12)} and {(14)} To prove termination of R1 , it is suffices to show the non-existence of infinite minimal chains for all of them As for the case of TRSs, the dependency graph is not computable for every constrained TRS Thus, for constrained TRSs, we employ approximation techniques of dependency graphs for TRSs since for any constrained TRS R, the dependency graph of the TRS obtained from R by removing constraints from rewrite rules is an over approximation of DG(R) In the next section, we will show one of the approaches to improve over approximated dependency graphs Necessary Condition of Two Dependency Pairs for Forming a Chain In this section, for locally sound constrained TRSs, we present a necessary condition of two dependency pairs s → t [[φ]], u → v [[ψ]] for forming a chain For two terms t, u (the right-hand side of s → t [[φ]] and the left-hand side of u → v [[ψ]]) and for a set V of variables, we construct a constraint η such that for any substitutions σ, θ with Ran(σ|V ∪fv(φ) ) ⊆ T (G, V), the constraint η(σ ∪ θ) is valid if ∗ tσ − → uθ Thus, satisfiability of φ ∧ η ∧ ψ is a necessary condition of the two dependency pairs for forming a chain The set V is used to specify variables that are substituted by terms in T (G, V) First, we show how to construct the constraint η mentioned above Definition 11 Let R be a locally sound constrained TRS, V ⊆ V, t and u be terms in T (F ∪ G ∪ DR , V) such that t ≡ C[t1 , · · · , tn ], u ≡ C[u1 , · · · , un ], and root(ti ) = root(ui ) implies root(ti ) ∈ DR for some context C[ ] over T (CR ∪DR ∪ On Proving Termination of Constrained Term Rewrite Systems 145 { }, V) Note that for any pair of terms t and u, the context C[ ] is unique The n constraint reachR,V (C[t1 , · · · , tn ], C[u1 , · · · , un ]) is defined as i=1 bi such that ⎧ ti ui if ti ∈ T (G, V ), ui ∈ T (G, V), and root(ti ) ∈ CR implies ui ∈ V ⎪ ⎪ ⎨⊥ if ti ∈ T (G, V ) and ui ∈ T (G, V) bi = ⎪ ⊥ if root(ti ) ∈ CR ∪ DR and ui ∈ V ⎪ ⎩ otherwise ui For the first case of the construction of bi , we let bi be the formula ti since R is locally sound and then for all substitutions σ and θ, the constraint ∗ ti σ ui θ is valid w.r.t M whenever ti σ − →R ui θ and Ran(σ|V ) ⊆ T (G, V) For the second and third cases, we let bi be the invalid constraint ⊥ since any instance of ti cannot be reduced to some instance of ui For any other cases, ∗ we let bi be since there may exist substitutions σ and θ such that ti σ − →R ui θ Since C[ ] is a constructor context of R and then the establishment of ∗ C[t1 , · · · , tn ]σ − →R C[u1 , · · · , un ]θ coincides with that of all the subderivations ∗ ∗ n t1 σ − →R u1 θ, · · · , tn σ − →R un θ, we construct the constraint i=1 bi for terms t and ∗ u In summary, tσ − →R uθ implies validity of the constraint (reachR,V (t, u))(σ∪θ), i.e, unsatisfiability of reachR,V (t, u) implies non-existence of substitutions σ and ∗ θ such that tσ − →R uθ Lemma 12 Let R be a locally sound constrained TRS, t and u be terms over T (F ∪ G ∪ DR , V) such that Var(t) ∩ Var(u) = ∅, V be a subset of V such that Var(u) ∩ V = ∅, and σ, θ be substitutions such that Ran(σ|V ) ⊆ T (G, V) If sσ ∗ − →R tθ, then – Ran((σ ∪ θ)|fv(reachR,V (t,u)) ) ⊆ T (G, V), and – (reachR,V (s, t))(σ ∪ θ) is valid w.r.t M The proof can be found in [29] Example 13 Consider the constrained TRS R1 in Fig and terms plus (x, y) and plus (x , p(y )) We have reachR1 ,{y} (plus (x, y), plus (x , p(y ))) = ∧ y p(y ) Let σ and θ be substitutions such that yσ ∈ T (GPA , V) Then, (σ ∪ ∗ θ) is valid w.r.t MPA if xσ − p(y ))(σ ∪ θ) is also →R1 x θ Moreover, (y ∗ valid w.r.t MPA if yσ − →R1 p(y )θ since R1 is locally sound Thus, the constraint (reachR1 ,{y} (plus (x, y), plus (x , p(y ))))(σ ∪ θ) is valid w.r.t MPA if ∗ plus (x, y)σ − →R1 plus (x , p(y ))θ Consider terms plus (x, y) and f (x ) We have reachR1 ,{y} (plus (x, y), f (x )) = ⊥, an unsatisfiable constraint The unsatisfia∗ bility tells us that there is no substitutions σ and θ such that plus (x, y)σ − →R1 f (x )θ Next we define a constraint of which satisfiability is a necessary condition of two dependency pairs for forming a chain Definition 14 Let R be a constrained TRS, s → t [[φ]], u → v [[ψ]] ∈ DP (R), and V ⊆ Var(t) Then, we denote the constraint φ ∧ reachR,V ∪fv(φ) (t, u) ∧ ψ by chain(s → t [[φ]], u → v [[ψ]], V ) 146 T Sakata, N Nishida, and T Sakabe Theorem 15 Let R be a locally sound constrained TRS, s → t [[φ]], u → v [[ψ]] ∈ DP (R), u → v [[ψ ]] be a renamed variant of u → v [[ψ]] such that Var(s) ∩ Var(u ) = ∅, V be a subset of Var(t), and σ, θ be substitutions such that Ran(σ|V ∪fv(φ)∪fv(ψ ) ) ⊆ T (G, V) If φσ and ψ θ are valid w.r.t M and tσ ∗ − →R v θ then – Ran(σ|fv(chain(s→t [[φ]],u →v [[ψ ]],V )) ) ⊆ T (G, V), and – (chain(s → t [[φ]], u → v [[ψ ]], V ))(σ ∪ θ) is valid w.r.t M, i.e., if the sequence s → t [[φ]], u → v [[ψ]] is a DP (R)-chain, then chain(s → t [[φ]], u → v [[ψ ]], ∅) is satisfiable w.r.t M Proof This theorem follows from Lemma 12 Thanks to Theorem 15, we obtain a sufficient condition of two dependency pairs that form no chain Corollary 16 Let R be a locally sound constrained TRS, S ⊆ DP (R), s → t [[φ]], u → v [[ψ]] ∈ S, u → v [[ψ ]] be a renamed variant of u → v [[ψ]] such that Var(s) ∩ Var(u) = ∅ If chain(s → t [[φ]], u → v [[ψ ]], ∅) is unsatisfiable w.r.t M, then s → t [[φ]], u → v [[ψ]] is not an S-chain Example 17 Consider the dependency pairs (8) and (10) of DP (R1 ) in Fig Let (10) be a renamed variant of (10) such that x and y are renamed into x and y , respectively Then, we have chain((8), (10) , ∅) = s(y) ∧ ( ∧ y p(y )) ∧ p(y ) This constraint corresponds to y + > ∧ y = y − ∧ > y − over integers by means of MPA , and this is unsatisfiable Thus, we can know that (8), (10) is not a DP (R1 )-chain and then there is no edge from (8) to (10) The sufficient condition in Corollary 16 for two dependency pairs that form no chain when constrained TRSs are locally sound is useful for improving overapproximated dependency graphs in employing approximation techniques for TRSs, i.e., if chain(s → t [[φ]], u → v [[ψ ]], ∅) is unsatisfiable w.r.t M then we may remove an edge (s → t [[φ]], u → v [[ψ]]) from over-approximated graphs The other possible approach to the improvement of over-approximated dependency graphs is the one via the extension of unification in computing edges [13,14] However, we did not take this approach since constraints corresponding to the necessary condition are useful in developing DP processors shown later DP Framework for Constrained TRSs In this section, we extend the DP framework for TRSs [19] to constrained TRSs Let R be a constrained TRS A subset of DP (R) is called a dependency pair problem (of R) (DP problem, for short).3 A DP problem S is called finite if there is no infinite minimal S-chain, and called infinite if it is not finite or R This paper does not use pairs of (S, R) as DP problems since the second component R is not modified anywhere On Proving Termination of Constrained Term Rewrite Systems 147 is not terminating A dependency pair processor (DP processor, for short) is a function P roc which takes a DP problem as input and returns a finite set of DP problems A DP processor P roc is called sound if for any DP problem S, the problem S is finite whenever all DP problems in P roc(S) are finite P roc is called complete if for any DP problem S, the problem S is infinite whenever P roc(S) contains infinite DP problems Therefore, a termination proof starts with the initial DP problem DP (R) and applies sound DP processors until an empty set of DP problems is obtained Theorem 18 A constrained TRS R is terminating iff the DP problem DP (R) is finite Moreover, R is not terminating iff the DP problem DP (R) is infinite Proof This theorem follows from Theorem As a useful tool to prove soundness and completeness of DP processors, we adapt Theorem to DP processors Theorem 19 Let R be a constrained TRS A DP processor P roc is sound and complete if for any S ⊆ DP (R), there exists no S -innumerable chain for any S ⊆ S such that S \ S = ∅ for all S ∈ P roc(S) Proof We only prove soundness of P roc since completeness is trivial Assume that all problems in P roc(S) are finite Let X = {S | ∀S ∈ P roc(S) S \ S = ∅} and there is no S -innumerable chain for any S ∈ X Then, Power(S) \ X = {S | ∃S ∈ P roc(S) S ⊆ S } Thus, all maximal sets in a Power(S) \ X are included in P roc(S) Therefore, it follows from Theorem that S is finite We extend the DP processor w.r.t dependency graphs [2] to constrained TRSs Theorem 20 Let R be a constrained TRS and S ⊆ DP (R) Then, the DP processor P roc, which takes a DP problem S and outputs vertex sets of SCCs of DG(S, R), is sound and complete Proof Let X = {S | ∀S ∈ P roc(S) S \ S = ∅} There exists no S innumerable chain for any S ∈ X since S is not a vertex set of strongly connected graphs which are included in DG(S, R) Thus, it follows from Theorem 19 that the processor is sound and complete Note that we can employ over approximation techniques for computing dependency graphs in Theorem 20 The DP processor based on the subterm criterion [22] can be straightforwardly extended to constrained TRSs, by ignoring the constraints of dependency pairs Theorem 21 Let R be a constrained TRS, S ⊆ DP (R), π be a simple projection from DR to natural numbers such that ≤ π(f ) ≤ n for any n-ary marked symbol f ∈ DR Moreover, let π = {s → t [[φ]] | s|π(root(s)) t|π(root(t)) } and t|π(root(t)) } Then, the following processor P roc π = {s → t [[φ]] | s|π(root(s)) is sound and complete: P roc(S) = {S \ {S} π} if S ⊆ π otherwise 148 T Sakata, N Nishida, and T Sakabe The proof can be found in [29] Example 22 Consider DP (R1 ) in Fig For the initial DP problem DP (R1 ), the DP processor in Theorem 20 converts DP (R1 ) into {{(1), (3), (6)}, {(8)}, {(10)}, {(12)}, {(14)}} Then, the DP processor in Theorem 21 transforms {(8)}, {(10)}, {(12)} and {(14)} into {∅} Thus, to prove termination of R1 , it is suffices to show that {(1), (3), (6)} is finite In developing DP processors, it is useful to refer the constraints of dependency pairs For example, the DP processor based on dependency graphs employs the constraints via the dependency graphs that are improved by the sufficient condition in Corollary 16, while the DP processor based the subterm criterion cannot employ the constraints To show finiteness of the DP problem {(1), (3), (6)} in Example 22, the DP processor based on polynomial interpretations over integers [20,22,15] seems useful Thus, in the rest of this section, we extend the DP processor based on polynomial interpretations to constrained TRSs The basic idea of the DP processor is to reduce an infinite ground derivation sequence obtained from an S-innumerable chain into an infinite strictlydecreasing sequence of integers with a lower bound The lower bound leads us to a contradiction and hence the non-existence of S-innumerable chains In ordering a dependency pair s → t [[φ]] by > over polynomial interpretations and in detecting a lower bound for some s → t [[φ ]], φ and φ are sometimes useful, e.g., given a polynomial interpretation P ol, the validity of “φ implies P ol(s) > P ol(t)” and “∃n ∈ Z φ implies P ol(s ) > n” is enough If the constraints of dependency pairs are over integer arithmetics, we can consider these conditions as arithmetic constraints over integers To this end, we employ tree homomorphisms (cf Chapter in [11]) from marked symbols to the set of terms interpreted to integers Definition 23 Let F1 and F2 be sets of function symbols such that F1 ∩F2 = ∅, A tree homomorphism H is a function from F1 to T (F2 , V) such that H(f ) ∈ T (F2 , {x1 , · · · , xn }) for any n-ary function symbol f ∈ F1 The application of H to terms in T (F1 ∪ F2 , V) is defined as follows: H(x) = x for x ∈ V, H(f (t1 , · · · , tn )) = H(f ){xi → H(ti ) | ≤ i ≤ n} for f ∈ F1 , and H(g(t1 , · · · , tn )) = g(H(t1 ), · · · , H(tn )) for g ∈ F2 Note that for a tree homomorphism H from DR to T (F ∪ G, V) and terms t ∈ T (F ∪ G, V) and f (t1 , · · · , tn ) ∈ T (F ∪ G, V), we have that H(t) ≡ t and H(f (t1 , · · · , tn ) ) ≡ H(f ){xi → ti | ≤ i ≤ n} Example 24 Consider the term u (x, s(i), plus(z, f(i))) in Fig and a tree homomorphism H : DR → T (F ∪ GPA , V) such that H(u ) = minus(x1 , x2 ) Then, we have H(u (x, s(i), plus(z, f(i)))) = minus(x, s(i)) By imposing tree homomorphisms H on a condition “H(s), H(t) ∈ T (G, V) for all dependency pairs s → t [[φ]]” shown later, we can use negative integer as coefficients in polynomials, as well as [22,20,13,16,14] On Proving Termination of Constrained Term Rewrite Systems 149 Finally, we propose a simplified extension of the DP processor based on polynomial interpretations over integers Let MZ be a structure for (GZ , PZ , V) such that ∈ PZ , the universe Z is the set of integers and MZ = {n > m | n, m ∈ Z} Theorem 25 Let R be a locally sound constrained TRS over (F , GZ , PZ , V, MZ ), S ⊆ DP (R), and H be a tree homomorphism4 from DR to T (F ∪ GZ , V) such that H(s), H(t) ∈ T (GZ , V) for any s → t [[φ]] ∈ S Moreover, let – S = {s → t [[φ]] | ∀u → v [[ψ]] ∈ S chain(s → t [[φ]], u → v [[ψ ]], Var(H(s))) ⇒ H(s) H(t) is valid w.r.t MZ }, – S = {s → t [[φ]] | ∀u → v [[ψ]] ∈ S chain(s → t [[φ]], u → v [[ψ ]], Var(H(s))) ⇒ H(s) H(t) ∨ H(s) H(t) is valid w.r.t MZ }, – Sbound = {s → t [[φ]] | ∃sbound ∈ T (GZ ) ∀u → v [[ψ]] ∈ S chain(s → t [[φ]], u → v [[ψ ]], Var(H(s))) ⇒ H(s) sbound is valid w.r.t MZ }, – Sfilter = {s → t [[φ]] | Var(H(s)) ⊆ fv(φ)}, and – Sprsrv = {s → t [[φ]] | Var(H(t)) ⊆ fv(φ) ∪ Var(H(s))}, where u → v [[ψ ]] is a renamed variant of u → v [[ψ]] such that Var(s) ∩ Var(u ) = ∅ If none of S ∩ S , S ∩ Sbound and S ∩ Sfilter is empty and S ⊆ S ∩Sprsrv , then there exists no S-innumerable chain, i.e., the following processor P roc is sound and complete: P roc(S) = {S \ S , S \ Sbound , S \ Sfilter } if S ⊆ S ∩ Sprsrv {S} otherwise The proof can be found in [29] The sets Sfilter and Sprsrv in Theorem 25, original ones of this paper, guarantee that every S-innumerable chain with ground substitutions has a postfix chain from which we can obtain an infinite sequence of terms in T (GZ ) by applying a tree homomorphism H implementing a polynomial interpretation over integers More precisely, for an S-innumerable chain ∗ s1 → t1 [[φ1 ]], s2 → t2 [[φ2 ]], · · · such that ti σi − →R si+1 σi+1 , φi σi is valid w.r.t MZ and si σi , ti σi are ground, Sfilter guarantees H(sk σk ) ∈ T (GZ ) for some k, and Sprsrv implies H(ti σi ), H(si+1 σi+1 ) ∈ T (GZ ) for all j ≥ k, i.e., we have an infinite sequence H(sk σk ), H(tk σk ), H(sk+1 σk+1 ), H(tk+1 σk+1 ), · · · of terms in T (GZ ) Moreover, local soundness of R implies that (H(ti σi ))MZ = (H(si+1 σi+1 ))MZ for all i ≥ k For this reason, the DP processor needs not consider rewrite rules in R The sets S , S and Sbound in Theorem 25, variants of the usual ones, implies that (H(si σi ))MZ ≥ (H(ti σi ))MZ for all i ≥ k, the strictly decreasing relation > appears infinitely many times, and there is a lower bound m (= (sbound )MZ ) such that (H(si σi ))MZ > m for all i ≥ k Thus, the S-innumerable chain leads us to a contradiction In Theorem 25, we restrict structures to ones with the set of integers as the universe However, it is possible to generalize Theorem 25 to structures such that a binary predicate symbol is interpreted to a non-infinitesimal one [20] In practical, we use tree homomorphisms H such that H(f ) can be interpreted into a polynomial expression w.r.t the given structure MZ for any f ∈ DR , e.g., H(u ) = minus(x1 , x2 ) in Example 24 150 T Sakata, N Nishida, and T Sakabe Example 26 Consider the DP problem {(1), (3), (6)} in Example 22 Let H be a tree homomorphism such that H(f ) = H(u ) = x1 and P roc be the DP processor in Theorem 25 Then, P roc({(1), (3), (6)}) is {{(3), (6)}, {(1)}} since both S and Sbound include (1), and Sfilter includes both (3) and (6) We succeed in detecting a lower bound via (1) This is not possible if the processor does not refer the constraints of the dependency pairs following after (1), i.e., the case with Sbound = {s → t [[φ]] | ∃sbound ∈ T (GZ ) φ ⇒ H(s) sbound is valid w.r.t MZ } For this reason, a straightforward extension of the DP processor in [13,14] to our constrained TRSs is not useful to show that the DP problem {(1), (3), (6)} is finite After applying the DP processor in Theorem 20 to {(3), (6)} and {(1)}, the remaining DP problem is {(3)} Given a tree homomorphism H such that H (u ) = minus(x1 , x2 ), the processor in Theorem 25 converts {(3)} to {∅} and thus {(1), (3), (6)} is finite Therefore, R1 is terminating Note that termination of the C program in Fig and of the corresponding integer rewriting system of R1 could not be proved by AProVE 1.2 [18,16] Graph-Handling DP Framework for Constrained TRSs In this section, we extend the DP framework to the one such that DP processors handle subgraphs of dependency graphs, and show how to adapt the existing DP processors to such ones Moreover, we extend the DP processor in Theorem 25 so that it eliminates none of nodes but some of edges Example 27 Consider the constrained TRS R2 such that R2 = R1 ∪{u(x, i, z) → u(p(x), p(i), z) [[i 0]]} To prove termination of R2 , it is suffices to show that 0]]} is fithe DP problem {(1), (3), (6), (15) u (x, i, z) → u (p(x), p(i), z) [[i nite Let H be a tree homomorphism such that H(f ) = H(u ) = x1 as well as Example 26 For the DP problem {(1), (3), (6), (15)}, the DP processor in Theorem 25 outputs {{(1), (3), (6), (15)}} since the sequence “(1), (15)” cannot guarantees the existence of a lower bound of infinite chains containing infinitely many “(1), (15)” and thus Sbound does not include (1) However, any of the sequences “(1), (3)”, “(1), (6)”, “(3), (15)”, “(15), (3)” and “(15), (6)” guarantees the existence of lower bounds for infinite chains containing infinitely many of the sequence Thus, it is enough to consider infinite chains such that the sequences not appears in the infinite chain All of such infinite chains can be obtained from graphs such that edges which correspond to the sequence are eliminated from DG({(1), (3), (6), (15)}, R2 ) Therefore, it suffices to show finiteness of the DP problems {(3)} and {(15)} that are SCCs of the graph obtained from DG({(1), (3), (6), (15)}, R2 ) by eliminating edges ((1), (3)), ((1), (6)), ((3), (15)), ((15), (3)) and ((15), (6)) (Fig 4) Here, we define notations related to graphs Let G be a graph (V, E) The vertex and edge sets of G are denoted by V (G) and E(G), respectively, i.e., V = V (G) and E = E(G) Let V ⊆ V G\V denotes the graph obtained from G by removing V from the vertex set and by removing edges related to V from the edge set, i.e., G\V = (V (G) \ V , E(G) \ (V (G) × V ∪ V × V (G))) The set On Proving Termination of Constrained Term Rewrite Systems (3) (6) (1) (15) (3) (6) (1) 151 (15) Fig DG({(1), (3), (6), (15)}, R2 ) (left), and the graph (right) obtained from the left one by eliminating edges ((1), (3)), ((1), (6)), ((3), (15)), ((15), (3)) and ((15), (6)) of subgraphs of G is denoted by Subg(G), i.e., Subg(G) = {(V , E ) | V ⊆ V (G), E ⊆ E(G) ∩ (V × V )} A graph G1 in Subg(G) is called maximal in X ⊆ Subg(G) if G1 = G2 whenever G1 is a subgraph of G2 for all G2 ∈ X We first extend chains to subgraphs of dependency graphs, and then adapt the termination criterion (Theorems and 7) to the extended chains Definition 28 Let R be a constrained TRS and G be a subgraph of DG(R) A V (G)-chain s1 → t1 [[φ1 ]],s2 → t2 [[φ2 ]],· · · is called a G-chain (of R) if (si → ti [[φi ]], si+1 → ti+1 [[φi+1 ]]) ∈ E(G) for all i ≥ The G-chain is called minimal if it is a minimal V (G)-chain Moreover, the infinite G-chain is called G-innumerable if it is a V (G)-innumerable chain and for every edge (s → t [[φ]], u → v [[ψ]]) ∈ E(G), the subsequence s → t [[φ]], u → v [[ψ]] appears infinitely many times in the chain Theorem 29 A constrained TRS R is terminating iff there exists no infinite minimal DG(R)-chain Theorem 30 Let R be a constrained TRS, G be a subgraph of DG(R) and X ⊆ Subg(G) such that there exists no G -innumerable chain for any G ∈ X There exists no infinite (minimal) G-chain iff there exists no infinite (minimal) G -chain for any maximal graph G in Subg(G) \ X The proofs of Theorem 29 and 30 can be found in [29] Next, we extend the DP framework to the one such that DP processors handle subgraphs of dependency graphs Let R be a constrained TRS A subgraph of DG(R) is called a graph-based DP problem (of R) (GDP problem, for short) A GDP problem G is called finite if there is no infinite minimal G-chain A GDP problem G is called infinite if it is not finite or R is not terminating A graph-handling DP processor (GDP processor, for short) is a function P roc which takes a GDP problem as input and returns a finite set of GDP problems A GDP processor P roc is called sound if for any GDP problem G, the problem G is finite whenever all GDP problems in P roc(G) are finite P roc is called complete if for any GDP problem G, the problem G is infinite whenever P roc(G) contains infinite GDP problems Therefore, a termination proof starts with the initial GDP problem DG(R) and applies sound GDP processors until an empty graph of GDP problems is obtained Theorem 31 A constrained TRS R is terminating iff the GDP problem DG(R) is finite Moreover, R is not terminating iff the GDP problem DG(R) is infinite Proof This theorem follows from Theorem 29 152 T Sakata, N Nishida, and T Sakabe As a tool to show soundness and completeness of GDP processors, we extend Theorem 19 as follows Theorem 32 Let R be a constrained TRS A GDP processor P roc is sound and complete if for any G which is a subgraph of DG(R), there exists no G innumerable chain for any G such that V (G )\V (G ) = ∅ or E(G )\E(G ) = ∅ for all G ∈ P roc(G) Proof The proof is similar to that of Theorem 19 Next, we show how to adapt the existing DP processors to GDP problems Theorem 33 Let R be a constrained TRS, G be a subgraph of DG(R) and P rocp be a DP processor The following GDP processor P rocg is sound if P rocp is sound: P rocg (G) = {DG(S, R) | S ∈ P rocp (V (G))} if V (G) ∈ P rocp (V (G)) {G} otherwise (1) Suppose that for any infinite (minimal) V (G)-chain, there exists some graph S ∈ P rocp (V (G)) such that there exists an infinite (minimal) S-chain as a postfix chain of the V (G)-chain Then, the following GDP processor P rocg is sound and complete if P rocp is sound and complete: P rocg (G) {(S, E(G) ∩ S ×S) | S ∈ P rocp (V (G))} if V (G) ∈ P rocp (V (G)) (2) = {G} otherwise The proof can be found in [29] The first adaptation (1) in Theorem 33 is naive and the processor re-computes dependency graphs Due to the re-computation, all the eliminated edges are restored and thus the application of the processor is sometimes meaningless Moreover, almost all the existing practical and nontransformational5 DP processors (e.g., processors based on dependency graphs, reduction pairs [25] and the subterm criterion [22]) satisfy the assumption that is required to employ (2) in Theorem 33 For these reasons, we prefer (2) in Theorem 33 to (2) Thanks to Theorem 33, the DP processor in Theorem 20 can be adapted to GDP problems However, the adapted processor is not always useful since for a GDP problem G such that if DG(V (G), R) is an SCC then it outputs not a set of SCCs of G but {G} For this reason, we extend the DP processor in Theorem 20 to a GDP one, without the construction in Theorem 33 Theorem 34 Let R be a constrained TRS and G be a subgraph of DG(R) Then, the GDP processor, which takes a GDP problem G and outputs SCCs of G, is sound and complete Proof Let X = {G | G is not a subgraph of for any SCC of G} For all G ∈ X, there exists no G -innumerable chain since G is not a strongly connected graph Thus, the processor is sound and complete it follows from Theorem 32 A DP processor is called non-transformational if it returns sets of dependency pairs On Proving Termination of Constrained Term Rewrite Systems 153 Finally, we extend the DP processor in Theorem 25 to a GDP one that eliminates none of nodes but some of edges For a dependency pair, the processor in Theorem 25 does not always succeed in detecting a lower bound or in ordering by > with all the dependency pairs following after the focusing dependency pair, while it is possible to for some of the accident dependency pairs As stated in Example 27, eliminating the edges from the focusing dependency pair to the accident dependency pairs is sound for proving termination Theorem 35 Let R be a locally sound constrained TRS over (F , GZ , PZ , V, MZ ), G be a subgraph of DG(R), and H be a tree homomorphism from DR to T (F ∪ GZ , V) such that H(s), H(t) ∈ T (G, V) for any s → t [[φ]] ∈ V (G) Moreover, let – E = {(s → t [[φ]], u → v [[ψ]]) | chain(s → t [[φ]], u → v [[ψ ]], Var(H(s))) ⇒ H(s) H(t) is valid w.r.t MZ }, – E = {(s → t [[φ]], u → v [[ψ]]) | chain(s → t [[φ]], u → v [[ψ ]], Var(H(s))) ⇒ H(s) H(t) ∨ H(s) H(t) is valid w.r.t MZ }, – Ebound = {(s → t [[φ]], u → v [[ψ]]) | ∃sbound ∈ T (GZ ), chain(s → t [[φ]], u → v [[ψ ]], Var(H(s))) ⇒ H(s) sbound is valid w.r.t MZ }, – Sfilter = {s → t [[φ]] | Var(H(s)) ⊆ fv(φ)}, and – Sprsrv = {s → t [[φ]] | Var(H(t)) ⊆ fv(φ) ∪ Var(H(s))}, where u → v [[ψ ]] is a renamed variant of u → v [[ψ]] such that Var(s) ∩ Var(u ) = ∅ If none of E(G) ∩ E , E(G) ∩ Ebound and V (G) ∩ Sfilter is empty, E(G) ⊆ E and V (G) ⊆ Sprsrv , then there exists no G-innumerable chain, i.e., the following processor P roc is sound and complete: P roc(G) = ⎧ ⎨ {(V (G), E(G) \ E ), (V (G), E(G) \ Ebound ), (G\Sfilter )} ⎩ {G} if V (G) ⊆ Sprsrv and E(G) ⊆ E otherwise Proof The proof is similar to that of Theorem 25 Example 36 Consider the constrained TRS R2 in Example 27 again Let H be a tree homomorphism such that H(f ) = H(u ) = x1 For the GDP problem DG({(1), (3), (6), (15)}, R2 ), the GDP processor in Theorem 35 outputs the three GDP problems illustrated in Fig By using the GDP processors in Theorems 34 and 35, it is possible to show that these three GDP problems are finite and hence DG({(1), (3), (6), (15)}, R2 ) is finite Therefore, R2 is terminating (3) (6) (1) (15) (3) (6) (1) (15) (1) (15) Fig the GDP problems obtained from DG({(1), (3), (6), (15)}, R2 ) by applying the GDP processor in Theorem 35 154 T Sakata, N Nishida, and T Sakabe Conclusion In this paper, we have extended both the termination criterion w.r.t dependency pairs and the DP framework to constrained TRSs, and have proposed a DP processor, which is a simplified combination of the lower bound detection and the polynomial interpretation method over integers Then we have extended the DP framework for constrained TRSs to the GDP framework and have shown how to adapt the existing DP processors to the GDP framework As future work, we will adapt the GDP framework for constrained TRSs to transformational processors such as the argument filtering processor [19], and will implement the GDP framework Furthermore, we will improve the GDP processors, e.g., the one in Theorem 35 References Armando, A., Rusinowitch, M., Stratulat, S.: Incorporating decision procedures in implicit induction J Symb Comput 34(4), 241–258 (2002) Arts, T., Giesl, J.: Termination of term rewriting using dependency pairs Theor Comput Sci 236(1-2), 133–178 (2000) Baader, F., Nipkow, T.: Term Rewriting and All That Cambridge University Press, United Kingdom (1998) Borralleras, C., Rubio, A.: Orderings and constraints: Theory and practice of proving termination In: Comon-Lundh, H., Kirchner, C., Kirchner, H (eds.) Jouannaud Festschrift LNCS, vol 4600, pp 28–43 Springer, Heidelberg (2007) Bouhoula, A., Rusinowitch, M.: Implicit induction in conditional theories Journal of Automated Reasoning 14(2), 189–235 (1995) Bouhoula, A., Jacquemard, F.: Automated induction for complex data structures In: CoRR, abs/0811.4720 (2008) Bouhoula, A., Jacquemard, F.: Automated induction with constrained tree automata In: Armando, A., Baumgartner, P., Dowek, G (eds.) IJCAR 2008 LNCS (LNAI), vol 5195, pp 539–554 Springer, Heidelberg (2008) Comon, H.: Completion of rewrite systems with membership constraints In: Kuich, W (ed.) ICALP 1992 LNCS, vol 623, pp 392–403 Springer, Heidelberg (1992) Comon, H.: Completion of rewrite systems with membership constraints part I: Deduction rules J Symb Comput 25(4), 397–419 (1998) 10 Comon, H.: Completion of rewrite systems with membership constraints part II: Constraint solving J Symb Comput 25(4), 421–453 (1998) 11 Comon, H., Dauchet, M., Gilleron, R., Jacquemard, F., Lugiez, D., Lăoding, C., Tison, S., Tommasi, M.: Tree automata techniques and applications (2007), http://www.grappa.univ-lille3.fr/tata (release October 12, 2007) 12 Falke, S., Kapur, D.: Inductive decidability using implicit induction In: Hermann, M., Voronkov, A (eds.) LPAR 2006 LNCS (LNAI), vol 4246, pp 45–59 Springer, Heidelberg (2006) 13 Falke, S., Kapur, D.: Dependency pairs for rewriting with built-in numbers and semantic data structures In: Voronkov, A (ed.) RTA 2008 LNCS, vol 5117, pp 94–109 Springer, Heidelberg (2008) 14 Falke, S., Kapur, D.: A term rewriting approach to the automated termination analysis of imperative programs In: Schmidt, R.A (ed.) CADE-22 LNCS, vol 5663, pp 277–293 Springer, Heidelberg (2009) On Proving Termination of Constrained Term Rewrite Systems 155 15 Fuhs, C., Giesl, J., Middeldorp, A., Schneider-Kamp, P., Thiemann, R., Zankl, H.: Maximal termination In: Voronkov, A (ed.) RTA 2008 LNCS, vol 5117, pp 110–125 Springer, Heidelberg (2008) 16 Fuhs, C., Giesl, J., Plă ucker, M., Schneider-Kamp, P., Falke, S.: Proving termination of integer term rewriting In: Treinen, R (ed.) RTA 2009 LNCS, vol 5595, pp 32–47 Springer, Heidelberg (2009) 17 Furuichi, Y., Nishida, N., Sakai, M., Kusakari, K., Sakabe, T.: Approach to procedural-program verification based on implicit induction of constrained term rewriting systems IPSJ Trans on Prog 1(2), 100–121 (2008) (in Japanese) 18 Giesl, J., Schneider-Kamp, P., Thiemann, R.: AProVE 1.2: automatic termination proofs in the dependency pair framework In: Furbach, U., Shankar, N (eds.) IJCAR 2006 LNCS (LNAI), vol 4130, pp 281–286 Springer, Heidelberg (2006) 19 Giesl, J., Thiemann, R., Schneider-Kamp, P.: The dependency pair framework: Combining techniques for automated termination proofs In: Baader, F., Voronkov, A (eds.) LPAR 2004 LNCS (LNAI), vol 3452, pp 301–331 Springer, Heidelberg (2005) 20 Giesl, J., Thiemann, R., Swiderski, S., Schneider-Kamp, P.: Proving termination by bounded increase In: Pfenning, F (ed.) CADE 2007 LNCS (LNAI), vol 4603, pp 443–459 Springer, Heidelberg (2007) 21 Hirokawa, N., Middeldorp, A.: Automating the dependency pair method In: Baader, F (ed.) CADE 2003 LNCS (LNAI), vol 2741, pp 32–46 Springer, Heidelberg (2003) 22 Hirokawa, N., Middeldorp, A.: Tyrolean termination tool: Techniques and features Inf Comput 205(4), 474–511 (2007) 23 Hoot, C.: Completion for constrained term rewriting systems In: Rusinowitch, M., Remy, J.-L (eds.) CTRS 1992 LNCS, vol 656, pp 408–423 Springer, Heidelberg (1993) 24 Huth, M., Ryan, M.: Logic in Computer Science: Modelling and Reasoning about Systems Cambridge University Press, Cambridge (2000) 25 Kusakari, K., Nakamura, M., Toyama, Y.: Argument filtering transformation In: Nadathur, G (ed.) PPDP 1999 LNCS, vol 1702, pp 47–61 Springer, Heidelberg (1999) 26 Lynch, C., Snyder, W.: Redundancy criteria for constrained completion Theor Comput Sci 142(2), 141–177 (1995) 27 Nishida, N., Sakai, M., Hattori, T.: On Disproving Termination of Constrained Term Rewriting Systems In: Proc of WST 2010, pages (2010) 28 Ohlebusch, E.: Advanced Topics in Term Rewriting Springer, Heidelberg (2002) 29 Sakata, T., Nishida, N., Sakabe, T.: On proving termination of constrained term rewriting systems by eliminating edges from dependency graphs The Full Version of this Paper, http://www.trs.cm.is.nagoya-u.ac.jp/~ nishida/wflp11/ 30 Sakata, T., Nishida, N., Sakabe, T., Sakai, M., Kusakari, K.: Rewriting induction for constrained term rewriting systems IPSJ Trans on Prog 2(2), 80–96 (2009) (in Japanese) 31 Thieman, R.: The DP Framework for Proving Termination of Term Rewriting PhD thesis, RWTH Aachen University, Germany (October 2007) 32 Toyama, Y.: Confluent term rewriting systems with membership conditions In: Kaplan, S., Jouannaud, J.-P (eds.) CTRS 1987 LNCS, vol 308, pp 228–241 Springer, Heidelberg (1988) 33 Yamada, J.: Confluence of terminating membership conditional TRS In: Rusinowitch, M., Remy, J.-L (eds.) CTRS 1992 LNCS, vol 656, pp 378–392 Springer, Heidelberg (1993) Author Index Almendros-Jim´enez, Jesus M Antoy, Sergio 19 Braßel, Bernd 86 Garc´ıa-Ruiz, Yolando 35 1, 19 52 68 122 Wuille, Pieter Majchrzak, Tim A 122 Melo de Sousa, Sim˜ ao 86 86 S´ aenz-P´erez, Fernando 35 Sakabe, Toshiki 138 Sakata, Tsubasa 138 Samulowitz, Horst 68 Schrijvers, Tom 68 Stuckey, Peter 68 Tack, Guido Kuchen, Herbert 138 Reck, Fabian Rodrigues, V´ıtor 35 Delgado-Mu˜ noz, Agustin D Hanus, Michael Nishida, Naoki Peemă oller, Bjă orn Pe na, Ricardo 52 Caballero, Rafael Florido, M´ ario 35 Zinn, Claus 68 104 ... Planck Institute for Informatics, Saarbruecken, Germany 6816 Herbert Kuchen (Ed.) Functional and Constraint Logic Programming 20th International Workshop, WFLP 2011 Odense, Denmark, July 19, 2011 Proceedings... Integration of Constraint Logic and Object-Oriented Programming Logic Java: Combining Object-Oriented and Logic Programming Tim A Majchrzak and Herbert Kuchen 122 Term Rewriting On Proving Termination... higher-order functions and demand-driven evaluation from functional programming with logic programming features like non-deterministic search and computing with partial information (logic variables)

Ngày đăng: 05/11/2019, 13:14

Từ khóa liên quan

Mục lục

  • Cover

  • Lecture Notes in Computer Science 6816

  • Functional and Constraint Logic Programming

  • ISBN 9783642225307

  • Preface

  • Organization

  • Table of Contents

  • Functional Logic Programming

    • KiCS2: A New Compiler from Curry to Haskell

      • Introduction

      • Curry Programs

      • Compilation to Haskell: The Basics

        • Representing Non-deterministic Computations

        • The Basic Translation Scheme

        • Extracting Values

        • Benchmarks

        • Further Features

          • Search Strategies

          • Encapsulated Search

          • Logic Variables and Unification

          • Conclusions and Related Work

          • References

          • New Functional Logic Design Patterns

            • Introduction

            • Functional Logic Programming and Curry

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan