If you look at your computer (I take this term in the wider sense, including “smart phones” and similar devices) you may notice that there are two types of information on it. One is data, that is information being processed, and the other one is programs, i.e. information describing what should happen with other information. This includes apps, applications or the operating system.
There are programs for which other programs are data. For example, an app developer might use one program (an editor) to write the program code of a new app. He might use another program (a compiler) to translate this program code into the machine instructions that can run on the machine. The machine code is then stored in another program (the server program of the app store) and downloaded to your device using another program again (the client software for the app store). All these programs treat the app as data. However, when you start the app on your device, it becomes active. It now controls what the device is doing (or some aspect of that) and how other data is processed.
Is there a possibility to describe completely what the device is able to do? To do so, you would have to describe every possible app that could be written for it. You can describe many things, but a programmer could still come up with something new. So that device is something that cannot be described completely. It might be able to do things nobody has thought of yet. The reason is that information you load into it can be activated.
Now think of yourself. You are able to memorize something and tell somebody about it. For example, you can read a cooking recipe, for example how to make a vegetarian pizza. Here, knowledge appears as data. The recipe can be thought out, written down, transmitted, read, thought about, modified or forgotten. On the other hand, you can apply knowledge, for example actually make the vegetarian pizza according to the recipe. Here, the information becomes active.
Instead of a recipe about how to do something with things around you (e.g. turn flour, yeast, water, salt, vegetables etc. into a pizza, using certain tools), you may have a “recipe” on how to process knowledge or data of some kind, e.g. a rule how to multiply two numbers, how to transform a sentence from active voice to passive voice or how to infer a statement from two other statements of a certain type. Such recipes describe how to do some information processing. You can describe such rules, i.e. talk or think about them. When you do that, you treat them as data. On the other hand, you can apply them, i.e. treat them as active information, as something you can think of as a program or app. By training, it is obviously possible to then automate the application of the rule in some way, so that you don’t have to execute each step consciously but you can just use it as a whole. There seems to be some process to be going on in our brains that might be comparable to the compilation done by the software developer, where a form of the information that is good for manipulating it as data is translated into a form that is good for execution. However that might be, you can turn data (information you think about) into active, program-like information (information you think by).
On the other hand, you can analyze what you are doing, thereby turning some piece of active information back into something you think about. This step can be called reflection. The explicit, data-like form of the information can then be modified and turned back into active information.
The possibility of turning data into active information, to hit the run-button, so to speak, and thereby changing the way your thought processes work is at the core of creativity. This is often done by reflection, i.e. making observations of what you are doing and then modifying what you are doing. You can think of this as self-programming.
We may assume that a newborn child starts with some innate knowledge. However, by learning new things, the child can activate newly learnt bits of information and thereby change the knowledge that is active in its mind. The original core of innate knowledge that it started with will then be modified beyond recognition. It is possible that after some time, none of the knowledge the child started with would still be active, so its mind would work totally different from the time when it was born. The cognitive structures (that is: the active knowledge) that develops in another child’s mind might be completely different, especially if both grow up in the context of different cultures.
In this view, the structure of the human mind is not fixed. It develops during the life of the individual and it develops in the course of the development of cultures. There are no fixed laws of thinking, no unchangeable a priori structures. At each step of the development, there are some structures that process new information. These are the a priori structures in that particular moment. So, one could speak of a relative a priori or of a historic a priori. However, some of the new information that this current structure processes may be activated, thus changing the structure. In this process, old structures can fall out of use completely. There is no need to assume a fixed structure of human cognition.
Since structures develop, the initial structures may be very simple. We might start our lives with very basic structures that are not sophisticated at all. The less knowledge these structures contain the less efficient they will tend to be. As a result, there should be some initial structure at least because otherwise, the first steps of learning might take too long. However, there is no need to assume that certain structures are indispensable as preconditions for the possibility of cognizance. Philosophers like Kant thought that certain basic a priori structures are required. However, if these are hardwired into our brains, they can be viewed as programs, i.e. active knowledge and it should be possible to devise a simpler system without them that can learn them based on appropriate sensual experiences. So for each basic system of cognition, there should be the possibility of an even simpler system that can learn the structures contained in that system.
You also don’t need any sophisticated mental language of representation. If you look into the internet, you will find different data formats. There are several types of formats to represent pictures, sounds, films, texts, programs, and other types of data. For each of these, you have a program that can display and perhaps manipulate and change that type of data. So it is possible to use the computer to implement a new form of representation (a new graphics format, for example). In a similar way, some active knowledge in the human mind may be concerned with acting on certain types of data. It is therefore possible that by acquiring and activating such knowledge, we learn to use new kinds of internal representations, changing the internal “language” we use for thinking (e.g. if we learn to do math). So there might be no fixed internal representation language for knowledge that is the same across all humans, all stages in the development of a human being from child to adult, all cultures and all times of human history. Knowledge does not have a fixed form, that is why it is so adaptable.
What you need in the beginning is something that has the power of expression of a programming language (i.e. it must be possible to describe any kind of active knowledge in it). Neurons (nerve cells) have that ability because it is possible to implement practically every functionality by switching them together in the right way (there is a model called “abstract neurons”, i.e. a formal model of computing consisting of elements modeled after neurons for which one can show that it has the expressive power of programming languages). Additionally, you must have a mechanism that can combine small programs (or neuronal networks) into more sophisticated ones. But this would not be a fixed algorithm but a programmable program itself that can activate knowledge and thus change itself.
So attempts to find a fixed structure, a fixed language of knowledge representation (a “mentalese”) and a fixed “thinking algorithm”, i.e. a formal theory of the human mind and rationality, are, in my opinion, mislead. There is no such fixed structure. If cognitive scientists, artificial intelligence researchers, linguists and analytical philosophers want to understand how the human mind works, they should not search for the fixed structure of thinking but for a starting structure from where it can begin.
Creativity, defined as the ability to create any new cognitive structure and thus get out of the scope of any previous fixed structure, therefore in the end just requires a system that can receive new information, store it, process it and turn some of it into active information (i.e. apply it to the processing of other information), thus changing its structure and the way it represents and processes information afterwards.
(The picture of the run-button is from http://commons.wikimedia.org/wiki/File:View-playback_Gion.svg.)