jump to navigation

Fixing AttemptExtension December 12, 2006

Posted by amahabal in Uncategorized.

One of the actions suggested by a group— when it is the current thought— is to schedule an AttemptExtension codelet. I will describe how this works, and then argue that it needs fixing.

 Here is how the thing currently works. Let the sequence under consideration be “1 7 8 2 8 9 10 3 9 10 11 12…”, and let us assume that the group ‘8 9’ has been seen, and that this is the group on which the codelet has been let loose. The codelet needs an extra argument telling it which direction to extend in: left or right. We will try to expand right.

 The codelet first figures out what the next object in that direction should be. In this case, the next object would be a 10. In step two, it checks whether this is the object present in the workspace at that location. In this case, it is. In step three, it handles the logistics like actually adding the object to the group, updating relations and so forth.

 All these steps look fine and behave well in the sequence we were considering. Can you guess where we are going to run into trouble? As a hint, a troublesome sequence is ‘1 2 2 3 1 2 3 3 4 1 2 3 4 4 5…’

 Yes, step two is the culprit. In the sequence ‘1 2 2 3 1 2 3 3 4 1 2 3 4 4 5…’, Let us try to extend the marked group right. Step one tells us to look for a ‘3’. Step two does the looking, and finds the 3. Except, for this sequence, that is the wrong 3. The program needs to see the [3 3] as a 3 in order to see the sequence as “really just 1 2 3 1 2 3 4 1 2 3 4 5…”. Since step 2 is so literal about what it seeks it cannot find the right answer. (And this is a vindication of my use of fringes. The program does solve this problem via a different route involving fringes. But that is a story for another day).

 The literalness of the second step currently makes it impossible for the program to see the sequence “1 2 0 4 5 1 2 3 0 5 6…”. Here, even the fringes cannot help: the fringe of 0 certainly does not contain ‘4’.

 What we need from step two is a check that an object of the sort we seek is present in the workspace at the particular location. In our troublesome example, we need an object that can be seen as a 3. Both ‘3’ and ‘3 3’ fit the bill. However, this raises a timing issue: what if the ‘3 3’ had not yet been seen as a group? Or if it had not been seen as possibly standing for a 3? There is an additional complication involving time. In the sequence “1 2 0 4 5 1 2 3 0 5 6…” there is understandable resistance to seeing the 0 as a 4. This resistance is overcome as more examples of similar squinting are noticed in other parts of the sequence. Similarity space, thus, changes its shape over time. What was dissimilar can become similar, and vice versa.


The new approach— yet to be implemented— replaces the second step with something more elaborate:

  • Get all adjacent objects in the redirection of the extension. In the troublesome example, that includes the 3 and (if it has been seen as a group,) ‘3 3’.
  • For each such object, the question “can this object be seen as a 3” can have three possible answers:
    • “yes”
    • “Hmm, never thought about this. I need to think”
    • “no, I tried it, does not work”


  • If we get (c) as an answer for all objects, the extension cannot be done, at least for now.
  • If we get (a) as the answer for more than one, we can pick one.
  • For any (b)s, we should launch codelets exploring the likelihood of that squinting. Subsequent attempts can use what the codeless discover.


Finally, we must add another codelet that shakes boundaries. What it should do, for a given group, is to shorten and then elongate the group at one end. This is like treating the boundaries as somewhat tentative and fluid. Pragmatically, this is our insurance against choosing wrongly if several possible answers look valid while extending. No choice is binding. Moreover, this also makes groups a more fluid data structure. I will end with a short quote from page 119 of FCCA:


Thought’s fluidity emanates from the non-rigidity— the fluidity— of representational structures. They have an ability to adjust, to alter themselves effortlessly, to assume many conformations. For fluidity to emerge at a high level in a computer model of thought, the underlying data structures must be permeated by an ability to flip back and forth at the drop of a hat […]






1. chris - December 13, 2006

Hi Abhijit —

As far as I can tell, what you are saying here is exactly right —
‘ is it a “3” ?’
‘can this be seen as a “3” ?’
is the way forward. Just by the way, is it possible that “a group/object repeated three times” can be seen as a 3? I know this is getting back to the ordinality/cardinality issue and the “nature” of the atomic units in your code … but can it be done? And would it be done in terms of “codelets” or in terms of some kind of long term memory associating groups of three things with the number three?

wrt the ‘timing’ and so forth — this, to me, seems like a less substantive problem, since humans would also have to face this timing issue… they can’t solve a problem properly until they realise that they need to squint in a particular way … so the code might have the only limitation … (perhaps the problem you are referring to here is the fact that, if you look for a particular extension when you are not yet ready to see it correctly, and you fail to see it, then that failure prevents you from checking that extension in the future? in that case i guess you might want to make the memory of the failure fade away across time … often in solving problems i find that i need to return to a previously tried path with a new piece of insight/perspective … and often this is many minutes after my initial foray in that direction…)

2. amahabal - December 13, 2006

Chris: thanks for the first comment 🙂

As to “can a group repated thrice be seen as a 3?”, the answer is, currently, no. But my next post (half written currently) describes squinting in general, including such sequences as ‘1 2 0 4 5 1 2 3 0 5 6’, where the squinted version is context dependent: the 0 is 3 and 4 at different places.

And about timing: I agree that people have the same issues, but we do manage to deal with it. “timing” is an issue for me only to the extent that I need to find out how to handle it. Incidently, my current thoughts are similar to what you suggest: memory of failure fading. That connects to self-watching also…

More on these topics in the next few days…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: