| OCR Text |
Show 121 kind of relation would behave exactly like other relations except that mJgralion of choices would be prohibited. All clauses in the relation would be tried sequentially by the process which first invoked the relation's procedure, and all subsequent procedure calls would be treated likewise. A useful extension to the sequential-OR relation might curtail the execution to produce a single solution to the goal with which the relation's procedure was called. Proceeding in a different direction, Boplog could assume a sequential execution mode as its default and allow the programmer to specify where parallel activity could occur. An elegant means for achieving this would use the Prolog meta-logical construct bagof bagof takes a goal and returns an unordered list of the solutions to the goal. In this way, a Prolog program can collect all solutions to a goal for further processing. Another avenue which remains to be explored is the interaction of Boplog with other Butterfly processes. In a multiprocessing, multi-tasking environment, a logic program could easily be used as a ''back-end" utility to a more conventional program. For example, a program might use Boplog to perform natural-language query interpretation while it performs some numerical computation. An example where the two systems are more tightly-coupled would be a real-time process which needs to make planning decisions. It could express its decision as an optimization problem for which Boplog attempts to find solutions. As each solution is found, it is reported in shared memory. If the planner finds that the solution is good enough, it can abort the remaining Boplog processes. Since all Butterfly memory can be shared, there is no technical reason to prevent such a driver process from altering the state of the Boplog processes as they are running, either by changing their data (say, by removing choice points) or by selectively removing them from the scheduler queue. I believe that the Butterfly's shared memory and its multi-tasking operating system make it a good candidate for this sort of real-time tightly-coupled control problems. |