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 same soul.
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”.