Sunday, June 26, 2016

What is a Gödelian and why to we need one in Julia when we have a Boolean and a Type T?

“No general method for the solution of questions in the theory of probabilities can be established which does not explicitly recognize, not only the special numerical bases of the science, but also those universal laws of thought which are the basis of all reasoning, and which, whatever they may be as to their essence, are at least mathematical as to their form." Boole

This is a short paper on infinities, plural, and why we should have a proper, and properly formed, instance in Julia. The paper divides into 3 sections:

1) Introduction
2) The state of the art – and why should do better –
3) A proposal

1 – Introduction

While there is a long history, going back At least as far as the Antikythera mechanism, a short introduction which will skip over Galileo, Pascal, and Newton – while important historically they are not important to the thrust of this paper. But what is important is the work of Whitehead and Russell. In three papers published 1910, 1912, and 1913 with an amended text in 1927 proved, so the thought, that all infinities resolved to a pair of true/false assertions. However in 1931 and obscure dissertation was published by Gödel which showed that in any system that would allow for a sufficiently mathematically complex structure, which he decided to call PM, would not resolve. And in fact if it were consistent it could not be complete, and if the consistency of the axioms cannot be proved within the system that created them. Which has led to a computer bully innumerable set of axioms of finite number of sets either

1. Finite,
2. or it will have a principal which will lead to a third state, with a limited number of axioms,
3. or it will be infinite.

 The problem is twofold: the finite systems disallow certain mathematical concepts which we need to do adequate work. Multiplication and division are two such sets. And for those PM which are in the second state, numbers are close at hand. For example, real numbers could be either the second level of infinity, or they could be more. This means that in any computable universe, as stated by Turing, some equations will not terminate.

This is not in dispute, and can be looked up in variety of mathematical textbooks.

Now for a practically computable system there are workarounds, and as we push the limits of the practically computable, the result will break and we have to fix it. It is the position of this paper that that time is an extended now, and that the previous definition is inadequate.

2 – The State of the Art

The State of the Art is actually very smooth from here. Codd and Date formed a new theory of NULL and why it should be included in a database. This influenced both IBM, and what would eventually be called Oracle. Thus SQL has a NULL value in any particular row. Codd and date were specifically influenced by Gödel and the logicians who came after him. But the null field was inadequate, and they tried to make improvements to it, but none of these have caught on. This leads one to the conclusion that there must be a Nash equilibrium which turns out to be the first move.

This should be a lesson for all new programming languages – the original default of anything is the most likely default. This is why we cannot wait on this issue, because if it is not decided – it will be decided by default. But is that the right decision?

This cannot known exactly, because of the nature of the problem – but one can say if it is better than the least worst version of the problem. In this case, the answer is that the least worst is SQL, which has an almost Gödelian operator involved with every number and string in its basic structure. Since the Julia language is worse than SQL, and therefore implies that the Julia language cannot actually control SQL. Since commending SQL is in the concept of the language, it is there for not the best possible version of the language, by its own definition.

Moreover, there are at least two problems which will have too be decided in the probable lifespan of Julia: one is an old problem, the Zeta function, and the other is quite new – the definition of the continuum hypothesis. Since these problems are greater than the scope of this paper, future papers will be needed to explain them.

But in closing, the data function of Julia is not sufficient for the net total language, and must be better than the SQL standard. This standard has to involve an array of Gödelians, such that any program can adequately explain the level of postulates which will be sufficient to explain the logical structure. This will mean not only that it has a Gödelian, but an array of them, such that the bottom level will explain why it is not going farther.

This leads us to a structure which has been explained, partially, but not fully. In the world of Gödelians, there are three basic features which stop a language from going farther: a mathematical basis, a physical basis, and a computational basis. The first is explained in the Gödel paper and the Turing paper: it requires that the logical basis is not one which is either cared about, or known, at the time of consolation. The second says that limit of the problem exceeds one of the small constants of the universe: such as the Plank constant. The third, and most likely, is that we cannot make a detector which would supply the necessary value. For example, weather can be known in theory a great deal more than in practice: out over the water detectors cannot be made accurate because they are not able to be fixed in all possible cases.

Thus, at the bottom of the matrices, will be a Gödelian which will explain why the number is not pursued. We will note that this implies that the construct is part of the language.

3 – A Proposal

So should the default be? The current in Julia, default is that the boolean is part of language, and that Gödelian is not, type T is part of language – and it is different from boolean. The problem with this is that Gödel is part of every language that every person would recognize – if it did not have Gödelian, it was intentionally defined this way. An example would be a simulator system which could never be defined as a real system – ever, without exceptions, unless it explicitly brought in a Gödel by importing it from a language. One could see, I hope, the problem with this: something which is in the language has two then be defined as outside the language if it uses a perfectly syntactically correct variable.

One proposal is to use NA in a field of DataArray. This essentially simulates the behavior of R's Data.Frame and DataFrame in Panda. however it does not extend the data type, becomes it does nothing other than copy the essential type of circa 1970. But there are problems with that which need to be addressed, some by the same people who came up with the initial type.

Fortunately, there is a way to do this.

If one thinks about Gödelian carefully, when we will see that it is the same as a binary boolean in some ways, but it is different than it in other ways. The key distinction is that a boolean lies on a plane, where as the Gödel has a more complex structure, and is a subtype of a Ternary Structure which, in turn, is of type tuple. Thus a Boolean is a subtype of what Julia would call “any” where as the Gödel is a subtype of a deeper level.

What is necessary is that a three type variable be defined, and that one of its subtypes is Gödelian. This means that a  Gödelian is a balance ternary.

Does this mean that it has to be done now? The answer to that is “no”, with the caveat that the time it is done must be labeled. Because if it is not labeled, then certain kinds of simulations will never be able to be done now, such as the case where a corporation hires illegal immigrants – who therefore do not have legal status, which must therefore be represented as “NULL”, even if the actual number is in fact truly known. What does have to be done is defining a structure, and implementing it for a known release of the Julia compiler. Since there are features which are not described, it is not alone.

Does this mean it has to be done by 1.0. The answer again is “no”. But the features which do require Gödels must be eliminated from simulations that require it, including a simulation which forms a simulation of real results, such as Brexit extending past the vote; now it can be run because the actual vote is done, and such “NULLs” can be described in one dimension. But it does mean it is an extended now.

What, in practice, does this do?

1. Booleans should be bought of as being the equivalent of the Ternary class.
2. Gödelian is not of the same class as Boolean, and it is lower down because there is on top of it a more generic type called Ternary.
3. The type T is used for other things.

This paper does not instruct any particular way of doing this in the llvm code, which will need a discussion separate from how to implement.

A side issue is call the number Godel, rather than Gödel – because English does not use umlauts, among other things. This paper has no view on this important issue, nor on Fahrenheit, Celsius, or Kelvin as the canonical format for temperature.

Boole, George The Mathematical Analysis of Logic
Codd, Edgar F. The Relational Model for Database Management
Gödel, Kurt “On Formally Undecidable Propositions of PM and Related Systems”
Kuhn, Harold W.Editor Classics in Game Theory
Nash, John Forbe Jr. “Equilibrium Points in n-Person Games.”
Osborne, M. An Introduction to Game Theory
 Riemann, Bernard “On Number of Primes less than a Given Magnitude”
Turing, Alan “On Computable Numbers with an Application to the Entsscheidungsproblem”
Whithead, Alfred North and Russell, Bertrand Principia Mathemtica
Woodin, W Hugh The Transfinite Universe