If you can implement halt using addition, addition cannot exist.
Ex falso quod libet - if you can prove a single false statement, every statement is true.
If you can implement halt using addition, addition cannot exist.
Ex falso quod libet - if you can prove a single false statement, every statement is true.
Not in the sense of solving the halting problem with a function which has an occurrence of X.
function haltWithAdd(code) { var a = 1 + 2; return halt(code); }
This clearly solves the halting problem (we assumed the existence of halt as the first step of our proof by contradiction). And it clearly uses addition (surely you can find where it does). By the logic (as written) of the article the implication is that '+' does not exist.
In general: Let P be a statement. Lets assume that the Turing Machine T solves the halting problem - let's call this assumption H.
Now we assume P is false. Now we have a contradiction - H says that T solves the halting problem, but we know that there is not Turing machine that can solve the halting problem! Thus P must be true!
Notice that P is arbitrary.
Plainly speaking: If you assume that the halting problem can be solved, I can formally prove you that addition does not exist (i.e. there is no operation +, such that it forms a group on Z)
> By the logic (as written) of the article the implication is that '+' does not exist.
This is actually true. With that strong assumption, + does not exist.
Why are you pretending I do not understand the basics of logic while missing the actual argument by a mile?
In the article the author says: "If you implement halts using canBeRegex, you’ve got a proof by contradiction that canBeRegex can’t exist."
Which is plainly a false statement. What he means is the following statement: "If you show that if canBeRegex is computable then halts is computable, you’ve got a proof by contradiction that canBeRegex can’t exist."
Those two statements are clearly not equivalent. And only the second one is true.
I think that is pretty obvious. This is beyond nitpicking.
No. "Implemented" is in fact irrelevant, it is clearly not the term to use here. Because what the implementation uses is irrelevant, the question is about whether computability in one can be derived from computability of the other. In his example the implementation also uses ".length", whether it does or doesn't is irrelevant though. Since it is not a question of implementation.
>This is beyond nitpicking.
Also known as standard practice in mathematics.
Standard practice in mathematics would apply here if what was said is wrong. This time it is about an interpretation that no one shares with you.
[edit] After reading again your comment I realized that maybe you are not applying the logic correctly. If the reduction "implementation" uses both length and foo, then the conclusion is that at least one of length or foo cannot be computable. Since length is trivial, then it must be foo that is not computable.
Replace X with .length and read your statement again.
"If halt can be implemented by using .length that means you can reduce .length to halt."
Please just answer whether you believe that statement is true or false (or undecidable).
Reductions in complexity theory work like this. An explicit algorithm invokes a black box and this shows that either the black box does not exist or you can solve the original problem. Typically you care about the complexity of the reduction to establish that the problem is inside a given complexity class (e.g. NP complete).
The statement is obviously false by the way, as you can see in the article where the author does exactly that. You rephrasing the statement to make it true, is just ignoring the point.
I would encourage you to engage in some studying of reading comprehension. It is an important skill in mathematics and related disciplines.
If <absurd condition> then <some even more absurd thing> is a perfectly sound logic statement.
I explained already how reduction proofs work. Why don't you read on that instead of posting non sense?
None of what you are saying is even remotely a response to my criticism. You can tell me that I failed basic logic all you want, but your reading comprehension sucks so much that you still have not been able to figure out what I am even talking about.
I think you still haven't understood that I never said his intended reasoning was wrong. But that his statement as written is plainly false. There is no argument against the logic by me, so the fact that you keep going on and on about "logic" just shows that you haven't even understood yet that nobody disagrees with the logic. I know how a proof by contradiction works, you do not seem to want to understand that "computes" and "implements" are different words. And that by repeatedly arguing that the authors reasoning is valid if you change the statement to make it correct you are proving my point again and again.
Compute and implements are different words, nobody is arguing that. To me and everyone literate in math/cs, the role of "implementing" here is in the proof by reduction, which in the case of computability is used to establish by contradiction that some other problem is not computable by reducing a known incompatible problem to it.
Just like when you show an algorithmic implementation that maps any SAT instance to another problem using a polynomial time algorithm, then it follows that this other problem is NP-complete.
Read the first post. You should have done that before responding I think.
This is true. The condition is false (halt cannot be implemented by using length), thus the implication is true, regardless of the implicant.
Implementing the halting problem using addition does not assume the existence of halt. It assumes the existence of addition, and you use that to show that halt must also exist. And that's not possible to do.
To implement halts using addition, you need to:
- Take the input to halts, namely the source code to a program.
- Convert that into an input to addition, namely two numbers.
- Call into addition, which adds the numbers.
- Use the result of that addition to infer whether the original program halts or not.
The code very clearly:
- is an implementation of the halting problem. If halt existed it would undoubtly solve the halting problem
- it uses '+'
You are prentending I didn't know what the author meant. The point is that what the author says is simply not true, if you take the statement as written. What he wants to show is that if canBeRegex is computable then halt is computable, but that isn't what he is saying.
I know what the author wants to say, but it isn't what he actually says.