.Open Theories of Sets . Readership This page is for worriers, hard core set theorists, logicians, and meta-mathematicians. I expect that practitioners will not need this information. For an introduction to set theory from the point of view of a computer professional using ASCII see .See http://www.csci.csusb.edu/dick/maths/intro_sets.html , For the traditional notation see .See http://www.math.csusb.edu/notes/sets/sets.html . Modeling sets by maps MODEL_SETS_AS_MAPS::=Net{ Sets can be modeled as maps from T into @={true,false}. @T::= @^T,... The $ $schema notation reflects this model. {x:T||W(x)}::@^T= map[ x:T](W(x)), for A:@^T, x:T, x in A ::@= A(x), |-{x:T || W(x)}=the [f:@^T](for all x:T(f(x)=W(x)))=map[x:T](W(x)), }=::MODEL_SETS_AS_MAPS. The purpose of recording the above is to point out that if you allow the idea of a mapping or function then you also allow the set of functions/mappings that will have the properties of sets. .Open Zermelo-Fraenkel Axiomatic Set Theory vs MATHs Sets . Audience These notes are for people interested in the theory of MATHS. It is of little practical import and is not referred to in manuals other than a reference in Logic.30 Sets" .See http://www.csci.csusb.edu/maths/dick/logic_30_Sets.html#THEORY Some ZF axioms can not be expressed in correctly in MATHS. The MATHS system disallows some of the more infinite constructions. We can however use MATH to talk about the ZF language by encapsulating its statements: name::=ZF(`ZF notation`). ZF_axioms::=Net{ Extensionality::=ZF(`for all x,y( for all z( z in x iff z in y ) iff x = y`). Null_set::=ZF(` for some x, all y (not y in x) `). Unordered_pairs::=ZF(` for all x,y, some z, all w( w in z iff (w=x or w=y) `). Sum_set::= ZF(`for all x, some y, all z( z in y iff for some t(z in t and t in x)) `). Infinity::=ZF(`for some x ( {} in x and for all y( if y in x then y | { y } in x ) `). Replacement::=ZF(`for all t1,...( if for all x, one y (A(x,y,t1,...)) then for all u, some v (B(u,v)) `) where B(u,v) := ZF(` for all r ( r in v iff for some s( s in u and A(s,r,t1,...) )`). Power_set::=ZF(` for all x, some y, all z(z in y iff z ==> x`). Choice::=ZF(`for all x, A, if (for all y, if y in x then not A(y)={}) then for some f ( for all y, if y in x then f(y) in A(y)) `). Regularity::=ZF(` For all x, some y( x={} or ( y in x and for all z( if z in x then not z in y))) `). This last is how ZF prohibits formulas like `x in x`. The above comes from a figure from the following paper - and correcting several typographical errors: .Reference Cohen & Hersh 67, Paul J Cohen & Reuben Hersh, Non-Cantorian Set Theory, Scientific American Dec 1967. }=::ZF. Notice that the above net merely labels the formulas without actually asserting any of them. Some of these can be mapped into theorems, one can not be expressed, and one becomes a meta_linguistic definition. With T, T1,T2,... as generic types, the following are theorems in MATHS: ()|-(Extensionality): for all A,B:@T( A=B iff for all x:T( x in A iff x in B)). ()|-(Null_set): for all y:T (not y in {}). ()|-(Unordered_pairs): for all x,y,w:T,( w in {x,y} iff (w=x or w=y) `). ()|-(Sum_set): for all X:@@T, z:T ( z in |X iff for some t:X(z in t)) `). ()|- (Power_set): for all X:@T, all z (z in @X iff z ==> x). ()|-(Choice): for all X:@T, g:X->non_null@T, some f:X->T, for all y:X (f(y) in g(y)). ()|-(Regularity): for all B:@T, A:@B (A|(B~A) = B ) The ZF Axiom of Replacement is equivalent to the definition of ()|- { f(x) || x:T1(W(x) ) } ::= {y:T2 || for some x:T1( W(x) and y=f(x) ) for any f:T1->T2, x:a list of variables and W(x) : any well formed formula in these variables. The ZF Axiom of Infinity can not be expressed in standard MATHs because it requires the existence of a set that has elements that are both in a type and subsets of a type. It is therefore not possible to tell what is the type of the elements in the set. This destroys a key requirement for the language of MATHS - that all elements of a set are of the same type. The meta_level construct of co-product (or multi-verse) lets form a mixture of different types of elements by tagging them with the names of the types. For example if M=\/{ T1, T2, ... , T[n] } then for all m:M, there is a unique `t`:{ T1, T2, ... , T[n] } and an `x`:`t` such that `m`=x.t. For each `m` this `t` is symbolized as `type(m)`. These allow us to define mixed universes like M::=\/{ T, @T }. Now it follows that all though there are elements of `M` whose untagged forms are in @T and also there are elements of M whose untagged forms are in T. But no element of M, after untagging, is in both... but only any element that is in both T and @T is legally placed on either side of \in. So no element of `M` can be used to make `M in M` well typed. Even so definitions like this: ILLEGAL::="S::= \/{ T, @S}" are forbidden to be sure of avoiding any paradoxes arising from them. But see Plotkin Power domains. .Close