6 ms·
There are different kinds of "equality", beyond the one you are invoking: https://ncatlab.org/nlab/show/equality#DifferentKinds https://ncatlab.org/nlab/show/eq
by ukj 5y ago
There are different kinds of "equality", beyond the one you are invoking: https://ncatlab.org/nlab/show/equality#DifferentKinds https://ncatlab.org/nlab/show/equality#DifferentKinds
The most obvious example of A != A being true I can think of is the evaluation of this expression in any programming language:
Time.now == Time.now
- practal 5y agoGood example why programming and logic are related, but not the same.
- ukj 5y agoYes well.. Any two objects are the same, except for their differences. Any two objects are different, except for their similarities. "Sameness" and "difference" are abstract assertions. So in saying that you are doing programming; or maybe I am doing fuzzy logic. From my perspective it seems like you are evaluating this expression: same?(Logic, Programming) -> False But a different Oracle machine might produce a different answer :)
- joshuak 5y agoThese are imperative commands to execute, as apposed to a declarative statement comparing a value to itself. You can’t switch between symbolic representations to use the meaning of one to make statements about the other because the meaning of the symbols also switch.
- ukj 5y agoSo you are telling me that I can't choose to declare that A = A is false? Telling me what I can and can't do is an imperative statement...
- joshuak 5y agoYou certainly may define your own symbology. But if you want to communicate with others you’ll need to agree on your symbology. In the common mathematical understanding A != A is defined as a false statement. In any example that one can contemplate it would become a true statement then you are replacing one of the ‘A’ symbols with something that is not ‘A’ in your mind. Which is to say you are using the wrong symbols to represent the idea you intend to communicate.
- ukj 5y agoIndeed I want to communicate with others, but I do not insist on communicating with Mathematicians in particular. I want to communicate with anybody who wants to talk to me about the nature of time. And when we converse about time I want to be able to say the obvious: now is not now. If we get more serious about this time business we might even want to formally express that: A != A If anybody insist that the above is false then they can exclude themselves from any formal or informal conversation about time on the basis of incomensurability of our paradigms
- joshuak 5y agoThe above is a false statement because if we say A is "true" then the statement becomes "true != true" which is obviously a false statement. In fact if we put anything in the place of A the results are the same. If, however, you wish to communicate the evaluation of a function such as "now()", then you would express that as two invocations of that function now() != now() or t != t' or simply A != B So simply using 'A' to mean things not exclusively 'A' is unnecessarily ambiguous. This makes it not only useless for communication between people but also makes it useless for forming any meaningful conclusions. Failure to be completely expressive about a paradigm is not itself a paradigm. Its just faulty reasoning.
- ukj 5y agoI am not looking for an a debate; or to be “set straight”. I am telling you that in my model what I am saying is true . Yes I am talking about function invocation. In Ruby: a = lambda { Time.now } a.call != a.call Or… x = “Time.now != Time.now” eval(x) == true Not to get bogged down in any particular notation/syntax… I am expressing the same thing in different ways. f() != f() !( f() == f() ) A != A Now is not now. If you disagree with this - you are welcome to disengage me.
- logical_proof 5y agoI think you just made an equivocation as those Time.now’s are not the same A = Time.now A != Time.now A == A Just because Time.now looks like the same symbol it is not as it is an impure function that never returns the same result.
- ukj 5y agoWe are not talking about the same computation. What you think I mean is [1]. What I actually mean is [2]. [1] pry(main)> eval("a != a") NameError: undefined local variable or method `a' for main:Object from (pry):1:in `eval' [2] pry(main)> eval("Time.now != Time.now") => true I am not assigning the function to a variable - I am lazy-evaluating it. It's not equivocation because [2] is expressed exactly the same way in English. Now is not now. It is trivially true. When I use a word, Humpty Dumpty said in rather a scornful tone, it means just what I choose it to mean — neither more nor less
- the_af 5y agoI disagree, because in both programming languages and in natural language, "now" is not a constant: it's a function that returns a different value depending on when it's called. While the syntax is "now", what you're really saying is now(Ti) for some i. So the sentence, in both natural language and most programming languages becomes: now(T0) != now(T1) Which is easier to understand, with all arguments made explicit. Now, some "clever" programming language might automatically translate this from now != now To a := now(T0) a != a Which will be surprising to the programmer in most cases (but might be what's desired in others). The important thing is that "now" is not a comstant, but a function.
- ukj 5y agoYes! "Now" is not a constant. It's a function. It's a function that takes no arguments. It's also a function that can be lazy-evaluated. f() != f() A != A You seem to be agreeing with me but your response to me starts with the English phrase "I disagree".
- deleted 5y ago[deleted]