Tuesday, 28 September 2010

Quines again...

A quine is defined as a fixed point of a particular execution environment.

Let E(x) be an execution environment - say C language. It uses the french system of « » for quotes. We give it a program:

E(«printf("%s","hello");»)

The function produces an output of:

«hello»

1.0 E(«printf("%s","hello");») -> «hello»

if Q is the string of a quine then:

2.0 E(«Q») -> «Q»

Now suppose we had a 2 variable function in C code:

3.0 E(«

float multiply(float a, float b) {
return a * b;
}

»)

Our execution environment has code but no data. We can add data by using the function say with values 2.1 and 2

4.0 E(«

float multiply(float a, float b) {
return a * b;
}

printf("%f.0",multiply(2.1,2));

»)

Our execution environment now outputs 4.2. We could use this function to create the 17 times table from 1 to 20:

5.0 E(«

float multiply(float a, float b) {
return a * b;
}

for(float i=0;i++<20;)
printf("%f.0\n",multiply(i+1,17));

»)

The point is that the Execution environment takes only 1 string of data input (the program) and all the data required is hard coded into that string. But the data that E takes in each of the examples above is hardcoded into the next higher level of operation within the computer. So that once loaded the computer takes no input. E5 for example is the compiled/interpreted program which takes no input and outputs the 17 times table from 1 to 20.

Any function taking data is just one level of thinking and is the same as the higher level function that does the same thing (at the same time) without taking data.

So returning to E. The fixed point of E is the quine Q. E(Q) -> Q. So while we are thinking in terms of E running the program Q, there is the higher level (the computer itself) F which has the program hardcoded into its memory.
Computer F

Program -> Execution environment E


Now with this thinking what happens with a program that takes data from the environment? The function F lying outside the data includes the human operator! If the human operator is just data inputting (and they do this accurately) then the function F is fairly easy to picture. But if they are typing like me here then the data comes from all over the universe! This simple blog application that is passed data from the keyboard is part of the function that is the universe! This F is huge! It is a much more sophisticated program than the ones above which are hardcoded and easily closed up in a function taking no input. The question of when those functions are executed is interesting - that is data real meta to the system!

Now this is why I think A.I. has mostly missed the point. The intelligence is mechanical yes, the ability to move around a room is a machine task yes. But the holy grail of A.I. the creating of a person doesn't need to be done! You simply need to link a system of sufficient capability into the universe and it becomes "a person". The "person" does not reside in the processing or the brain or the machine at all but in its ability to interact with the universe. This blog program is not classically intelligent, but what it is taking down (the data) I hope has some elements of intelligence to it - it is part of an intelligent system. And it is me being part of a much larger intelligent system which makes me a human. Shut me in a sensory deprivation environment my whole life and see how intelligent my brain is! I am not in the wiring or programming!

Returning to the Quines: Now a real quine is not E(Q) → Q but E(E) → E !!!

That is an execution environment like the C compiler that takes the C compiler and produces the C compiler.

I had a bit of a think about this. A through program that simply printed its input would work. Feed it itself and it would print itself. This is like y=x. This E needs to be a proper execution environment that doesn't quine every input.

No comments:

US displaying its Imperialist credentials... yet again

Wanted to know the pattern of UN votes over Venezuela and then got into seeing if ChatGPT could see the obvious pattern of Imperialism here....