Announce ERES (Re: prolog like operation in erlang ?)

Corrado Santoro csanto@REDACTED
Fri Apr 25 10:38:21 CEST 2003


Dear all,
the question of HP lead me to announce (before time!) ERES, which is an Erlang 
library to realize rule-processing engines as in Prolog.
You may find it at:

http://www.diit.unict.it/users/csanto/eres.html

Please note that it is an "alpha" version since I still have to implement some 
optimization and fixes. Also the documentation needs to be improved :))
Anyway, I would appreciate any feedback from those of you which will try ERES.

ERES is based on the concept of "knowledge base" which can store a set 
of "facts". For example, the problem of HP can be solved as:

eres:new (mykb).
eres:assert_list (mykb, [{x1,m1,m2}, {x2,m1,m2}, {x3,m3,m6}]).

Then, using "eres:querykb (mykb, {nil, m1,m2])" will return:

[{x1,m1,m2}, {x2,m1,m2}]

You can also use lambda expressions in querykb (see the web page).

But the main use of ERES is rule processing. You can implement rules such as:
pre-condition --> action
as function clauses, where the pre-condition refers to checking the presence of 
a certain fact in the knowledge base.
For example, if you want to express that "each father is also a male", you can 
write:

myrule (E, {father, X}) -> eres:assert (E, {male, X}), true.

Asserting a fact like {father, corrado} will result in the automatical creation 
of the fact {male, corrado} (see the documentation for more detail).

Regards,
-Corrado



Quoting HP Wei <hp@REDACTED>:
> Another newbie type question:
> 
> Suppose I define a relation through the following function:
> 
> rel(x1, m1, m2) -> true;
> rel(x2, m1, m2) -> true;
> rel(x3, m3, m6) -> true;
> ....
> 
> In prolog, if I am not mistaken,
> something like rel(X, m1, m2) can give me X = [x1, x2].
> 
> In erlang, how do I in general get the corresponding X ??
> Or should I encode the relation in a structure in this case ?
> 
> HP
> 
> 



-- 
======================================================
Eng. Corrado Santoro, Ph.D.

Unversity of Catania - Engineering Faculty
Department of Computer Science and
Telecommunications Engineering
Viale A. Doria, 6 - 95125 CATANIA (ITALY)

Tel: +39 095 7382364           Fax: +39 095 338280

EMail: csanto@REDACTED
Personal Home Page:
            http://www.diit.unict.it/users/csanto

NUXI Home Page:
            http://nuxi.iit.unict.it
======================================================

-------------------------------------------------
This mail sent through IMP: http://www.cdc.unict.it/



More information about the erlang-questions mailing list