Philosophy of Computer Science: Online Resources

Position Paper #2 Analysis

Last Update: Sunday, 27 March 2022 — 1:15 pm


Here is a sample analysis of the argument for Position Paper #2. There are many ways to analyze any argument, and different analyses can come up with radically different evaluations. What follows is merely one way that this argument could have been analyzed.

I suggest providing such an analysis (preferably, your own!) to the students. The point of such a sample analysis is not so much to show the students what they "should" have said (because, after all, what I say below is itself an argument open to analysis and evaluation). Rather, its main purpose is to show how to analyze an argument.


Analysis of Premise 1:

I interpret Knuth's characterization of 'algorithm' to mean that any algorithm must satisfy the definition in premise 1:

For the sake of argument (since it will turn out not to matter!), let us assume that this is true (it's certainly plausible).

Analysis of Premise 2:

I interpret premise 2 to mean:

(Other interpretations are possible.) I will reserve comment on whether this is true or false until our analysis of premise 4. (But we can take it to be true; it's pretty reasonable.)

Analysis of Premise 3:

Note, by the way, that premise 3 is a single premise with two clarifications (the sentences beginning with 'That is …'). I interpret premise 3 to mean:

This seems to me to be true. It is a restatement of the fact that the class of functions computable by any of the standard models of computation (Turing Machines, lambda calculus, recursive functions, register machines, etc.) is the same as the class of functions computable by any of the others. Since all high-level computer-programming languages—or, to be more precise, any that have sequence, selection, and repetition—are Turing-Machine–equivalent, I take it that premise 3 is true. As it turns out, it doesn't matter (see below)!

Analysis of Premise 4:

I interpret premise 4 to mean that there are some programs that are not algorithms (in the sense of premise 1). The easiest way to think about this is to consider one such program (it doesn't matter which). Call it P. Then premise 4 is:

Now, note that my interpretation of premise 4 is the negation of my interpretation of premise 2! (Premise 2 says that every program is an algorithm; premise 4 says that some program is not an algorithm.)

That means that both of them can't be true at the same time, which means that it's impossible for all of the premises to be true simultaneously!

So, we have an example of an argument with inconsistent premises. That means that it is valid, no matter what its conclusion is! (Recall from §2.5.1 and §2.9.4 of the book that it's a principle of logic that, from a false statement, anything whatsoever follows. The conjunction of our premises must be false, because two of them are negations of each other, so anything follows, including conclusion 5.)

Let me repeat: This is a valid argument as I have interpreted it. (But remember: Other interpretations are possible.)

In case you're still not convinced, consider this: To show that P is not expressible as a Turing Machine program, we would need to show that P is not a computer program. To do that, we would need to show that P is not an algorithm. But that's easy to show, because we already have that P is not an algorithm by the way we defined P. That is, because P is not an algorithm, we can conclude that P is not a program, from which we can infer that P is not expressible as a Turing Machine program.

Because premises 2 and 4 are inconsistent, we can make the argument consistent by rejecting one of them. Let's consider both possibilities:

Case 1: Reject 2; keep 4. Then our premises become:

Can we show 5? What does 5 say?

'These programs' refers to programs like P. So, 5 says:

Now, if we can show that P is a computer program, then premise 3 will allow us to conclude that P is expressible as a Turing Machine program. And, indeed, we have that P is a computer program. So, we have that P is expressible as a Turing Machine program. So, we cannot show that P is not expressible as a Turing Machine program!

So, in this case, the revised argument is invalid, and the correct conclusion is that P is expressible as a Turing Machine program, that is, that all of the examples in premise 4 are indeed Turing-Machine-computable.

Case 2: Reject 4; keep 2. Then our premises become:

Now can we show 5, that is, that P is not expressible as a Turing Machine program, where P is both a computer program but not an algorithm?

But there is no such P, because, by premise 2, if P is a computer program, then it is an algorithm. So, in this case, too, the revised argument is invalid, but this time the correct conclusion is that P is expressible as a Turing Machine program.

What about conclusion 6? For 6 to follow from 5, we need to show that, if P is not expressible as a Turing Machine program, then P is not computable. Taking the contrapositive, this means we have to show that, if P is computable, then it is expressible as a Turing Machine program.

Given premise 3, which says that, if P is a computer program, then it is expressible as a Turing Machine program, we might try to show that, if P is computable, then P is a computer program. To do that, we would need a definition of 'computable', but the argument doesn't provide that, so 6 does not follow from 5.

To summarize: We see that 5 validly—but trivially—follows from~1—4. But, because 1—4 are inconsistent, the argument from 1—4 to 5 is unsound. And we see that the argument from 5 to 6 is invalid.

However, we still need to decide if we think that 5 and 6 are true, independently of this particular argument. After all, you might be able to think of a better argument for 5 or for 6. I won't provide that here, however.


Copyright © 2022 by William J. Rapaport (rapaport@buffalo.edu)
http://www.cse.buffalo.edu/~rapaport/OR/pp2analysis.html-20220327-2