Interface:Basic operations of general set theory

This page covers some of the simplest operations of set theory including the empty set, singletons, and unordered pairs. Because of the way that JHilbert currently handles definitions, further development is in other places.

It does not include any results specific to infinite sets.

We build on propositional logic and first-order logic (including equality):

 param (CLASSICAL Interface:Classical_propositional_calculus ) param (FIRSTORDER Interface:First-order_logic_with_quantifiability (CLASSICAL) ) 

First-order logic provides us with two kinds:  is a variable, which represents a set and can be quantified over, and   is an expression which represents a set. For example, a variable might be,  , or  , but an object could be the singleton  , the unordered pair  , the ordered pair  , etc. To some extent the concepts of variable and object correspond to set and class in some theories (like metamath's set.mm), but one key difference is that we have no proper classes thanks to the axiom of quantifiability.

 var (variable x y z w) var (object A B C A0 A1 B0 B1) 

We can test whether one set is an element of another, and define an abbreviation for the negated version.  term (formula (∈ object object)) def ((∉ A B) (¬ (A ∈ B))) 

We assert the existence of the empty set, a set with no elements.  term (object (∅)) stmt (EmptySet  (A ∉ (∅))) 

Given a set, we can form a set  which has only it as an element.  term (object (singleton object)) stmt (Singleton  ((A ∈ (singleton B)) ↔ (A = B))) 

Given two sets, we can form a unordered pair  which has only those sets as elements.  term (object (unorderedPair object object)) stmt (UnorderedPair  ((B ∈ (unorderedPair A0 A1)) ↔ ((B = A0) ∨ (B = A1)))) 

Builders
Equals can be substituted for equals, in the context of set operations.

 stmt (MembershipBuilderLL  ((B0 = B1) → ((A ∈ B0) ↔ (A ∈ B1)))) stmt (MembershipBuilderRR  ((A0 = A1) → ((A0 ∈ B) ↔ (A1 ∈ B))))

stmt (SingletonBuilder  ((A = B) → ((singleton A) = (singleton B))))

stmt (UnorderedPairBuilder  (((A0 = B0) ∧ (A1 = B1)) → ((unorderedPair A0 A1) = (unorderedPair B0 B1)))) 

Extensionality
Sets with the same elements are equal.  stmt (Extensionality ((A z) (B z)) ((∀ z (((value z) ∈ A) ↔ ((value z) ∈ B))) → (A = B))) 

To be added
Separation (presumably in the form of defining ). That might go something like.