Interface:Restricting all quantifiers

We first take parameters for the set theory: Interface:Classical propositional calculus, Interface:First-order logic with quantifiability, and Interface:Set theory.  param (CLASSICAL Interface:Classical_propositional_calculus ) param (FIRSTORDER Interface:First-order_logic_with_quantifiability (CLASSICAL) set.) param (SETS Interface:Set_theory (CLASSICAL FIRSTORDER) ) 

We take a parameter indicating what set to restrict to. It needs to define one 0-ary term,. It indicates the universe as a set (within the world of restricted quantifiers, the restricted universe is implicit). That is, it is of kind.  param (UNIVERSE Interface:Universe (CLASSICAL FIRSTORDER SETS) )

var (formula φ) 

Although the title of this page is "Restricting all quantifiers", in the presence of axioms/theorems like, the quantifiers interact with concepts like what values a variable can take on. That is, we need to distinguish between set variables and variables within the universe we are restricting to. Set variables are of kind  and terms (classes) which are not restricted are of kind. The restricted counterparts are  and.

 kind (object) kind (variable)

var (set.variable a b c) var (set.object A B C) var (variable x y z) var (object X Y Z) 

Now that we have defined restricted variables and restricted terms, we need to relate them to sets. A restricted variable can be treated as a set (or to put it another way, the restricted universe lives within the universe of set theory).  term (set.object (asSet object)) term (set.variable (asSetVariable variable))

stmt (InUniverse  ((asSet X) ∈ (universe))) 
 * 1) possibly additional statements to follow here

Having defined, equality of restricted terms can be defined in terms of equality of sets.  def ((= X Y) ((asSet X) set.= (asSet Y))) 

We use  to go from a restricted term to a set. To go from a set to a restricted term is possible but a bit trickier. The term  represents the term corresponding to the set , if that set is in the universe.  term (object (asRestrictedTerm set.object)) stmt (SetRestrictedTerm ((A ∈ (universe))) ((asSet (asRestrictedTerm A)) set.= A)) stmt (RestrictedTermSet  ((asRestrictedTerm (asSet X)) = X)) 

Taking the value of a restricted variable yields a restricted term. It might be possible to define  in terms of other things like , and probably others, but at least for now we define it via axioms, rather than a JHilbert definition.  term (object (value variable)) stmt (ValueValue  ((set.value (asSetVariable x)) set.= (asSet (value x)))) 
 * 1) possibly more axioms to follow

To explain how we are going to define the restricted, we start with an example. A sample statement in the restricted universe would be  (a more realistic example might be something which holds in the restricted universe but not for all sets, but such an example would require more setup, so we start with a simple case). We'll want to define  so this expands to   where   corresponds to.

 def ((∀ x φ) (set.∀ (asSetVariable x) (((asSet (value x)) ∈ (universe)) → φ))) 

The other things we need in order to be a parameter in place of Interface:First-order logic with quantifiability can be defined in terms of the ones we already have.  def ((∃ x φ) (¬ (∀ x (¬ φ)))) def ((≠ X Y) (¬ (X = Y))) def ((is-not-free-in x φ) (φ → (∀ x φ))) </jh>

Most/all of what we have done so far would work with Interface:First-order logic rather than Interface:First-order logic with quantifiability. However, since pretty much all pages on this site so far use the latter rather than the former, it will be convenient to also provide a translated version of substitution.  def ((subst Y x φ) (set.subst (asSet Y) (asSetVariable x) φ)) </jh>