SET007 Axioms: SET007+589.ax


%------------------------------------------------------------------------------
% File     : SET007+589 : TPTP v7.5.0. Released v3.4.0.
% Domain   : Set Theory
% Axioms   : Homeomorphism between E^i_T, E^j_T and E^i+j_T
% Version  : [Urb08] axioms.
% English  :

% Refs     : [Mat90] Matuszewski (1990), Formalized Mathematics
%          : [Urb07] Urban (2007), MPTP 0.2: Design, Implementation, and In
%          : [Urb08] Urban (2006), Email to G. Sutcliffe
% Source   : [Urb08]
% Names    : topreal7 [Urb08]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   40 (   0 unit)
%            Number of atoms       :  313 (  50 equality)
%            Maximal formula depth :   23 (   9 average)
%            Number of connectives :  326 (  53 ~  ;   3  |; 155  &)
%                                         (   1 <=>; 114 =>;   0 <=)
%                                         (   0 <~>;   0 ~|;   0 ~&)
%            Number of predicates  :   18 (   0 propositional; 1-3 arity)
%            Number of functors    :   33 (   3 constant; 0-5 arity)
%            Number of variables   :  124 (   0 singleton; 120 !;   4 ?)
%            Maximal term depth    :    4 (   1 average)
% SPC      : 

% Comments : The individual reference can be found in [Mat90] by looking for
%            the name provided by [Urb08].
%          : Translated by MPTP from the Mizar Mathematical Library 4.48.930.
%          : These set theory axioms are used in encodings of problems in
%            various domains, including ALG, CAT, GRP, LAT, SET, and TOP.
%------------------------------------------------------------------------------
fof(fc1_topreal7,axiom,(
    ! [A,B] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & l1_metric_1(B) )
     => ( ~ v3_struct_0(k1_topreal7(A,B))
        & v1_metric_1(k1_topreal7(A,B)) ) ) )).

