What is Relational Programming?Ordinary programming languages calculate functions. Sometimes a function is inappropriate. For example, 4 has two square roots, +2 and 2, but an ordinary programming language provides a sqrt function that returns only one of the roots. So if we want to find both roots of a quadratic equation, we have to deal with each root separately. In a relational language, we need only to specify one solution, and the program will find both. This is because it will treat sqrt as a binary relation. A binary relation is similar in concept to a function, but can map an argument to any number of values (including zero).Relations have many uses in computer science. The Z Specification Language makes heavy use of relational algebra notation. One reason is that programs are usually required to establish an inputoutput relationship, but there are often many outputs that are allowable. For example, a program may be asked to find any solution to a problem, or it may be asked to list all solutions, but in no particular order. A functional specification is bound to specify some particular solution or some particular order. A functional specification is usually an overspecification. You can find out more about Relational Methods in Computer Science from the RELMICS site. Libra is a relational programming language that explores the different values yielded by relations by backtracking rather than parallel execution. Click here to download Libra. Since backtracking is a feature of Prolog, the initial version of Libra is implemented in it. You can download a very good free Prolog system for a 68000 Macintosh, called OpenProlog.
Computer Science Technical Report 9510
