In classical logic programming, there is the concept of unification, where one expression is matched against another, and one or both expressions may contain variables. For example, (FOO ?A) unifies with (FOO 42) by setting the variable ?A = 42.
Suppose you have a database of N expressions, and are given a new expression, and want to find which of the existing ones unify against the new one. This can obviously be done by unifying against each expression in turn. However, this takes O(N) time, which is slow if the database is large. It seems to me that by appropriate use of indexes, it should be possible to unify against the entire database simultaneously, or at least to isolate a small fraction of it as potential matches so that the individual unification algorithm need not be run against every expression in the database. I'm obviously not the first person to run into this problem, and presumably not the first to think of that kind of solution. Before I go ahead and work out the whole design myself, I figure it's worth checking: does anyone know of any existing examples of this? ------------------------------------------- agi Archives: https://www.listbox.com/member/archive/303/=now RSS Feed: https://www.listbox.com/member/archive/rss/303/ Modify Your Subscription: https://www.listbox.com/member/?member_id=8660244&id_secret=117534816-b15a34 Powered by Listbox: http://www.listbox.com