Cf: Theme One Program • Motivation 2
A side-effect of working on the Theme One program over the course
of a decade was the measure of insight it gave me into the reasons
why empiricists and rationalists have so much trouble understanding
each other, even when those two styles of thinking inhabit the very
The way it came about was this. The code from which the program is
currently assembled initially came from two distinct programs, ones
I developed in alternate years, at first only during the summers.
In the Learner program I sought to implement a Humean empiricist style of
learning algorithm for the adaptive uptake of coded sequences of occurrences
in the environment, say, as codified in a formal language. I knew all the
theorems from formal language theory telling how limited any such strategy
must ultimately be in terms of its generative capacity, but I wanted to
explore the boundaries of that capacity in concrete computational terms.
In the Modeler program I aimed to implement a variant of Peirce’s graphical
syntax for propositional logic, making use of graph-theoretic extensions
I had developed over the previous decade.
As I mentioned, work on those two projects proceeded in a parallel series of
fits and starts through interwoven summers for a number of years, until one day
it dawned on me how the Learner, one of whose aliases was “Index”, could be put
to work helping with sundry substitution tasks the Modeler needed to carry out.
So I began integrating the functions of the Learner and the Modeler, at first
still working on the two component modules in an alternating manner, but devoting
a portion of effort to amalgamating their principal data structures, bringing them
into convergence with each other, and unifying them over a common basis.
Another round of seasons and many changes of mind and programming style,
I arrived at a unified graph-theoretic data structure, strung like a wire
through the far‑flung pearls of my programmed wit. But the pearls I polished
in alternate years maintained their shine along axes of polarization whose grains
remained skew in regard to each other. To put it more plainly, the strategies
I imagined were the smartest tricks to pull from the standpoint of optimizing
the program’s performance on the Learning task I found the next year were the
dumbest moves to pull from the standpoint of its performance on the Reasoning
task. I gradually came to appreciate that trade-off as a discovery ...