# Does input exist? Is f(x) identical to y?

1. Apr 23, 2010

### Neveos

So, a heated debate started over whether input really exists since the equals sign is a case of identity. For instance, x^2 = 16. x could either be 4 or -4, but both sides of the equation (both expressions) are really only expressing the same thing... the value: 16. One wouldn't normally think that this "x^2" has anything necessarily to do with 4 or -4 or (2+1+1) or (14-18)... but it has everything to do with the value:16. So if 16 is true, (14-18) is not necessarily true. Now, (14-18)^2 is... but this is the same as saying 16. Nor is 16 "made of 4" as it is not "made of -4".

Well, if that seems obvious, it isn't so obvious when we consider what started the heated debate. We were discussing cellular automata, such as "http://www.bitstorm.org/gameoflife/" [Broken]", and I expressed an intuition I was having that in the game of life, the prior states did not exist. The states that are generated are "pure functions" of the previous state, and I argued that it is as though we are watching a math problem being solved... prior states are really just a complication of some form of output. So, theoretically (and this is true), multiple states can be skipped with better rules applied to the game, as with simplification in mathematics.

Eventually this went on to talk about the nature of logic, time, equality... it was very broad, but I wanted to hear what you'd think.

So, what do you think? Do you think that when I give the expression "3+2+1" I am expressing one value or multiple values?

Last edited by a moderator: May 4, 2017
2. Apr 23, 2010

### SW VandeCarr

Well, are you asking how may unique strings exist for a given sum? Clearly the sum is just one number, but there can be many possible strings of positive integers which produce the same sum. So for the number three it's 3, 2+1. 1+2, 1+1+1. Can you think of a formula which gives the number of all possible such unique strings for any given sum?

Last edited: Apr 23, 2010
3. Apr 24, 2010

### Neveos

I'm not asking that, but that should always be infinity. Also, this isn't exactly about sums, it is about expressions. So, 2+1, sums up to 3, but "2+1" is identical to 3. They express the same value. So turning it into a function it looks something like this: "+1(2)=3". 3 is known as the output, 2 is the input. But "2+1", that string, does it express one value or multiple values? If it expresses multiple values, then... how?

4. Apr 24, 2010

### SW VandeCarr

No, not if you restrict it to the positive integers. It's called a composition (or decomposition). So for example 5 has 16 decompositions.

At the risk of misunderstanding you, I'll let someone else try to answer your question. It seems any string which is a decomposition of a given positive integer (y) could serve as input to your additive function f(x).

Last edited: Apr 24, 2010
5. Apr 24, 2010

### Gigasoft

Any constant expression obviously expresses a single value. In a random expression involving only constants, the individual values of those constants and how they combine to produce the final expression is usually irrelevant. However, if one finds that a particular measured value can be written as an expression involving interesting physical and mathematical constants, one can sometimes use this in guesses about what physical laws might produce the observed value. For example, the ratio of a proton's mass to an electron's is about 1836, and writing this as 1589 + 197 + 51 obviously doesn't give any insights. However, if you make a measurement that can be expressed as some product involving c, G, h, pi and a small integer, you could make inferences from it. But, in itself, any constant expression doesn't mean anything beyond its value.

6. Apr 24, 2010

### Neveos

Lost me a little bit towards the use in breaking apart a value, but I agree, such components are useful when relating a value to multiple other values (such as c and pi). In fact, the merit of "3+3" in describing the value:6, is that it also describes something about the relationship between 6 and 3, such as 3 being half the value of 6... regardless, the expression itself is only expressing the value: 6.

Now the reason I'm bringing this up is due to the fact that we were talking about Omega Point theory, and I was advocating the position that the "end of time" is just as valid a temporal spot to look for a theory of everything, as the beginning was. When cellular automata was brought up, I was arguing that the input states were similar to unsimplified mathematical expressions of a simplified expression. The simplified expression being the stabilized output (final state, final oscillation). "Pan-computationalism" attempts to describe physical phenomena as obeying the same rules as a cellular automata would, as though the entire Universe were a simulation, and the progression of time is akin to the progression of states in the simulation. So I argued that the prior states of our Universe, acting as inputs, were, more or less, dependent on a final stable state of the Universe.

7. Apr 24, 2010

### Gigasoft

