"Which answer in this list is the correct answer to this question?"

// gcc ImpredictivePropositionalLogic1.c -o ImpredictivePropositionalLogic1.exe -std=c99 -Wall -O3

/*
Which answer in this list is the correct answer to this question?

(a) All of the below.
(b) None of the below.
(c) All of the above.
(d) One of the above.
(e) None of the above.
(f) None of the above.
*/

#include <stdio.h>
#define iff(x, y) ((x)==(y))

int main() {
  printf("a b c d e f\n");
  for (int a = 0; a <= 1; a++)
  for (int b = 0; b <= 1; b++)
  for (int c = 0; c <= 1; c++)
  for (int d = 0; d <= 1; d++)
  for (int e = 0; e <= 1; e++)
  for (int f = 0; f <= 1; f++) {
    int Ra = iff(a, b && c && d && e && f);
    int Rb = iff(b, !c && !d && !e && !f);
    int Rc = iff(c, a && b);
    int Rd = iff(d, (a && !b && !c) || (!a && b && !c) || (!a && !b && c));
    int Re = iff(e, !a && !b && !c && !d);
    int Rf = iff(f, !a && !b && !c && !d && !e);

    int R = Ra && Rb && Rc && Rd && Re && Rf;
    if (R) printf("%d %d %d %d %d %d\n", a, b, c, d, e, f);
  }
  return 0;
}

This outputs:

a b c d e f
0 0 0 0 1 0

The main point I'd like to get across is that you cannot assume at the outset that there is only 1 satisfying assignment. For example consider the question:

Which of the following is true?
    (a) both of these
    (b) both of these

You might be tempted to say that both (a) and (b) are true. But it is also consistent that both (a) and (b) are false. The tendency to assume singularity from definitions isn't correct when the definitions are impredictive.


"6 denies 5 but not vice versa, so 5 cannot be true." This is the incorrect statement. You are right that 5 does not deny 6, but neither does it affirm 6, so this does not rule out 5. Rather, if 6 holds, then 5 holds a fortiori, but this is a contradiction since 6 denies 5. So 6 is ruled out, and 5 is the only possible answer.

Edit: Note that this approach does not assume that only one answer is correct! I argue above that 6 cannot be true. The OP argues quite clearly that 1, 3, and 4 cannot be true. I might revise the OP's discussion of 2 as follows: if 2 holds, then 4 is false. If we take 4 to mean "at least one of the above," this is already a contradiction. If we take 4 to mean "exactly one of the above," then since 3 is false (by 2), 1 must be true, also a contradiction. So we have shown separately that 1, 2, 3, 4, and 6 produce contradictions. Thus, a posteriori there is at most one correct answer, although this was never assumed. In fact, there is exactly one, since if 5 were false, at least one of the contradictory statements above it would hold.


I am no logician or mathematician. Here's my layman's take on this:

a. If 1 is true, 2 is true, but 2 contradicts the rest of 1. So 1 is self-contradictory, so 1 is out. 2 is still in.

b. 3 can't be true because we know 1 is out. So 3 is out.

c. if 2 is true, 4 is false, but 4 in fact supports 2 being true, because with 1 and 3 out, the "one of the above" must be 2. 2 is therefore self-contradictory. So 2 is out.

d. Having established that 1, 2 and 3 are out, 4 cannot be true. So 4 is out.

e. 5 being true supports the fact that 1,2,3 and 4 are out. It is non-committal on 6, allowing 6 to be false, which in turn allows 5 to be true. So 5 is still in.

f. if 6 is true, 5 must be false, meaning at least one of 1,2,3,4 are true, which we know to be impossible. So 6 is out.

Leaving 5.