fof(fc2_topreal7,axiom,(
    ! [A,B] :
      ( ( ~ v3_struct_0(A)
        & v6_metric_1(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & v6_metric_1(B)
        & l1_metric_1(B) )
     => ( ~ v3_struct_0(k1_topreal7(A,B))
        & v1_metric_1(k1_topreal7(A,B))
        & v6_metric_1(k1_topreal7(A,B)) ) ) )).

fof(fc3_topreal7,axiom,(
    ! [A,B] :
      ( ( ~ v3_struct_0(A)
        & v8_metric_1(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & v8_metric_1(B)
        & l1_metric_1(B) )
     => ( ~ v3_struct_0(k1_topreal7(A,B))
        & v1_metric_1(k1_topreal7(A,B))
        & v8_metric_1(k1_topreal7(A,B)) ) ) )).

fof(fc4_topreal7,axiom,(
    ! [A,B] :
      ( ( ~ v3_struct_0(A)
        & v9_metric_1(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & v9_metric_1(B)
        & l1_metric_1(B) )
     => ( ~ v3_struct_0(k1_topreal7(A,B))
        & v1_metric_1(k1_topreal7(A,B))
        & v9_metric_1(k1_topreal7(A,B)) ) ) )).

fof(fc5_topreal7,axiom,(
    ! [A,B] :
      ( ( ~ v3_struct_0(A)
        & v6_metric_1(A)
        & v7_metric_1(A)
        & v8_metric_1(A)
        & v9_metric_1(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & v6_metric_1(B)
        & v7_metric_1(B)
        & v8_metric_1(B)
        & v9_metric_1(B)
        & l1_metric_1(B) )
     => ( ~ v3_struct_0(k1_topreal7(A,B))
        & v1_metric_1(k1_topreal7(A,B))
        & v6_metric_1(k1_topreal7(A,B))
        & v7_metric_1(k1_topreal7(A,B))
        & v8_metric_1(k1_topreal7(A,B))
        & v9_metric_1(k1_topreal7(A,B)) ) ) )).

fof(t1_topreal7,axiom,(
    ! [A] :
      ( m1_subset_1(A,k1_numbers)
     => ! [B] :
          ( m1_subset_1(B,k1_numbers)
         => ( r1_xreal_0(k4_square_1(A,B),A)
           => k4_square_1(A,B) = A ) ) ) )).

fof(t2_topreal7,axiom,(
    ! [A] :
      ( m1_subset_1(A,k1_numbers)
     => ! [B] :
          ( m1_subset_1(B,k1_numbers)
         => ! [C] :
              ( m1_subset_1(C,k1_numbers)
             => ! [D] :
                  ( m1_subset_1(D,k1_numbers)
                 => r1_xreal_0(k4_square_1(k3_real_1(A,C),k3_real_1(B,D)),k3_real_1(k4_square_1(A,B),k4_square_1(C,D))) ) ) ) ) )).

fof(t3_topreal7,axiom,(
    ! [A] :
      ( m1_subset_1(A,k1_numbers)
     => ! [B] :
          ( m1_subset_1(B,k1_numbers)
         => ! [C] :
              ( m1_subset_1(C,k1_numbers)
             => ! [D] :
                  ( m1_subset_1(D,k1_numbers)
                 => ! [E] :
                      ( m1_subset_1(E,k1_numbers)
                     => ! [F] :
                          ( m1_subset_1(F,k1_numbers)
                         => ( ( r1_xreal_0(A,k3_real_1(B,C))
                              & r1_xreal_0(D,k3_real_1(E,F)) )
                           => r1_xreal_0(k4_square_1(A,D),k3_real_1(k4_square_1(B,E),k4_square_1(C,F))) ) ) ) ) ) ) ) )).

fof(t4_topreal7,axiom,(
    ! [A] :
      ( ( v1_relat_1(A)
        & v1_funct_1(A)
        & v1_finseq_1(A) )
     => ! [B] :
          ( ( v1_relat_1(B)
            & v1_funct_1(B)
            & v1_finseq_1(B) )
         => r1_tarski(k4_finseq_1(B),k4_finseq_1(k7_finseq_1(A,B))) ) ) )).

fof(t5_topreal7,axiom,(
    ! [A] :
      ( m2_subset_1(A,k1_numbers,k5_numbers)
     => ! [B] :
          ( ( v1_relat_1(B)
            & v1_funct_1(B)
            & v1_finseq_1(B) )
         => ! [C] :
              ( ( v1_relat_1(C)
                & v1_funct_1(C)
                & v1_finseq_1(C) )
             => ( r1_xreal_0(A,k1_nat_1(k3_finseq_1(B),k3_finseq_1(C)))
               => ( r1_xreal_0(A,k3_finseq_1(B))
                  | r2_hidden(k5_real_1(A,k3_finseq_1(B)),k4_finseq_1(C)) ) ) ) ) ) )).

fof(t6_topreal7,axiom,(
    ! [A] :
      ( ( v1_relat_1(A)
        & v1_funct_1(A)
        & v1_finseq_1(A) )
     => ! [B] :
          ( ( v1_relat_1(B)
            & v1_funct_1(B)
            & v1_finseq_1(B) )
         => ! [C] :
              ( ( v1_relat_1(C)
                & v1_funct_1(C)
                & v1_finseq_1(C) )
             => ! [D] :
                  ( ( v1_relat_1(D)
                    & v1_funct_1(D)
                    & v1_finseq_1(D) )
                 => ( ( k7_finseq_1(A,B) = k7_finseq_1(C,D)
                      & k3_finseq_1(A) = k3_finseq_1(C)
                      & k3_finseq_1(B) = k3_finseq_1(D) )
                   => ( A = C
                      & B = D ) ) ) ) ) ) )).

fof(t7_topreal7,axiom,(
    ! [A] :
      ( m2_finseq_1(A,k1_numbers)
     => ! [B] :
          ( m2_finseq_1(B,k1_numbers)
         => ( ( k3_finseq_1(A) = k3_finseq_1(B)
              | k4_finseq_1(A) = k4_finseq_1(B) )
           => ( k3_finseq_1(k3_rvsum_1(A,B)) = k3_finseq_1(A)
              & k4_finseq_1(k3_rvsum_1(A,B)) = k4_finseq_1(A) ) ) ) ) )).

fof(t8_topreal7,axiom,(
    ! [A] :
      ( m2_finseq_1(A,k1_numbers)
     => ! [B] :
          ( m2_finseq_1(B,k1_numbers)
         => ( ( k3_finseq_1(A) = k3_finseq_1(B)
              | k4_finseq_1(A) = k4_finseq_1(B) )
           => ( k3_finseq_1(k7_rvsum_1(A,B)) = k3_finseq_1(A)
              & k4_finseq_1(k7_rvsum_1(A,B)) = k4_finseq_1(A) ) ) ) ) )).

fof(t9_topreal7,axiom,(
    ! [A] :
      ( m2_finseq_1(A,k1_numbers)
     => ( k3_finseq_1(A) = k3_finseq_1(k11_rvsum_1(A))
        & k4_finseq_1(A) = k4_finseq_1(k11_rvsum_1(A)) ) ) )).

fof(t10_topreal7,axiom,(
    ! [A] :
      ( m2_finseq_1(A,k1_numbers)
     => ( k3_finseq_1(A) = k3_finseq_1(k3_euclid(A))
        & k4_finseq_1(A) = k4_finseq_1(k3_euclid(A)) ) ) )).

fof(t11_topreal7,axiom,(
    ! [A] :
      ( m2_finseq_1(A,k1_numbers)
     => ! [B] :
          ( m2_finseq_1(B,k1_numbers)
         => k11_rvsum_1(k8_finseq_1(k1_numbers,A,B)) = k8_finseq_1(k1_numbers,k11_rvsum_1(A),k11_rvsum_1(B)) ) ) )).

fof(t12_topreal7,axiom,(
    ! [A] :
      ( m2_finseq_1(A,k1_numbers)
     => ! [B] :
          ( m2_finseq_1(B,k1_numbers)
         => k3_euclid(k8_finseq_1(k1_numbers,A,B)) = k8_finseq_1(k1_numbers,k3_euclid(A),k3_euclid(B)) ) ) )).

fof(t13_topreal7,axiom,(
    ! [A] :
      ( m2_finseq_1(A,k1_numbers)
     => ! [B] :
          ( m2_finseq_1(B,k1_numbers)
         => ! [C] :
              ( m2_finseq_1(C,k1_numbers)
             => ! [D] :
                  ( m2_finseq_1(D,k1_numbers)
                 => ( ( k3_finseq_1(A) = k3_finseq_1(B)
                      & k3_finseq_1(C) = k3_finseq_1(D) )
                   => k11_rvsum_1(k3_rvsum_1(k8_finseq_1(k1_numbers,A,C),k8_finseq_1(k1_numbers,B,D))) = k8_finseq_1(k1_numbers,k11_rvsum_1(k3_rvsum_1(A,B)),k11_rvsum_1(k3_rvsum_1(C,D))) ) ) ) ) ) )).

fof(t14_topreal7,axiom,(
    ! [A] :
      ( m2_finseq_1(A,k1_numbers)
     => ! [B] :
          ( m2_finseq_1(B,k1_numbers)
         => ! [C] :
              ( m2_finseq_1(C,k1_numbers)
             => ! [D] :
                  ( m2_finseq_1(D,k1_numbers)
                 => ( ( k3_finseq_1(A) = k3_finseq_1(B)
                      & k3_finseq_1(C) = k3_finseq_1(D) )
                   => k3_euclid(k3_rvsum_1(k8_finseq_1(k1_numbers,A,C),k8_finseq_1(k1_numbers,B,D))) = k8_finseq_1(k1_numbers,k3_euclid(k3_rvsum_1(A,B)),k3_euclid(k3_rvsum_1(C,D))) ) ) ) ) ) )).

fof(t15_topreal7,axiom,(
    ! [A] :
      ( m2_finseq_1(A,k1_numbers)
     => ! [B] :
          ( m2_finseq_1(B,k1_numbers)
         => ! [C] :
              ( m2_finseq_1(C,k1_numbers)
             => ! [D] :
                  ( m2_finseq_1(D,k1_numbers)
                 => ( ( k3_finseq_1(A) = k3_finseq_1(B)
                      & k3_finseq_1(C) = k3_finseq_1(D) )
                   => k11_rvsum_1(k7_rvsum_1(k8_finseq_1(k1_numbers,A,C),k8_finseq_1(k1_numbers,B,D))) = k8_finseq_1(k1_numbers,k11_rvsum_1(k7_rvsum_1(A,B)),k11_rvsum_1(k7_rvsum_1(C,D))) ) ) ) ) ) )).

fof(t16_topreal7,axiom,(
    ! [A] :
      ( m2_finseq_1(A,k1_numbers)
     => ! [B] :
          ( m2_finseq_1(B,k1_numbers)
         => ! [C] :
              ( m2_finseq_1(C,k1_numbers)
             => ! [D] :
                  ( m2_finseq_1(D,k1_numbers)
                 => ( ( k3_finseq_1(A) = k3_finseq_1(B)
                      & k3_finseq_1(C) = k3_finseq_1(D) )
                   => k3_euclid(k7_rvsum_1(k8_finseq_1(k1_numbers,A,C),k8_finseq_1(k1_numbers,B,D))) = k8_finseq_1(k1_numbers,k3_euclid(k7_rvsum_1(A,B)),k3_euclid(k7_rvsum_1(C,D))) ) ) ) ) ) )).

fof(t17_topreal7,axiom,(
    ! [A] :
      ( m2_subset_1(A,k1_numbers,k5_numbers)
     => ! [B] :
          ( m2_finseq_1(B,k1_numbers)
         => ( k3_finseq_1(B) = A
           => r2_hidden(B,u1_struct_0(k14_euclid(A))) ) ) ) )).

fof(t18_topreal7,axiom,(
    ! [A] :
      ( m2_subset_1(A,k1_numbers,k5_numbers)
     => ! [B] :
          ( m2_finseq_1(B,k1_numbers)
         => ( k3_finseq_1(B) = A
           => r2_hidden(B,u1_struct_0(k15_euclid(A))) ) ) ) )).

fof(t19_topreal7,axiom,(
    ! [A] :
      ( m2_subset_1(A,k1_numbers,k5_numbers)
     => ! [B] :
          ( ( v1_relat_1(B)
            & v1_funct_1(B)
            & v1_finseq_1(B) )
         => ( r2_hidden(B,u1_struct_0(k14_euclid(A)))
           => k3_finseq_1(B) = A ) ) ) )).

fof(d1_topreal7,axiom,(
    ! [A] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A) )
     => ! [B] :
          ( ( ~ v3_struct_0(B)
            & l1_metric_1(B) )
         => ! [C] :
              ( ( v1_metric_1(C)
                & l1_metric_1(C) )
             => ( C = k1_topreal7(A,B)
              <=> ( u1_struct_0(C) = k2_zfmisc_1(u1_struct_0(A),u1_struct_0(B))
                  & ! [D] :
                      ( m1_subset_1(D,u1_struct_0(C))
                     => ! [E] :
                          ( m1_subset_1(E,u1_struct_0(C))
                         => ? [F] :
                              ( m1_subset_1(F,u1_struct_0(A))
                              & ? [G] :
                                  ( m1_subset_1(G,u1_struct_0(A))
                                  & ? [H] :
                                      ( m1_subset_1(H,u1_struct_0(B))
                                      & ? [I] :
                                          ( m1_subset_1(I,u1_struct_0(B))
                                          & D = k1_domain_1(u1_struct_0(A),u1_struct_0(B),F,H)
                                          & E = k1_domain_1(u1_struct_0(A),u1_struct_0(B),G,I)
                                          & k1_metric_1(u1_struct_0(C),u1_struct_0(C),u1_metric_1(C),D,E) = k4_square_1(k1_metric_1(u1_struct_0(A),u1_struct_0(A),u1_metric_1(A),F,G),k1_metric_1(u1_struct_0(B),u1_struct_0(B),u1_metric_1(B),H,I)) ) ) ) ) ) ) ) ) ) ) ) )).

fof(t20_topreal7,axiom,(
    ! [A] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A) )
     => ! [B] :
          ( ( ~ v3_struct_0(B)
            & l1_metric_1(B) )
         => ! [C] :
              ( m1_subset_1(C,u1_struct_0(A))
             => ! [D] :
                  ( m1_subset_1(D,u1_struct_0(A))
                 => ! [E] :
                      ( m1_subset_1(E,u1_struct_0(B))
                     => ! [F] :
                          ( m1_subset_1(F,u1_struct_0(B))
                         => k2_metric_1(k1_topreal7(A,B),k2_topreal7(A,B,C,E),k2_topreal7(A,B,D,F)) = k4_square_1(k2_metric_1(A,C,D),k2_metric_1(B,E,F)) ) ) ) ) ) ) )).

