In the article SKETCH OF A PROOF: COMPUTABLE TOTAL FUNCTIONS ARE NOT ENUMERABLE I have used the notion of “total functions”. What is so special about “total functions”?
First, let’s recall what a total function is. A total function is a function that assigns a value to every possible element in its domain (i.e. the set of the function’s “inputs”). A program or algorithm calculating a total function produces an output for every input in its domain, “after a finite time”. There are programs for which this is not the case, programs that, for some inputs, will run without ever halting. Such a behavior is not very useful and is, in most instances, considered to be a programming error.
Now, before we continue with further articles, let me explain the motivation behind looking at total functions (and, in particular, computable total functions): these functions may be viewed as a general model of knowledge. Each of the programs k1, k2 etc. in this mathematical model represent individual bits of knowledge (hence my use of the letter “k”).
Conceptually, we view a thinking process here as a process of computation. Admittedly, it is questionable to do so with respect to human thinking. However, that is just the question being investigated here: do the computational theories of cognition or thinking – put forward in “cognitive science” and “artificial intelligence” – actually work? We assume that they do, try to find a very general formulation for such processes and see where we are getting with this assumption.
So, for the time being, we can look at thinking processes as computational processes. The content of the mind at any given time, emerging as the result of a thinking process or as the result of some perception, can then be viewed as a piece of data. In a thought process, a cognitive process would somehow select or construct a piece of knowledge, apply it to the content of mind and, as a result, arrives at a new content of mind.
The process of applying knowledge will either yield some result or something like an error message saying that this piece of knowledge does not yield any useful result here. Both can be viewed as data and can be mapped onto some Gödel number. So we may think of the application of any knowledge as the calculation of a computable function that yields a result after some time. In other words: we can model the application of knowledge as the calculation of a computable function.
So, for a given piece of data (content of the mind at one moment, denoted by its Gödel number i) our model selects the function (think of a column in the table used in the proof sketched in that article) ki.. This means it selects or constructs a piece of knowledge and then applies it to i. The result is the new content of mind, say j. In this way, the program K that generates ki, kj etc. can be viewed as a knowledge base or as a learning program that produces bits of knowledge that can then be applied. Applying knowledge (of any kind) is modeled as calculating a function that maps some information (content of mind or sense information) onto some other information.
The proof in the article mentioned above tells us that each algorithm that we may use as such a learning program/knowledge base must be incomplete. We can always construct some knowledge it is not able to produce. This can be interpreted as: an intelligent system that is capable of generating any knowledge from its inputs (i.e. from its interaction with its environment) cannot be an algorithm. It must somehow be more than that. Algorithms are always limited in some way. The have systematic blind spots. Each algorithm will be unable to find some of the patterns present in its input data and it will not be able to generate some programs (bits of knowledge) since the programming knowledge it contains is limited. So if “Artificial Intelligence” is trying to find an intelligent algorithm, it must be on the wrong track. If “Cognitive Science” is trying to model intelligence as an algorithm, it must be on the wrong track as well. Algorithms may be part of the solution, but something is missing here. The existence, in mathematics, of productive functions provides a hint on what that missing thing might be.
(The picture is from https://commons.wikimedia.org/wiki/File:Codomain2.SVG. It illustraits the concept of a domain and range (co-domain) of a function, see https://en.wikipedia.org/wiki/Domain_of_a_functionhttps://en.wikipedia.org/wiki/Domain_of_a_function)