[comp.ai] REQUEST: blackboard/spreadsheet/TMS

POPX@vax.oxford.ac.uk (Jocelyn Paine) (02/14/91)

Newsgroups: comp.ai
Subject: REQUEST: blackboard/spreadsheet/TMS
Reply-To: popx@vax.ox.ac.uk (Jocelyn Paine)
Distribution: comp.lang.prolog, comp.ai
Organization: Experimental Psychology, Oxford University, UK.

Does anyone have a public domain blackboard, spreadsheet, or
truth-maintenance system, written in Prolog, that they'd be willing to
let me use for teaching? That's a vague request. I'll try to focus it by
specifying more clearly what I want:

The blackboard itself should consist of a (user definable) number of
_areas_, each capable of holding a sequence, possibly large, of _facts_.
These facts should be Prolog ground terms (if they can contain
variables, that's a bonus: I don't know whether I need them to yet). The
facts could be represented as asserted clauses, but don't need to be;
they could be nodes of a tree, for instance.

It must be possible to define _functions_ with one or more inputs and
one output. Inputs and output are blackboard areas; conceptually, a
function uniquely defines the contents of its output area, given its
inputs. A function should be definable as a call to an arbitrary
predicate that has some way to access the function's inputs; if there's
a P.S. module that accepts definitions as a sequence of forward-chaining
production system rules, that's a bonus. (Anyone got a program for
compiling rules into Rete nets?)

The areas, their initial content, and the input and output nodes of
functions will be defined before starting to run. I don't need to change
the number of areas, or to create or destroy functions, during a run.

Inference should be forward-chaining, so that if the input area(s) to a
function changes, its output area is immediately updated, and this
change is propagated.

There may be loops in the function graph. I'll try to avoid these as
much as possible, but they may occur: if so, I want inference to
continue until a fixed point is reached. (It's obviously my job to prove
that this will happen).

It must be possible, given a blackboard, to copy from any (possibly all)
areas, the facts in those areas. This isn't needed for blackboard
inference, but for display and debugging; it precludes a representation
where, for example, the whole set of functions is compiled into Prolog
clauses, and areas are represented as variables that can't be probed
from outside. (Though in that case, calls to debug or display routines
could be compiled to auxiliary calls on those variables.)

I suspect that what I've described is similar in control to a
spreadsheet, albeit one working on sets of terms rather than one number
in each cell.

I need this for a student who's writing a Risk-playing program. I can't
promise you much fame, but I will put the Risk-player into my AI
library, and acknowledge any help.

                                                        Jocelyn Paine