fof(t21_topreal7,axiom,(
    ! [A] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A) )
     => ! [B] :
          ( ( ~ v3_struct_0(B)
            & l1_metric_1(B) )
         => ! [C] :
              ( m1_subset_1(C,u1_struct_0(k1_topreal7(A,B)))
             => ! [D] :
                  ( m1_subset_1(D,u1_struct_0(k1_topreal7(A,B)))
                 => k2_metric_1(k1_topreal7(A,B),C,D) = k4_square_1(k2_metric_1(A,k3_topreal7(A,B,C),k3_topreal7(A,B,D)),k2_metric_1(B,k4_topreal7(A,B,C),k4_topreal7(A,B,D))) ) ) ) ) )).

fof(t22_topreal7,axiom,(
    ! [A] :
      ( ( ~ v3_struct_0(A)
        & v6_metric_1(A)
        & l1_metric_1(A) )
     => ! [B] :
          ( ( ~ v3_struct_0(B)
            & v6_metric_1(B)
            & l1_metric_1(B) )
         => v6_metric_1(k1_topreal7(A,B)) ) ) )).

fof(t23_topreal7,axiom,(
    ! [A] :
      ( ( ~ v3_struct_0(A)
        & v8_metric_1(A)
        & l1_metric_1(A) )
     => ! [B] :
          ( ( ~ v3_struct_0(B)
            & v8_metric_1(B)
            & l1_metric_1(B) )
         => v8_metric_1(k1_topreal7(A,B)) ) ) )).

