[erlang-questions] Erlang and artificial intelligence: new article on trapexit

Corrado Santoro <>
Tue Jul 17 17:38:35 CEST 2007

Hi Mike,

what a long list of questions!! .... :)

French, Mike wrote:
> Interesting - you should link to your slides:
Done :)

> How does your system perform ? Have you run any standard benchmarks ?
> How does your system scale to large knowledge base and/or large rule sets ?
Currently, ERESYE implements the basic RETE algorithm, with no 
particular optimizations. We are going to perform a set of benchmarks to 
evaluate performances and scalability. As a preliminary result, I can 
say that the "sieve" algorithm performs by executing approax 200 

> What possibility is there for fine-grain concurrency in a RETE system ?
AFAIK, concurrency in RETE is hard and active rules are executed 
sequentially: the basic problem is that if you have rules A and B 
waiting for execution, the code in A could invalidate B that has to be 
no more executed; if you run A and B in parallel, you cannot control 
such a situation. But as far as I remember, there should be some papers 
on parallelising RETE. Francesca maybe remembers some of them??

> How could you stream facts into the server in non-Erlang format (XML) ?
Well... decide a DTD, parse your XML file using xmerl, generate tuples 
and populate your ERESYE KB.

> How could you load and update rules at runtime from non-Erlang format (XML)
> ?
> i.e. interpret rules, or on-the-fly compilation and loading of rules.
See below. But you need a language to express the action to be done. 
Indeed the code of a rule can contain not only statements to assert or 
retract a fact, but also standard pieces of Erlang code.

> Queries are a bit like dynamic rules, where the results are not asserted to 
> the knowledge base but streamed back to the client.
Queries are not dynamic rules: in current implementation, the overall KB 
is filtered using the given template.

> So having a dynamic rule
> compilation system would support optimized streaming queries, 
> including event correlation and temporal pattern matching.
But ERESYE supports dynamic rules, even if there isn't an explicit API. 
Function "wait_and_retract" waits for the assertion of a fact with a 
given template and atomically retracts it. Such a functionality is 
achieved by dynamically adding a rule and then removing it.

> Is your system still under active development ?
Yes, even if not at a constant rate.

> e.g. in your presentation you mention adding negation
Negation is supported in ERESYE; the issue is that the syntax is not so 

> What is the software license ?
We release it with GPLv3.

> P.S. Good discussion of the Java Drools rule engine 
>      design, implementation and benchmarking here:
Thank you very much!!!

All the best,

Eng. Corrado Santoro, Ph.D.
University of Catania - ITALY - Engineering Faculty

Tel: +39 095 7382380        VoIP: sip:

Personal Home Page: http://www.diit.unict.it/users/csanto
     NUXI Home Page: http://nuxi.diit.unict.it

More information about the erlang-questions mailing list