The realization of a bootstrap has a serious drawback: the improvements are not obvious for all those that do not realize it. For them, it seems that we are at a standstill: the interest of a bootstrap only appears when it is completed, ant that may require many years.
Naturally, I will consider CAIA; its goal is to become an Artificial Researcher in Artificial Intelligence. I began with a pure AI system, that could solve combinatorial and arithmetic problems. I defined the methods included in this system, and I improved them according to the results. My present goal is to transform it into a system that will build a new system capable of performances at least identical to those of my first system. I have to replace my initial modules by modules capable to create new modules doing the same tasks as the initial ones. Later, it will be necessary to define a third class of modules that could create the second kind of modules. One could think that this ascent would carry on for ever, but this is not true: one will arrive at a level where modules can create similar modules. At that time, the bootstrap is completed.
To clarify the ideas, let us consider the following rule given to the system:
If -1 is raised to power n, and if n is even, then its value is equal to 1.
I decided that the system must look, for every newly created expression, whether -1 appears raised to an integer power. If so, and if the exponent is even, it will replace this sub-expression by 1. In that way, it easily simplifies expressions. However, I can decide another way to use this rule: if the exponent is an expression, it can try to prove that this expression is always even: for instance, the expression is x2+x, or y+3 when it already knows that y is odd. In both cases, it will be possible to replace the expression by 1. Now, CAIA will have to find decisions similar to those I took when it receives a rule. Instead of defining myself, for each rule, how use it, I have to discover an expertise that defines, for each rule, how to use it.
Therefore, in the bootstrap, that I am currently developing for CAIA, the system receives mathematical rules without any direction for use: it has to discover when it will use it. If it associates good methods to each rule, the performances will be the same than when it used my directions, but this is a progress: it is much easier to add new rules since it finds by itself how to use them. However, it is necessary to give the system other rules, which are meta-rules since they are applied to rules, enabling it to find when and how to use the basic rules.
Moreover, this will be an important step in the bootstrap: these meta-rules can find how to use a rule. As a meta-rule is a special kind of rule, the meta-rules will be also able to find how to use themselves! Naturally, this is not that simple: at the beginning, as they still do not exist, I will be obliged to find and give them. However, in the following steps, I will be able to create them by meta-rules found with the help of my new meta-rules. Finally, they will take the part of my own meta-rules.
Unfortunately, it will be necessary to manage another bootstrap: it is not sufficient to know how to use a bit of knowledge, it is also important to find it. In the present case, the mathematicians have found, a long time ago, mathematical rules such has the simplification of -1 raised to a power. However, in a new domain, it is important to be able to discover rules for this domain. The system has to discover knowledge for finding new knowledge in a new domain. This is also a kind of meta-knowledge, and the bootstrap will be possible because this meta-knowledge will also be able to find new meta-knowledge. Naturally, this will be a very long-term process.
During all these steps, we will be at a standstill for the performances; the improvement is in the autonomy of the system, which can solve more of my initial task, which will become more and more easy.
However, there is sometimes a good surprise: an unexpected progression of the performances, when I replaced a module that I had written by a module created by the system. I had several times noticed that the module created by CAIA was more efficient than my own module. Two reasons can be put forth to explain this fact:
Even when I know a rule, I do not always apply it correctly.
There are often many special cases with a low probability. Sometimes, I do not deal with them, because that requires too much work for improvements that occur rarely. On the contrary, an AI system spares no effort: it systematically considers many possible situations. The results are improved because an action was sometimes more useful than I thought, or because several small ameliorations can lead to a large progress.
To conclude, a big challenge with this approach is to show that the system is making good progress: the reader has to pry into the details of a very complex system. It is almost impossible to write an easily understandable description of the system progression. As the present structure of the research promotes the number of publications, this certainly does not encourage scientific research in this field.