Yes, the prior states of the Universe are related to any later states. The laws of physics work in either direction, and for every future there is a set of possible pasts, just as for every past there is a set of possible futures. However, in reality the past is known and the future isn't, and this causes the thermodynamical arrow of time to point to the future.

8. Apr 26, 2010

### Neveos

Agreed, but by saying, "for every past there is a set of possible futures" your conception is unlike cellular automata. Because future states are determined by the past, but the past is actually only roughly determined by the present. Multiple states can give rise to the same state (multiple pasts can give rise to the same future), but from that same future, it cannot be determined which state it was that gave rise to it. Likewise, if we have the number 16, and let's just say we know that some number was squared, we don't know whether it was 4 or -4.

9. Apr 26, 2010

### Tac-Tics

What you have stumbled upon here is the notion of irreversibility. Irreversibility is a very important concept in many areas of math, science, and computing.

In this particular example, the squaring function is not http://en.wikipedia.org/wiki/Injective_function" [Broken] function. When you apply f to a number, you throw away some piece of information about the argument. (You throw away the sign). With the exception of f(0), if you know what f(x) is, it's impossible to tell what x was.

Non-injective functions occur all over in mathematics. Some other examples are:

* f(x) = 0. The "constant 0" function throws away ALL information about x.
* f(x) = 100 * floor(100 * x). This "truncate" function throws away some of the precision of x.
* f(x) = sin(x). The sine function throws away the total magnitude of x, leaving only it's magnitude modulo 2 pi.

Word your arguments carefully though. Saying that "the inputs REALLY exist" or that "the inputs DON'T really exist" are both nonsense. What the heck do you mean by "exists" here? If x^2 = 16, then, yes, x "exists". We don't know what it is. Without further information, we can neither prove x = 4 nor x = -4. We can prove x does NOT equal 5, though. We CAN prove that |x| = 4. So x "exists". But it's such a silly question.

(As a note, asking whether something "exists" or whether something is "real" is almost always a sign you don't quite understand what you're talking about. There is no unearthly force dictating what is real and what isn't.... what we're working with, especially in math, are abstract MODELS of things, not the things themselves).

This is another great example of an injective function. Take a set of "Life states" S. S is basically a finite set of coordinates, which indicate the "living" cells on the board. The "rules" for the game of life, then, are represented as a function d from S into S.

So if you start off with a state s0, d(s0) is the state you get if you hit "next" and went one step into the game. If you hit "next" again, the state you see is d(d(s0)).

Now you can analyze the d function with set theory. To anyone who's familiar with the game, d is clearly non-injective. Let s0 = {} be the empty board state and s1 = { (0, 0) } be the state with the origin as the only living cell. Do the math and you'll see d(s0) = d(s1) = {}. You have two inputs mapping to the same output. This is exactly the case with f(x) = x^2!

You seem to be fascinated by the idea that you can bear witness to the previous states, despite the fact that d is a pure function. The trick here is that even though the function throws away information, you are not required to throw it away.

Say for instance, have three pieces of paper. You start with some Life state, s0. You write s0 on the first piece of paper. You calculate d(s0) and write it on the second. You then calculate d(d(s0)) and write it down on the third. Take the SECOND piece of paper, tear it up, and throw it away. Now ask yourself, what was the predecessor to d(d(s0))? Can you figure it out unambiguously? The answer is yes. Because you know the original state, you can figure out all states that succeed it.

To make an analogy to the squaring function, suppose you know that x^2 = 14 and that |x| = x. Can you tell me what x is equal to with certainty? The answer is yes. The reason is that, while you don't know what x is a priori, you do know that x = 4 or x = -4. And out of those two choices, only one satisfies |x| = x: |4| = 4. So you KNOW the answer is x, even though f(x) = x^2 throws away information. And the reason you know this is because that information could be retrieved elsewhere.

