## TPTP Axioms File: NUM004-0.ax

```%--------------------------------------------------------------------------
% File     : NUM004-0 : TPTP v7.5.0. Released v1.0.0.
% Domain   : Number Theory (Ordinals)
% Axioms   : Number theory (ordinals) axioms, based on NBG set theory
% Version  : [Qua92] axioms.
% English  :

% Refs     : [Qua92] Quaife (1992), Email to G. Sutcliffe
% Source   : [Qua92]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of clauses    :   46 (   4 non-Horn;   9 unit;  40 RR)
%            Number of atoms      :  104 (  22 equality)
%            Maximal clause size  :    5 (   2 average)
%            Number of predicates :   10 (   0 propositional; 1-3 arity)
%            Number of functors   :   36 (  12 constant; 0-3 arity)
%            Number of variables  :   89 (   8 singleton)
%            Maximal term depth   :    4 (   1 average)
% SPC      :

% Comments : Requires SET004-0.ax SET004-1.ax
%--------------------------------------------------------------------------
%----Definition of symmetrization of a class.
cnf(symmetrization,axiom,
( union(X,inverse(X)) = symmetrization_of(X) )).

%----could define (irreflexive(x) = (x * ~(identity_relation))).
cnf(irreflexive1,axiom,
( ~ irreflexive(X,Y)
| subclass(restrict(X,Y,Y),complement(identity_relation)) )).

cnf(irreflexive2,axiom,
( ~ subclass(restrict(X,Y,Y),complement(identity_relation))
| irreflexive(X,Y) )).

%----Definition of connected.
cnf(connected1,axiom,
( ~ connected(X,Y)
| subclass(cross_product(Y,Y),union(identity_relation,symmetrization_of(X))) )).

cnf(connected2,axiom,
( ~ subclass(cross_product(Y,Y),union(identity_relation,symmetrization_of(X)))
| connected(X,Y) )).

%----Definition of transitive.
%----T(x) <--> ((x ^ x) < x).
cnf(transitive1,axiom,
( ~ transitive(Xr,Y)
| subclass(compose(restrict(Xr,Y,Y),restrict(Xr,Y,Y)),restrict(Xr,Y,Y)) )).

cnf(transitive2,axiom,
( ~ subclass(compose(restrict(Xr,Y,Y),restrict(Xr,Y,Y)),restrict(Xr,Y,Y))
| transitive(Xr,Y) )).

%----or:
%----transitive(x,y) --> (x < cross_product(V,V)).
%----transitive(x,y) --> ((restrict(x,y,y) ^ restrict(x,y,y)) < x).
%----((restrict(x,y,y) ^ restrict(x,y,y)) < x), (x < cross_product(V,V))
%----    --> transitive(x,y).

%----Definition of asymmetric.
%----asymmetric(x) <--> ((x * inverse(x)) = null_class).
cnf(asymmetric1,axiom,
( ~ asymmetric(Xr,Y)
| restrict(intersection(Xr,inverse(Xr)),Y,Y) = null_class )).

cnf(asymmetric2,axiom,
( restrict(intersection(Xr,inverse(Xr)),Y,Y) != null_class
| asymmetric(Xr,Y) )).

%----Definition of minimal element.
%----minimum(x,y,z) --> (z e y).
%----minimum(x,y,z) --> (restrict(x,y,{z}) = null_class).
%----(restrict(x,y,{z}) = null_class), (z e y) --> minimum(x,y,z).

%----Definition of segment.
%----If this is useful enough to define, should use it in definition
%----of WE. --> (segment(xr,y,z) = (y * (inverse(xr) image {z}))).
cnf(segment,axiom,
( segment(Xr,Y,Z) = domain_of(restrict(Xr,Y,singleton(Z))) )).

%----Definition of well ordering.
cnf(well_ordering1,axiom,
( ~ well_ordering(X,Y)
| connected(X,Y) )).

cnf(well_ordering2,axiom,
( ~ well_ordering(Xr,Y)
| ~ subclass(U,Y)
| U = null_class
| member(least(Xr,U),U) )).

cnf(well_ordering3,axiom,
( ~ well_ordering(Xr,Y)
| ~ subclass(U,Y)
| ~ member(V,U)
| member(least(Xr,U),U) )).

cnf(well_ordering4,axiom,
( ~ well_ordering(Xr,Y)
| ~ subclass(U,Y)
| segment(Xr,U,least(Xr,U)) = null_class )).

cnf(well_ordering5,axiom,
( ~ well_ordering(Xr,Y)
| ~ subclass(U,Y)
| ~ member(V,U)
| ~ member(ordered_pair(V,least(Xr,U)),Xr) )).

cnf(well_ordering6,axiom,
( ~ connected(Xr,Y)
| not_well_ordering(Xr,Y) != null_class
| well_ordering(Xr,Y) )).

cnf(well_ordering7,axiom,
( ~ connected(Xr,Y)
| subclass(not_well_ordering(Xr,Y),Y)
| well_ordering(Xr,Y) )).

cnf(well_ordering8,axiom,
( ~ member(V,not_well_ordering(Xr,Y))
| segment(Xr,not_well_ordering(Xr,Y),V) != null_class
| ~ connected(Xr,Y)
| well_ordering(Xr,Y) )).

%----Definition of section.
cnf(section1,axiom,
( ~ section(Xr,Y,Z)
| subclass(Y,Z) )).

cnf(section2,axiom,
( ~ section(Xr,Y,Z)
| subclass(domain_of(restrict(Xr,Z,Y)),Y) )).

%----section(xr,y,z) --> (restrict(xr,z,y) < cross_product(y,y)).
%----section(xr,y,z) --> ((z * (inverse(xr) image y)) < y).

cnf(section3,axiom,
( ~ subclass(Y,Z)
| ~ subclass(domain_of(restrict(Xr,Z,Y)),Y)
| section(Xr,Y,Z) )).

%----Definition of ordinal class.
%----Use (ORD15) to eliminate ordinal_class(x).
%----ordinal_class(x) --> well_ordering(element_relation,x).
%----ordinal_class(x) --> (sum_class(x) < x).
%----well_ordering(element_relation,x), (sum_class(x) < x) -->
%----ordinal_class(x).

%----Definition of ordinal_numbers by Class Existence Theorem.
%----(x e ordinal_numbers) --> ordinal_class(x).
%----(x e V), ordinal_class(x) --> (x e ordinal_numbers).
cnf(ordinal_numbers1,axiom,
( ~ member(X,ordinal_numbers)
| well_ordering(element_relation,X) )).

cnf(ordinal_numbers2,axiom,
( ~ member(X,ordinal_numbers)
| subclass(sum_class(X),X) )).

cnf(ordinal_numbers3,axiom,
( ~ well_ordering(element_relation,X)
| ~ subclass(sum_class(X),X)
| ~ member(X,universal_class)
| member(X,ordinal_numbers) )).

cnf(ordinal_numbers4,axiom,
( ~ well_ordering(element_relation,X)
| ~ subclass(sum_class(X),X)
| member(X,ordinal_numbers)
| X = ordinal_numbers )).

%----(SUCDEF8) Definition of kind_1_ordinals.
cnf(kind_1_ordinals,axiom,
( union(singleton(null_class),image(successor_relation,ordinal_numbers)) = kind_1_ordinals )).

%----(LIMDEF1): definition of limit ordinal.
cnf(limit_ordinals,axiom,
( intersection(complement(kind_1_ordinals),ordinal_numbers) = limit_ordinals )).

%----(TRECDEF1): definition of rest_of by class existence theorem.
%----rest_of(x) ' u = {[u,w] e x : w e V}.
cnf(rest_of1,axiom,
( subclass(rest_of(X),cross_product(universal_class,universal_class)) )).

cnf(rest_of2,axiom,
( ~ member(ordered_pair(U,V),rest_of(X))
| member(U,domain_of(X)) )).

cnf(rest_of3,axiom,
( ~ member(ordered_pair(U,V),rest_of(X))
| restrict(X,U,universal_class) = V )).

cnf(rest_of4,axiom,
( ~ member(U,domain_of(X))
| restrict(X,U,universal_class) != V
| member(ordered_pair(U,V),rest_of(X)) )).

%----(TRECDEF3.8): definition of rest_relation.
cnf(rest_relation1,axiom,
( subclass(rest_relation,cross_product(universal_class,universal_class)) )).

cnf(rest_relation2,axiom,
( ~ member(ordered_pair(X,Y),rest_relation)
| rest_of(X) = Y )).

cnf(rest_relation3,axiom,
( ~ member(X,universal_class)
| member(ordered_pair(X,rest_of(X)),rest_relation) )).

%----(TRECDEF4): Definition of Fn = recursion_equation_functions.
%----If z is being used to define a function by transfinite recursion,
%----then Fn(z) is the class of all partial functions that satisfy the
%----recursion equation, for as far out into the ordinals as they are
%----defined.  So THE function defined by z is U Fn(z).
cnf(recursion_equation_functions1,axiom,
( ~ member(X,recursion_equation_functions(Z))
| function(Z) )).

cnf(recursion_equation_functions2,axiom,
( ~ member(X,recursion_equation_functions(Z))
| function(X) )).

cnf(recursion_equation_functions3,axiom,
( ~ member(X,recursion_equation_functions(Z))
| member(domain_of(X),ordinal_numbers) )).

cnf(recursion_equation_functions4,axiom,
( ~ member(X,recursion_equation_functions(Z))
| compose(Z,rest_of(X)) = X )).

cnf(recursion_equation_functions5,axiom,
( ~ function(Z)
| ~ function(X)
| ~ member(domain_of(X),ordinal_numbers)
| compose(Z,rest_of(X)) != X
| member(X,recursion_equation_functions(Z)) )).

%----Quaife says URAN is the function which maps x into
%----union(range_of(x)).
cnf(union_of_range_map1,axiom,
( subclass(union_of_range_map,cross_product(universal_class,universal_class)) )).

cnf(union_of_range_map2,axiom,
( ~ member(ordered_pair(X,Y),union_of_range_map)
| sum_class(range_of(X)) = Y )).

cnf(union_of_range_map3,axiom,
( ~ member(ordered_pair(X,Y),cross_product(universal_class,universal_class))
| sum_class(range_of(X)) != Y
| member(ordered_pair(X,Y),union_of_range_map) )).

%----    ordinal_numbers,ordinal_numbers))).
%---- ([y,x] e cross_product(ordinal_numbers,ordinal_numbers)) -->

%----(OMDEF1): definition of ordinal multiplication.
cnf(ordinal_multiplication,axiom,

cnf(integer_function1,axiom,
( ~ member(X,omega)
| integer_of(X) = X )).

cnf(integer_function2,axiom,
( member(X,omega)
| integer_of(X) = null_class )).