fof(t24_topreal7,axiom,(
    ! [A] :
      ( ( ~ v3_struct_0(A)
        & v9_metric_1(A)
        & l1_metric_1(A) )
     => ! [B] :
          ( ( ~ v3_struct_0(B)
            & v9_metric_1(B)
            & l1_metric_1(B) )
         => v9_metric_1(k1_topreal7(A,B)) ) ) )).

fof(t25_topreal7,axiom,(
    ! [A] :
      ( ( ~ v3_struct_0(A)
        & v6_metric_1(A)
        & v7_metric_1(A)
        & v8_metric_1(A)
        & v9_metric_1(A)
        & l1_metric_1(A) )
     => ! [B] :
          ( ( ~ v3_struct_0(B)
            & v6_metric_1(B)
            & v7_metric_1(B)
            & v8_metric_1(B)
            & v9_metric_1(B)
            & l1_metric_1(B) )
         => k6_borsuk_1(k5_pcomps_1(A),k5_pcomps_1(B)) = k5_pcomps_1(k1_topreal7(A,B)) ) ) )).

fof(t26_topreal7,axiom,(
    ! [A] :
      ( ( ~ v3_struct_0(A)
        & v6_metric_1(A)
        & v7_metric_1(A)
        & v8_metric_1(A)
        & v9_metric_1(A)
        & l1_metric_1(A) )
     => ! [B] :
          ( ( ~ v3_struct_0(B)
            & v6_metric_1(B)
            & v7_metric_1(B)
            & v8_metric_1(B)
            & v9_metric_1(B)
            & l1_metric_1(B) )
         => ( ( u1_struct_0(A) = u1_struct_0(B)
              & ! [C] :
                  ( m1_subset_1(C,u1_struct_0(A))
                 => ! [D] :
                      ( m1_subset_1(D,u1_struct_0(B))
                     => ! [E] :
                          ( m1_subset_1(E,k1_numbers)
                         => ~ ( ~ r1_xreal_0(E,np__0)
                              & C = D
                              & ! [F] :
                                  ( m1_subset_1(F,k1_numbers)
                                 => ~ ( ~ r1_xreal_0(F,np__0)
                                      & r1_tarski(k9_metric_1(B,D,F),k9_metric_1(A,C,E)) ) ) ) ) ) )
              & ! [C] :
                  ( m1_subset_1(C,u1_struct_0(A))
                 => ! [D] :
                      ( m1_subset_1(D,u1_struct_0(B))
                     => ! [E] :
                          ( m1_subset_1(E,k1_numbers)
                         => ~ ( ~ r1_xreal_0(E,np__0)
                              & C = D
                              & ! [F] :
                                  ( m1_subset_1(F,k1_numbers)
                                 => ~ ( ~ r1_xreal_0(F,np__0)
                                      & r1_tarski(k9_metric_1(A,C,F),k9_metric_1(B,D,E)) ) ) ) ) ) ) )
           => k5_pcomps_1(A) = k5_pcomps_1(B) ) ) ) )).

