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