Again, be careful about how you say stuff. You are using "value" in an unusual way here. A value is a "final value" an expression can take on after you evaluate it. (Note, it's evalueate, meaning to give a value to something). In computing, we often talk about an "eval" function. Instead of working on numbers or life states, the eval function from expressions (like "3+2+1") to values (like "6"). And if you learn anything about lisp, lambda calculus, ML or any of those good things :) you'll find that eval is definitely NOT injective. Why? Because eval("3+2+1") = eval("5+1") = 6. And unlike the square function, where you only throw away the sign of a number, eval throws away just about everything in the computation. It throws away all the steps it took to get from the expression to the value. And because of this, if you want to go "backwards", going from a value to an expression, you have to know a LOT of extra information to get a unique answer. For example, you might have to say "I want an expression which evaluates to 6 which is of the form x + y + z" where x, y, and z are all values and where x + 2 = y + 1 = z.

You seem to enjoy this kind of thought. If you're interested in learning more about this kind of thing, there's a number of avenues to pursue. Check out Godel, Escher, Bach by Hofstadter. It's a very readable book on the subject of symbolic logic, recursion, and computation.

Also, learn yourself some set theory and then check out Lambda Calculus, computational theory, and/or type theory. You should find them all very interesting if you like Life.

Good luck winning that argument.

Last edited by a moderator: May 4, 2017
10. Apr 26, 2010

### Neveos

The forums were called free-thought forums, and the two primary antagonists were a math teacher, and a programmer. They held the position that 3+3 is in no way identical to 6, since my argument relied on identity, and that it had to do with "mapping" which is something I wouldn't be able to understand. I am no longer engaged in that debate, and it was about a half a year ago. I didn't want to inflame any posters by elaborating on what caused the debate to turn into a flaming frenzy, as they were primarily arguing that I didn't have enough credentials to be thinking about this when I was so sure that I was on to something.

You sound very knowledgeable, so I am relieved that you posted.

I read your entire post, but must be brief because I will have to leave for work. I will probably quote it through and through later, but I need to say that my use of "exist" is simply an extrapolation using Pan-Computationalism. For instance, in terms of logic, if 3+3 is true, then 6 is true. If 3+3 is false, then 6 is false. Likewise, if "f" or "Conway's life" is true, then "a state with a lone blue square" is not true. Now apply this to the universe, and if Pan-computationalism is correct, then these prior states are not true, and we tend to call this property "non existent". The only true thing would be the stable-point of the simulation. In fact, this sequential chucking of the old false, and in with the new truer, seems a lot like the passage of time itself.

Last edited by a moderator: Apr 25, 2017
11. Apr 26, 2010

### Tac-Tics

The problems faced by a math teacher are far disjoint from those of someone who pursues math out of enjoyment. A math teacher's primary job is to convey methods and algorithms to students who do not appreciate them :)

I'm not sure what you mean by "relied on identity" here, but when dealing with formal systems, you can have several different notions of "equal". Written on paper, the letters used to write "3+3" and "6" are clearly distinct. But the VALUE both those expressions represent are equal, and so in a sense, the two are equal. We might say they are "equal-valued", but usually since this is the most useful form of equality, we drop the formalities.

Pan-Computationalism? Never heard of it.

But saying "3+3 is true" doesn't make sense. Only statements can be true or false. To be a statement, you need a verb in there. "Equals" or "is less than" or "is a prime number" or "has a unique predecessor" or "has a unique inverse" are all "verbs" (we usually call them predicates).

12. Apr 26, 2010

### wisvuze

3+3 has a truth value if you're programming in most languages :P all non-zero integers are True

13. Apr 26, 2010

### Tac-Tics

In some languages, like C or Python, yes.

However, in languages like Java, C#, ML-derivatives (SML, Ocaml), Haskell, and a ton of other languages, this isn't so. At best, the conditional statements in those languages can be thought to insert an implicit coercion function (bool(x) in Python, !!x in C).

And in other languages still (Ruby, Common Lisp), 0 is actually a true value.

But the point is I don't think the OP intended that. These constructs are notational conveniences only.

14. Apr 26, 2010

### wisvuze

3+2 + 1 is 6. It is not 3, it is not 2 and it is not 1. + is an operation, so the value of the expression is changed with it, the value WOULD have been 3.. if it wasn't added with 2.. the value would have been 5, if it wasn't added with 1.. But alas, we added 2 and 1 onto 3 so the value is 6.

15. Apr 26, 2010

### wisvuze

yes, well.. I guess I shouldn't have said most, my narrow scope of consideration seemed to have only included C, C++, python .. et c hehehe

16. Apr 27, 2010

### Neveos

The key issue is that the expressions can look different, but the value is identical. They reference the same thing. So, when I ascribe some property to value of "3+3", I ascribe the same property to the value of 6. Likewise, when I ascribe some property to the value of f(x), then I ascribe the same property to the value of y. In other words, I make no reference to the value of x. f(x) is a restatement of y.

The idea is that energy is reducible to information, and the interactions of all these values is calculable. If this interplay were represented in a computer program, it would appear as though the the passage of time in the universe could be represented as a cellular automaton.

Since I was originally arguing for Omega Point theory, an optimistic theory on how the universe ends, I was arguing that there is sometimes a special property attributable to the end of a process as opposed to the beginning, such that the end is more important than the beginning for understanding the process altogether. I was arguing that in the universe, as in any math problem, the end of the evaluative process (thanks for the word) is a simpler representation of what has always been in question. The end of the process and the beginning are identical in what they represent, and that the end of the Universe is a better representation of the Universe, just as we would say 6 is a better representation of the value:6 than 3+3. The reason we can essentially "throw away" the prior states when evaluating the Universe, is precisely that, a previous state and a future state are identical in value.

I was entertaining a response that 6 is a condition, like sleeping, but regardless, this is why "exists" is being used. If a dog exists, then an animal exists. When I say a "dog is true", I mean a "dog exists" is a true statement. So if 6 dogs exist, "3+3" dogs exist. The point being, the truth value of some statement, takes into account the full evaluation of any mathematical problem. So if f(x)=6 and if "f(x) dogs exist" is true, then "6 dogs exist" is true. "x dogs exist" would have no truth value based on that statement, even if we may have consider "x dogs" when coming to understand the value of "f(x)". This is why we can "throw away" the input.

17. Apr 27, 2010

### Tac-Tics

Your framework for working with logic here is clunky. Predicates are a much more natural way to make statements in logic. Additionally, "exists" is a confusing word, because the phrase "there exists" is a meaningful part of quantified logic systems (for example: "there exists a number x such that 3 + 3 = x").

In logic, as in algebra, equal statements are completely interchangeable inside the system. In other words, "6" is completely indistinguishable from "3+3" INSIDE the system. Outside the system, of course, they are spelled differently ("6" is one symbol, whereas "3+3" takes up three symbols).

If you want to distinguish between different spellings, you have to elevate expressions to first-class objects in the system. In programming languages, you can usually do this using a string object (though sometimes we use a more structured data type, such as a list or a tree, but for now, I'll just use the word string).

When we are dealing with strings, we can now distinguish between "6" and "3+3". They are no longer equal. However, by using the eval method I talked about earlier, we can still relate them: eval("6") = eval("3 + 3") = 6. While the spellings of these two expressions are different, the value they represent is the same.

18. Apr 27, 2010

### Neveos

Well, then, the next step is to realize the profundity of the notion that input is not necessarily true despite the containing statement being true. For something to be the height of Paul Bunyan, for instance, there is a reference to a particular height, not to Paul Bunyan. Paul Bunyan does not have to exist, but his height does. If the Universe is a giant case computation, then this may well apply to every past state, and every past particle of that state.

19. Apr 27, 2010

### Tac-Tics

Things like this are borderline nonsense.

What does "the input is true" even mean? Input, in the sense we are talking about -- arguments to a function -- are mathematical expressions not mathematical statements. Statements can be judged true or false. Expressions cannot.

"Apples are true" is a nonsensical statement. "Apples are false" is also nonsense. "Apples are red" is a legitimate statement. The reason it's legitimate is because it has a predicate.

"Paul Bunyan is false" is also total nonsense. Paul Bunyan is fictional, but that doesn't make him "false". False is something we use to describe statements only.

The wording even sounds like the inane ramblings of a philosopher who has no experience in any sort of rational analysis. "If the sky is true, then blue is true." No -- it's "the sky is blue". That's the proper way to state it in English.

It becomes less obvious when you move on to mathematical examples, but it's really not any different. Only statements can be labeled true or false. To be a statement, you need some sort of relation or predicate:

* x EQUALS y. x IS LESS THAN y.
* x IS A PRIME NUMBER.
* s IS AN EDEN STATE IN THE GAME OF LIFE.
* s1 IS THE SUCCESSOR STATE OF s0

The predicates are highlighted in caps. They are what give "life" to your logic. And they are much more expressive than saying "blah exists" for everything.

End rant.

Bottom line: "inputs" can be neither true nor false.

20. Apr 27, 2010

### Neveos

Let's just focus on this:

That is precisely the point I'm making. Expressions have no truth value. Consider that "f(x)" and "x" are two different expressions. In fact, they may even be expressing different things. Let's say f(x) is expressing y, and x is not. Then you must concede that if y exhibits some property (for instance existing) then x does not necessarily exhibit that property. If y is a statement, and it is a true statement, then f(x) is a true statement. x is not necessarily a true statement. Using true and false is just a standard way of using binary logic to understand something.

21. Apr 27, 2010

### Tac-Tics

This is generally true. In the unusual case that x = f(x), we call x a "fixed point" of f. Fixed points are interesting in math. Especially in computation.

Be definite. What do you mean by "is expressing"? If you mean equals, then just say "f(x) = y". If you mean something more complicated, then make it exact. Fuzzy words like "express" sound colorful, but don't have standard meanings in mathematics or logic.

For concreteness, I'm going to assume you meant f(x) = y, since I'm guessing that's what you meant.

This is true, but not very interesting. If P is some property (a property is another word for a predicate), then P(x) does not imply P(y) or vise versa.

Errr.... stop for a second. In formal systems, you don't have "functions of statements". Inside the system, y is an expression, not a statement.

If you want to talk about "functions of statements", you need to work in a higher-order logic. Getting logic to "talk" about itself is a tricky subject.

Instead of trying to work these problems out by yourself in the dark, try reading up on existing theories of logic. Learn about first- and second-order predicate calculus and lambda calculus. You'll find a lot of what you have cooking in your brain has been studied extensively. Learning the existing techniques will make it easier to reason about whatever issues you find interesting.

22. Apr 27, 2010

### Neveos

"f" interests me, because I don't know what it is. Do these fixed points have anything to do with what f is? For instance, are there fixed points in Conway's life? And what is a function?

Equals is fuzzy. If by equals you mean they represent the same thing, then we are on the same page (as this is what 'they express the same thing' means), but if by equals you mean some sort of strange relationship that has nothing to do with sameness, then I don't want to allow you to be mistaken.

I mean that f(x) represents what y represents... they are expressions, and they happen to express the same thing.

Yes, but it would seem to cause a paradigm shift in the way we ascribe dependency to variables in calculus. Normally, the input "x" is considered to be the independent variable, and the output "f(x)" is considered the dependent variable. But this only makes sense if we look at outside of the system, as you call it. We think that since we can change the input, the output is dependent on what we do or understood to be the input. Instead, once we realize that the output is inevitable, since x was never the case and f(x) always was, we understand that the input was actually dependent on the output. In order for there to have been x, there was always y, aka f(x). Indeed, it is strange that f(x) is called the dependent variable when it is known that inputs can change without changing the output. In fact, a change in output is always a change in input, but not vice versa.

y can be a statement, because it can be anything. An example of a statement as an input would be:

f(x)=y
The following statement is an opinion: The sky appears blue. It is an opinion that the sky appears blue.

There are 3 statements. Both sentences state the same thing, but every statement states something different. It just so happens the last statement is an evaluation of the first two, which means it states the same thing as the evaluation of the first two.

I have tried to learn about Lambda calculus through wikipedia, and a fellow poster, but have not found anyone to explain it well. I really want to understand its basics.

23. Apr 27, 2010

### Tac-Tics

Eh? You don't know what a function is?

Yes. "Stil life" in Life are all fixpoints.

Equals is not fuzzy at all. I don't know where you get that. If two expressions are equal, you can replace one with the other without a change of meaning.

The terms "dependent variable" and "independent variable" are kind of ********. They were probably coined before the formal notion of a function. Variables are not a priori "independent" or "dependent". However, the terms are still used to teach the idea of a function to students.

You're missing the point. And this is the reason we use numbers instead of real world things. Real world things are less precisely defined.

Try learning Scheme or Lisp first. They are both "concrete" versions of lambda calculus.

24. Apr 27, 2010

### Neveos

Yeah. What is "f"?

I didn't think so either, but that was apparently not the case in another forum. Equal in value, is to say that it is the same identical value.

No, I think you have been given a fine example to the contrary, and you're trying to make it look wrong without having to do so.

25. Apr 29, 2010

### Neveos

Looks like I had to kick another mathematician's pompous ***.