Theme One is a program for building and transforming a particular species of graph-theoretic data structures in memory, structures that have been designed to support a variety of fundamental learning and reasoning tasks.
The program was developed as a part of an exploration into the implementation and integration of different types of learning and reasoning procedures, concerned especially with the types of algorithms and data structures that might work in support of inquiry. In its current state, Theme One integrates over a common data structure fundamental algorithms for one type of inductive learning and one type of deductive reasoning.
The first order of business is to describe the general class of graph-theoretic data structures that are used by the program, as they are determined in their local and their global aspects.
It will be the usual practice to shift around and to view these graphs at many different levels of detail, from their abstract definition to their concrete implementation, and many points in between.
The main work of the Theme One program is achieved by building and transforming a single species of graph-theoretic data structures. In their abstract form these structures are most closely related to the graphs that are called cacti and conifers in graph theory, so I will generally refer to them under those names.
The graph-theoretic data structures used by the program are built up from a basic data structure called an idea-form flag. This structure is defined as a pair of Pascal data types by means of the following specifications:
type idea = ^form; form = record sign: char; as, up, on, by: idea; code: numb end;
- An idea is a pointer to a form.
- A form is a record consisting of:
- A sign of type char;
- Four pointers, as, up, on, by, of type idea;
- A code of type numb, that is, an integer in [0, max integer].
Represented in terms of digraphs, or directed graphs, the combination of an idea pointer and a form record is most easily pictured as an arc, or directed edge, leading to a node that is labeled with the other data, in this case, a letter and a number.
At the roughest but quickest level of detail, an idea of a form can be drawn like this:
o a 1 ^ | @
When it is necessary to fill in more detail, the following schematic pattern can be used:
^ ^ ^ as\|up on| o-----o by | a 1 |---> o-----o ^ | @
The idea-form type definition determines the local structure of the whole host of graphs used by the program, including a motley array of ephemeral buffers, temporary scratch lists, and other graph-theoretic data structures used for their transient utilities at specific points in the program.
I will put off discussing these more incidental graph structures until the points where they actually arise, focusing here on the particular varieties and the specific variants of cactoid graphs that constitute the main formal media of the program’s operation.