Search NASASearch

Engineering topics

Gooley, Markian M.

Publications and source records attributed to Gooley, Markian M..

Efficient reordering of PROLOG programs

PROLOG programs are often inefficient: execution corresponds to a depth-first traversal of an AND/OR graph; traversing subgraphs in another order can be less expensive. It is shown how the reordering of clauses within PROLOG predicates, and especially of goals within clauses, can prevent unnecessary search. The characterization and detection of restrictions on reordering is discussed. A system of calling modes for PROLOG, geared to reordering, is proposed, and ways to infer them automatically are discussed. The information needed for safe reordering is summarized, and which types can be inferred automatically and which must be provided by the user are considered. An improved method for determining a good order for the goals of PROLOG clauses is presented and used as the basis for a reordering system.

Gooley, Markian M.

System architectures for PROLOG execution

The principal features of PROLOG are reviewed with particular reference to the use of the language in the development of expert systems. Attention is given to the language syntax, data structures and recursion, constructs that alter control, predicates that modify the database, predicates for input and output, and metalogical predicates. The parts of the Warren Abstract Machine are then described, and it is shown how it executes programs. Parallel architectures proposed for expert systems are examined, and the principal varieties of parallelism available in PROLOG and examples of architectures exploiting them are discussed.

Gooley, Markian M.

Efficient reordering of Prolog programs

Redundant search often makes Prolog programs inefficient. Prolog execution corresponds to a depth-first traversal of an AND/OR graph; often a large subgraph will be searched successfully, with failure resulting from a subsequent small one. It is shown how reordering of Prolog clauses and especially goals can prevent unnecessary search. The restrictions on reordering are characterized and how they may be detected is shown. A new system of calling modes for Prolog, geared to reordering, and a system for inferring them automatically are designed. An improved method for determining a good goal order for Prolog clauses is presented, and it is used as the basis for a reordering system, showing how it can be guided by information about modes and restrictions to generate reordered Prolog that behaves correctly.

Gooley, Markian M.