Cf: Theme One Program • Exposition 1
Theme One is a program for building and transforming a particular species
of graph-theoretic data structures, forms designed to support a variety of
fundamental learning and reasoning tasks.
The program evolved over the course of an exploration into the integration of
contrasting types of activities involved in learning and reasoning, especially
the types of algorithms and data structures capable of supporting all sorts of
inquiry processes, from everyday problem solving to scientific investigation.
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.
We begin by describing the class of graph-theoretic data structures
used by the program, as determined by their local and 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 closely related to the
graphs that are called “cacti” and “conifers” in graph theory,
so we'll 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”. That structure is defined
as a pair of Pascal data types by means of the following specifications.
Box 1. Type Idea = ^Form
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.
Box 2. Idea^Form Node
When it is necessary to fill in more detail, the following schematic pattern can be used.
Box 3. Idea^Form Flag
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.