fof(t27_topreal7,axiom,(
    ! [A] :
      ( m2_subset_1(A,k1_numbers,k5_numbers)
     => ! [B] :
          ( m2_subset_1(B,k1_numbers,k5_numbers)
         => r1_t_0topsp(k6_borsuk_1(k15_euclid(A),k15_euclid(B)),k15_euclid(k1_nat_1(A,B))) ) ) )).

fof(dt_k1_topreal7,axiom,(
    ! [A,B] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & l1_metric_1(B) )
     => ( v1_metric_1(k1_topreal7(A,B))
        & l1_metric_1(k1_topreal7(A,B)) ) ) )).

fof(dt_k2_topreal7,axiom,(
    ! [A,B,C,D] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & l1_metric_1(B)
        & m1_subset_1(C,u1_struct_0(A))
        & m1_subset_1(D,u1_struct_0(B)) )
     => m1_subset_1(k2_topreal7(A,B,C,D),u1_struct_0(k1_topreal7(A,B))) ) )).

fof(redefinition_k2_topreal7,axiom,(
    ! [A,B,C,D] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & l1_metric_1(B)
        & m1_subset_1(C,u1_struct_0(A))
        & m1_subset_1(D,u1_struct_0(B)) )
     => k2_topreal7(A,B,C,D) = k4_tarski(C,D) ) )).

