Yes, that’s true. What I have in mind is restricting the latter ability a bit, by >the minimum amount required to get rid of paradoxes.
Well, others have had this same idea. The standard example of a set theory built along those lines is Quine’s “New Foundations” or “NF”.
Now, Russell’s paradox arises when we try to work within a set theory that allows ‘unrestricted class comprehension’. That means that for any predicate P expressed in the language of set theory, there exists a set whose elements are all and only the sets with property P, which we denote {x : P(x) }
In ZF we restrict class comprehension by only assuming the existence of things of the form { x in Y : P(x)} and { f(x) : x in Y } (these correspond respectively to the Axiom of Separation and the Axiom of Replacement ).
On the other hand, in NF we grant existence to anything of the form { x : P(x) } as long as P is what’s called a “stratified” predicate. To say a predicate is stratified is to say that one can assign integer-valued “levels” to the variables in such a way that for any subexpression of the form “x is in y” y’s level has to be one greater than x’s level.
Then clearly the predicate “P(x) iff x is in x” fails to be stratified (because x’s level can’t be one greater than itself). However, the predicate “P(x) iff x = x” is obviously stratified, and {x : x = x} is the set of all sets.
I know New Foundations, but stratification is too strong a restriction for my needs. This weird set theory of mine actually arose from a practical application—modeling “metastrategies” in the Prisoner’s Dilemma. See this thread on decision-theory-workshop.
Well, others have had this same idea. The standard example of a set theory built along those lines is Quine’s “New Foundations” or “NF”.
Now, Russell’s paradox arises when we try to work within a set theory that allows ‘unrestricted class comprehension’. That means that for any predicate P expressed in the language of set theory, there exists a set whose elements are all and only the sets with property P, which we denote {x : P(x) }
In ZF we restrict class comprehension by only assuming the existence of things of the form { x in Y : P(x)} and { f(x) : x in Y } (these correspond respectively to the Axiom of Separation and the Axiom of Replacement ).
On the other hand, in NF we grant existence to anything of the form { x : P(x) } as long as P is what’s called a “stratified” predicate. To say a predicate is stratified is to say that one can assign integer-valued “levels” to the variables in such a way that for any subexpression of the form “x is in y” y’s level has to be one greater than x’s level.
Then clearly the predicate “P(x) iff x is in x” fails to be stratified (because x’s level can’t be one greater than itself). However, the predicate “P(x) iff x = x” is obviously stratified, and {x : x = x} is the set of all sets.
I know New Foundations, but stratification is too strong a restriction for my needs. This weird set theory of mine actually arose from a practical application—modeling “metastrategies” in the Prisoner’s Dilemma. See this thread on decision-theory-workshop.