-6 karma · joined January 30, 2017
I define an infinite number of new sequences twice over in the example above. Between "---universe begin---" and "---universe end---" is listed the state of the universe. After inspecting the current state of the universe one can add new sequences with numeric codes as I have attempted to describe. The example above shows two iterations of this process. In each case an infinite number of sequences is added. So really your program will describe an infinite sequence of infinite sequences. And, if you never stop programming, then you are actively directing an infinite sequence of infinite sequences of infinite sequences!
The purpose of the language is to be "general purpose". Any programming problem can be modeled with this language. Because a number represents anything at all, I would not hesitate to use the language anywhere I have need for an algorithm. Input transformed to number is manipulated by algorithm then presented to the user as output. A gui is typically used to control this process.
Impressively, it is possible to write relations with very little knowledge of specific algorithms. For instance, you may know how to square a number but be totally ignorant of methods to find the inverse function (the square root). Not a problem - you already know enough to direct the computer to take square roots. This might seem magical. It certainly is magnificent, but there is no magic involved. It all has to do with the design of the language.
All begins with the primitive infinite sequences and the language's means of combination (specified with decimal digits)
---universe begin---
sequence 01: 0 1 2 3 4 5 ...
sequence 03: 1 2 3 4 5 6 ...
sequence 05: 2 3 4 5 6 7 ...
sequence 07: 3 4 5 6 7 8 ...
...
---universe end---
0105: count by two
---universe begin---
sequence 01: 0 1 2 3 4 5 ...
sequence 02: 0 2 4 6 8 10...
sequence 03: 1 2 3 4 5 6 ...
sequence 05: 2 3 4 5 6 7 ...
sequence 06: 1 3 5 7 9 11 ...
sequence 07: 3 4 5 6 7 8 ...
...
---universe end---
01030501: set up some cycles
---universe begin---
sequence 01: 0 1 2 3 4 5 ...
sequence 02: 0 2 4 6 8 10...
sequence 03: 1 2 3 4 5 6 ...
sequence 04: 0 1 2 0 1 2 ...
sequence 05: 2 3 4 5 6 7 ...
sequence 06: 1 3 5 7 9 11 ...
sequence 07: 3 4 5 6 7 8 ...
...
---universe end---
Please note that as the universe grows we always leave space for more sequences by skipping every other sequence designation.
What makes this language useful is that with very little effort any two arbitrary infinite sequences can be defined. As a consequence any mathematical relation is easily defined as a mapping from members of one sequence to the corresponding members of the other sequence.
I will briefly describe the language's means of combination. Writing a sequence designation one next to another will form new sequences by pulling out corresponding members. But all sequences are infinite so after the last designated sequence is visited the member value is used to select the possibly new member in the first designated sequence. Digits that are not able to be confused with sequence designations specify the three other primary means of combination. They are "cons", "car", "cdr". With a proper understanding of their use one can build arbitrary sequences. I will just say that "cons", "car", and "cdr" are used to combine entire sequences which is logically equivalent to combining corresponding members of those sequences.
In the code above I write "0105". The "01" is a sequence designation. The "05" is a sequence designation.
Regardless, I have a lot to ponder.
I could just give him the list and say that whatever he adds is precisely what I would have added had I continued. This is like an infinite lazy list in programming.
If the average number of bits is finite then I will shut up!
How many natural numbers are there? How many bits does it take to represent the average natural number? If you believe the natural numbers do not include transfinite numbers then how do you pick a successor when counting? There are infinite picks to be made so some of the picks must be transfinite. What I am calling a transfinite natural number must exist in N because N is an infinite set.
Assume that N has only finite numbers in it but is itself an infinite set. Would you care to tell me which number (or numbers) are listed twice? But then it is not really a set!
What am I missing?
"0.765653625367523765..." could be assigned the transfinite natural number beginning "1765653625367523765..."
"0.000073468763478..." could be assigned the transfinite natural number beginning "1000073468763478..."
Transfinite natural numbers must exist otherwise you do not have an infinite set.
Hundreds of thousands of mathematicians are wrong.
The claim is that there are more real numbers in the range from zero to one than there are natural numbers. To see that this is false simply realize that you don't actually have to write a decimal point to specify the real numbers in this range. Without the decimal point these real numbers just become natural numbers. Can a rational person believe that there are infinite sequences of digits in the form of real numbers but not infinite sequences of digits in the form of natural numbers? The natural numbers are just an infinite sequence of finite numbers. If you believe n is a natural number then you must also believe that n*10 is a natural number. One more digit! There is always one more digit (that is what infinity implies). If there really are an infinite number of natural numbers then some of them must be of a transfinite number of digits or else you would be including numbers in the list more than once.
The problem with Cantor's argument comes down to the fact that the procedure he uses to find a number not in the set is essentially the same as the procedure he uses for creating the infinite set in the first place. The only difference is our understanding of randomness. His procedure for finding a number not in the set may not seem very random but it might be as random as any other. A truly random coin could theoretically come up heads every time. The important part of his argument is that the infinite list of real numbers has no repeats. The diagonalization procedure similarly ensures that there are no repeats. On the one hand he claims the infinite set of real numbers exists. On the other hand he argues that the diagonalization that yields a number not in the set has not already been done. He takes away infinity and then gives it back!
There is only one infinity. It means "repeat". It is simply the interplay of finite state with process. You can think of it as an "infinite loop" in programming. To say that one infinity is smaller than another is to deny that the smaller is infinite. Infinite means without bound.
I think that finding an efficient way to invert mathematical functions gets you most of the way to AGI. What we need is a general purpose declarative constraint satisfaction programming language. Take the task of finding the square-root of a number in a system that initially knows how to square a number.
In my Lisp like language:
(define).. (square). x (*).. x x
(write). "sqrt(9) = " (write). (square). () 9
;finds the number which squared equals 9
;This program will figure out the answer by inverting the "square" function. In general you can specify any constraints that you wish and then solve for the unknowns using genetic algorithms or some other general purpose optimisation technique
in the Scheme programming language you would write
(define (add a b) (+ a b))
in my language you would write
.(add).. a b
number
.(+).. a b
to define subtraction declaratively in terms of "add" you would write the following
.(sub).. a b
number
.(add).. () b a
this says "to subtract b from a find the quantity that added to b equals a"
genetic algorithms are used as a mechanism for finding the quantity in question