On 05/22/2012 12:30 PM, BartC wrote:

>

>

> "James Kuyper" <(E-Mail Removed)> wrote in message

> news:(E-Mail Removed)...
....

>> The standard does not say that objects of void type require zero bits;

>> it says that objects cannot have that type. It does say that "The void

>> type comprises an empty set of values", so inverting your argument, that

>> would suggest that an object of void type should contain -INFINITY bits.

>> That presents certain practical problems , so I suppose that's one

>> reason why we're not allowed to create such an object.

>

> So a void type is just the empty set of values { }.

>

> But the empty set is itself a value. So the empty set must contain itself:

> {{{...}}}.

>

> There seems to be some paradox here.
No, just a problem with your logic.

You could define a type that includes the empty set among it's

representable values - such a type could be useful for applications

involving set theory. However, the C standard says that the set of

values of void type is empty, so in particular, it cannot include the

empty set itself as a value.

Maybe that argument would be clearer if I used a non-void type for a

comparison. The set of values that comprise the 'int' type is the

integers from INT_MIN to INT_MAX; that set is not, itself, one of the

values contained in that set; all of the members of that set are

integers, none of them are sets of integers.

Your conclusion that "the empty set must contain itself" is wrong; it

wouldn't be "the empty set" if that conclusion were true. There are

people here with a stronger mathematical background than I have; I hope

that one of them can explain more precisely than I can what's wrong with

that conclusion.

You don't explain how you went from your premise to your conclusion.

Even if the premise were correct, I can't come up with any valid

argument connecting it to your conclusion.