list comprehension problem

Mick Krippendorf mad.mick at
Sun Nov 1 21:32:15 CET 2009

Steven D'Aprano wrote:
> There are an infinite number of empty sets that differ according to their 
> construction:
> The set of all American Presidents called Boris Nogoodnik.
> The set of all human languages with exactly one noun and one verb.
> The set of all fire-breathing mammals.
> The set of all real numbers equal to sqrt(-1).
> The set of all even prime numbers other than 2.
> The set of all integers between 0 and 1 exclusive.
> The set of all integers between 1 and 2 exclusive.
> The set of all positive integers between 2/5 and 4/5.
> The set of all multiples of five between 26 and 29.
> The set of all non-zero circles in Euclidean geometry where the radius 
> equals the circumference.
> ...

Logically, they're all the same, by extensionality. There is of course a
difference between the reference of an expression and it's meaning, but
logical truth only depends on reference.

In mathematical logic 'the thing, that ...' can be expressed with the
iota operator (i...), defined like this:

((ia)phi e b) := (Ec)((c e b) & (Aa)((a = b) <-> phi)).

with phi being a formula, E and A the existential and universal
quantors, resp., e the membership relation, & the conjunction operator
and <-> the bi-conditional operator.

When we want find out if two sets s1 and s2 are the same we only need to
look at their extensions, so given:

(i s1)(Ay)(y e s1  <->  y is a fire-breathing animal)
(i s2)(Ay)(y e s2  <->  y is a real number equal to sqrt(-1))

we only need to find out if:

(Ax)(x is a fire-breathing animal <-> x is a real number equal to

And since there are neither such things, it follows that s1 = s2.

BTW, '=' is usually defined as:

a = b  :=  (AabP)(Pa <-> Pb)

AKA the Leibniz-Principle, but this definition is 2nd order logic. If we
have sets at our disposal when we're axiomatisizing mathematics, we can
also define it 1st-orderly:

a = b  :=  (Aabc)((a e c) <-> (b e c))


More information about the Python-list mailing list