fof(dt_k3_topreal7,axiom,(
    ! [A,B,C] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & l1_metric_1(B)
        & m1_subset_1(C,u1_struct_0(k1_topreal7(A,B))) )
     => m1_subset_1(k3_topreal7(A,B,C),u1_struct_0(A)) ) )).

fof(redefinition_k3_topreal7,axiom,(
    ! [A,B,C] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & l1_metric_1(B)
        & m1_subset_1(C,u1_struct_0(k1_topreal7(A,B))) )
     => k3_topreal7(A,B,C) = k1_mcart_1(C) ) )).

fof(dt_k4_topreal7,axiom,(
    ! [A,B,C] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & l1_metric_1(B)
        & m1_subset_1(C,u1_struct_0(k1_topreal7(A,B))) )
     => m1_subset_1(k4_topreal7(A,B,C),u1_struct_0(B)) ) )).

fof(redefinition_k4_topreal7,axiom,(
    ! [A,B,C] :
      ( ( ~ v3_struct_0(A)
        & l1_metric_1(A)
        & ~ v3_struct_0(B)
        & l1_metric_1(B)
        & m1_subset_1(C,u1_struct_0(k1_topreal7(A,B))) )
     => k4_topreal7(A,B,C) = k2_mcart_1(C) ) )).
%------------------------------------------------------------------------------