[mercury-users] Any recent developments?

Alexander Voinov avv at isida.ipa.rssi.ru
Fri Jul 17 17:57:24 AEST 1998


> > > Probably I'm too lazy to look at the ftp server, but:
> > > 
> > > Is there any contributed library for multi-agent programming in Mercury?
> > > KQML, KIF, ACL? E.g. CLIPS has such a module: wrapped a C++ package.
> > 
> > Probably I'm too lazy to look up all those acronyms for myself ;-), but:
> > what exactly do you mean by multi-agent programming?
> > (A URL or two might help.)
> 
> Think I can lend a hand here.
> 
> KQML - knowledge query meta/markup language: a protocol for sending
> messages between agents (a bit like e-mail headers, but with emphasis
> on type of msg and msg content).
> 
> KIF - knowledge interchange format: a syntax + some stuff for FOL.
> 
> ACL - agent communication language: any language used to communicate
> between agents.

Yes, exactly that.
 
> Now, I think what Alexander really wants is some way to get agents
> (programs) talking to each other.  Isn't there a sockets interface in
> the IO library these days?  That should be sufficient to get something
> off the ground.

One could wrap a C/C++ library, implementing such interfaces as mentioned.
Exactly this was done in CLIPS inference engine, developed in NASA.
Originally, this engine knew nothing about sockets and networks.
Now it has something like:
(defrule (someone-sent-me-a-message ?msg)
  ==> (reply-to ?msg))
Even a Web search agent is written in CLIPS in such a way. (I have no
url at hand, but I shall probably recover it and put here).

It doesn't mean cuncurrency within a single program. (multithreading, 
parlog, etc?)
It only requires that two running processes could communicate in some
manner. It may be even FIFO's if sockets are not available.
Those protokols are of sufficiently high level.

I like much more backward chaining and logic programming :-) so I'd
like to write reasoning on top of KQML on something prolog-like,
and Mercury is attractive for that.

I suspect however that the "io__state :: di, io__state :: uo" paradigm of
Mercury could make implementation of such a library a
sophisticated exercise. But if must not be harder than, say
event-driven programming. If one is possible in Mercury, than also another.

As I remember SICStus Prolog has (had?) subsystem "Linda". It is
probably something similar. The mentioned protocols, however, become
a standard.



Alexander





More information about the users mailing list