tim@LINC.CIS.UPENN.EDU (Tim Finin) (08/07/87)
I'm studying various ways to extend Prolog's simple model of the database (e.g. a flat, global collections of clauses) to a richer hierarchical one with inheritance. I am trying to decide whether to allow multiple instances of a clause in a resulting database view. Most Prolog implementations, at least those descendant from DEC-10 Prolog, do allow the database to contain two identical clauses. Most of the non-Prolog logic programming languages that I am familiar with do not. I am interested in discovering what use, if any, people have made of the ability to assert multiple copies of a clause into the database. I, for one, have never found a use for this in practice. In fact, it has only effected my life by being a source of bugs. It is easy enough to accidentally get multiple copies of a clause in the database by consulting a file instead of reconsulting it or by defining the same predicate in two different files. This can easily mess up your program unless you use a rather pure logic programming style which doen't depend on the order in which the clauses are stored in the database. Has anyone out there found a good use for this Prolog "feature"? Tim