Implementing Relational Specifications in a Constraint Functional Logic Language

We show how the algebra of (finite, binary) relations and the features of the integrated functional logic programming language Curry can be employed to solve problems on relational structures (like orders, graphs, and Petri nets) in a very high-level declarative style. The functional features of Curry are used to implement relation algebra and the logic features of the language are combined with BDD-based solving of boolean constraints to obtain a fairly efficient implementation of a solver for relational specifications.

[1]  Gunther Schmidt,et al.  Relations and Graphs: Discrete Mathematics for Computer Scientists , 1993 .

[2]  Jesús N. Ravelo Two graph algorithms derived , 1999, Acta Informatica.

[3]  Michael Hanus,et al.  Curry: an integrated functional logic language (version 0 , 2003 .

[4]  Frank Neumann,et al.  RelView - An OBDD-Based Computer Algebra System for Relations , 2005, CASC.

[5]  Rudolf Berghammer,et al.  Relational depth-first-search with applications , 2001, Inf. Sci..

[6]  Michael Hanus,et al.  The Integration of Functions into Logic Programming: From Theory to Practice , 1994, J. Log. Program..

[7]  Fernando Sáenz-Pérez,et al.  Solving Combinatorial Problems with a Constraint Functional Logic Language , 2003, PADL.

[8]  Gunther Schmidt,et al.  Theory and Applications of Relational Structures as Knowledge Instruments II , 2006 .

[9]  Gunther Schmidt A Proposal for a Multilevel Relational Reference Language , 2004 .

[10]  Wolfram Kahl,et al.  Relational Methods in Computer Science , 1997, Advances in Computing Sciences.

[11]  Randal E. Bryant,et al.  Graph-Based Algorithms for Boolean Function Manipulation , 1986, IEEE Transactions on Computers.

[12]  Wolfram Kahl Semigroupoid Interfaces for Relation-Algebraic Programming in Haskell , 2006, RelMiCS.

[13]  Michael Hanus,et al.  Encapsulating Non-Determinism in Functional Logic Computations , 2004, J. Funct. Log. Program..

[14]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[15]  Ramin Sadre,et al.  Pakcs: The portland aachen kiel curry system , 2000 .

[16]  Wolfgang Lux Adding Linear Constraints over Real Numbers to Curry , 2001, FLOPS.