"Which answer in this list is the correct answer to this question?" I received this question from my mathematics professor as a leisure-time logic quiz, and although I thought I answered it right, he denied. Can someone explain the reasoning behind the correct solution?


  Which answer in this list is the correct answer to this question?
  
  
  All of the below.
  None of the below.
  All of the above.
  One of the above.
  None of the above.
  None of the above.
  


I thought:


$2$ and $3$ contradict so $1$ cannot be true.
$2$ denies $3$ but $3$ affirms $2,$ so $3$ cannot be true
$2$ denies $4,$ but as $1$ and $3$ are proven to be false, $4$ cannot be true.
$6$ denies $5$ but not vice versa, so $5$ cannot be true.


at this point only $2$ and $6$ are left to be considered. I thought choosing $2$ would not deny $1$ (and it can't be all of the below and none of the below) hence I thought the answer is $6.$

I don't know the correct answer to the question. Thanks!
// 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 &lt;stdio.h&gt;
#define iff(x, y) ((x)==(y))

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

    int R = Ra &amp;&amp; Rb &amp;&amp; Rc &amp;&amp; Rd &amp;&amp; Re &amp;&amp; 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.
I see this question a little differently:

If I take the #5 statement as a denial of the set of items containing 1-4, then I am judging the truth or falsity of the statement on the basis of set 1-4.

If I take the statement of #6 however, I am actually judging a different set than I am with #5. I am including in that set all items with the denial of #5 included. What I would be saying then is that "none of the above items in set 1-5 are true because the set itself is not structured correctly". Since 6 is outside the previous set, it becomes the "best answer". Notice I don't bother evaluating the truth of number 5 against number six, because it generates a contradiction. I consider number 5 to be simply a "liar" and move forward. Why would I not do that with #5? Because #6 is not in the set of items 1-5 and before six arrives, there is no contradiction in the set of items 1-4 and so 5 has a claim to truth. Once 5 becomes part of the set, you cannot deny a denial. He has no real existence or purpose at that point.

An analogy might be to have a group of black cats (1-4). A tall stranger, #5 shows up and says  "These black cats all suck". Okay. So we take number five under advisement and say that is a possibility for all black cats 1-4. Another tall stranger, #6 shows up and says all black cats suck, and so does tall stranger #5 because he is trying to generate problems with me by contradiction. Since my statement includes him, and his statement does not include me, give me priority. He isn't following the rules of set construction. How do you know? Because I am here, last in this set. He, on the other hand, is not last in the set. His position betrays the lie.