SET007 Axioms: SET007+642.ax


%------------------------------------------------------------------------------
% File     : SET007+642 : TPTP v7.5.0. Released v3.4.0.
% Domain   : Set Theory
% Axioms   : Integrability of Bounded Total Functions
% 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    : integra4 [Urb08]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   31 (   0 unit)
%            Number of atoms       :  297 (  21 equality)
%            Maximal formula depth :   23 (  10 average)
%            Number of connectives :  274 (   8 ~  ;   3  |; 141  &)
%                                         (   3 <=>; 119 =>;   0 <=)
%                                         (   0 <~>;   0 ~|;   0 ~&)
%            Number of predicates  :   22 (   0 propositional; 1-3 arity)
%            Number of functors    :   36 (   4 constant; 0-4 arity)
%            Number of variables   :   99 (   0 singleton;  97 !;   2 ?)
%            Maximal term depth    :    6 (   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(t1_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( m3_integra1(B,A,k8_integra1(A))
         => ( k3_integra1(A) = np__0
           => k3_finseq_1(B) = np__1 ) ) ) )).

fof(t2_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ( r3_integra1(A,k5_rfunct_1(A,A))
        & k13_integra1(A,k5_rfunct_1(A,A)) = k3_integra1(A) ) ) )).

fof(t3_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & m2_relset_1(B,A,k1_numbers) )
         => ! [C] :
              ( m1_subset_1(C,k1_numbers)
             => ( ( v1_partfun1(B,A,k1_numbers)
                  & k5_relset_1(A,k1_numbers,B) = k1_seq_4(C) )
              <=> B = k13_seq_1(A,k1_numbers,k5_rfunct_1(A,A),C) ) ) ) ) )).

fof(t4_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ! [C] :
              ( m1_subset_1(C,k1_numbers)
             => ( k5_relset_1(A,k1_numbers,B) = k1_seq_4(C)
               => ( r3_integra1(A,B)
                  & k13_integra1(A,B) = k4_real_1(C,k3_integra1(A)) ) ) ) ) ) )).

fof(t5_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( m1_subset_1(B,k1_numbers)
         => ? [C] :
              ( v1_funct_1(C)
              & v1_funct_2(C,A,k1_numbers)
              & m2_relset_1(C,A,k1_numbers)
              & k5_relset_1(A,k1_numbers,C) = k1_seq_4(B)
              & r3_rfunct_1(C,A) ) ) ) )).

fof(t6_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & m2_relset_1(B,A,k1_numbers) )
         => ! [C] :
              ( m3_integra1(C,A,k8_integra1(A))
             => ( k3_integra1(A) = np__0
               => ( r3_integra1(A,B)
                  & k13_integra1(A,B) = np__0 ) ) ) ) ) )).

fof(t7_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ~ ( r3_rfunct_1(B,A)
              & r3_integra1(A,B)
              & ! [C] :
                  ( m1_subset_1(C,k1_numbers)
                 => ~ ( r1_xreal_0(k4_pscomp_1(k5_relset_1(A,k1_numbers,B)),C)
                      & r1_xreal_0(C,k3_pscomp_1(k5_relset_1(A,k1_numbers,B)))
                      & k13_integra1(A,B) = k4_real_1(C,k3_integra1(A)) ) ) ) ) ) )).

fof(t8_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ! [C] :
              ( ( v1_funct_1(C)
                & v1_funct_2(C,k5_numbers,k8_integra1(A))
                & m2_relset_1(C,k5_numbers,k8_integra1(A)) )
             => ( ( r3_rfunct_1(B,A)
                  & v4_seq_2(k2_integra2(A,C))
                  & k2_seq_2(k2_integra2(A,C)) = np__0 )
               => ( v4_seq_2(k4_integra2(A,B,C))
                  & k2_seq_2(k4_integra2(A,B,C)) = k12_integra1(A,B) ) ) ) ) ) )).

fof(t9_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ! [C] :
              ( ( v1_funct_1(C)
                & v1_funct_2(C,k5_numbers,k8_integra1(A))
                & m2_relset_1(C,k5_numbers,k8_integra1(A)) )
             => ( ( r3_rfunct_1(B,A)
                  & v4_seq_2(k2_integra2(A,C))
                  & k2_seq_2(k2_integra2(A,C)) = np__0 )
               => ( v4_seq_2(k3_integra2(A,B,C))
                  & k2_seq_2(k3_integra2(A,B,C)) = k11_integra1(A,B) ) ) ) ) ) )).

fof(t10_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ( r3_rfunct_1(B,A)
           => ( r1_integra1(A,B)
              & r2_integra1(A,B) ) ) ) ) )).

fof(d1_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( m3_integra1(B,A,k8_integra1(A))
         => ! [C] :
              ( m2_subset_1(C,k1_numbers,k5_numbers)
             => ( r1_integra4(A,B,C)
              <=> ( k3_finseq_1(B) = C
                  & ! [D] :
                      ( m2_subset_1(D,k1_numbers,k5_numbers)
                     => ( r2_hidden(D,k4_finseq_1(B))
                       => k1_goboard1(B,D) = k3_real_1(k4_pscomp_1(A),k4_real_1(k6_real_1(k3_integra1(A),k3_finseq_1(B)),D)) ) ) ) ) ) ) ) )).

fof(t11_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ? [B] :
          ( v1_funct_1(B)
          & v1_funct_2(B,k5_numbers,k8_integra1(A))
          & m2_relset_1(B,k5_numbers,k8_integra1(A))
          & v4_seq_2(k2_integra2(A,B))
          & k2_seq_2(k2_integra2(A,B)) = np__0 ) ) )).

fof(t12_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ( r3_rfunct_1(B,A)
           => ( r3_integra1(A,B)
            <=> ! [C] :
                  ( ( v1_funct_1(C)
                    & v1_funct_2(C,k5_numbers,k8_integra1(A))
                    & m2_relset_1(C,k5_numbers,k8_integra1(A)) )
                 => ( ( v4_seq_2(k2_integra2(A,C))
                      & k2_seq_2(k2_integra2(A,C)) = np__0 )
                   => k5_real_1(k2_seq_2(k3_integra2(A,B,C)),k2_seq_2(k4_integra2(A,B,C))) = np__0 ) ) ) ) ) ) )).

fof(t13_integra4,axiom,(
    ! [A] :
      ( ~ v1_xboole_0(A)
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ( v1_partfun1(k19_rfunct_3(A,B),A,k1_numbers)
            & v1_partfun1(k20_rfunct_3(A,B),A,k1_numbers) ) ) ) )).

fof(t14_integra4,axiom,(
    ! [A] :
      ( ~ v1_xboole_0(A)
     => ! [B,C] :
          ( ( v1_funct_1(C)
            & m2_relset_1(C,A,k1_numbers) )
         => ( r1_rfunct_1(C,B)
           => r1_rfunct_1(k19_rfunct_3(A,C),B) ) ) ) )).

fof(t15_integra4,axiom,(
    ! [A] :
      ( ~ v1_xboole_0(A)
     => ! [B,C] :
          ( ( v1_funct_1(C)
            & m2_relset_1(C,A,k1_numbers) )
         => r2_rfunct_1(k19_rfunct_3(A,C),B) ) ) )).

fof(t16_integra4,axiom,(
    ! [A] :
      ( ~ v1_xboole_0(A)
     => ! [B,C] :
          ( ( v1_funct_1(C)
            & m2_relset_1(C,A,k1_numbers) )
         => ( r2_rfunct_1(C,B)
           => r1_rfunct_1(k20_rfunct_3(A,C),B) ) ) ) )).

fof(t17_integra4,axiom,(
    ! [A] :
      ( ~ v1_xboole_0(A)
     => ! [B,C] :
          ( ( v1_funct_1(C)
            & m2_relset_1(C,A,k1_numbers) )
         => r2_rfunct_1(k20_rfunct_3(A,C),B) ) ) )).

fof(t18_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B,C] :
          ( ( v1_funct_1(C)
            & m2_relset_1(C,A,k1_numbers) )
         => ( r1_rfunct_1(C,A)
           => v1_seq_4(k5_relset_1(A,k1_numbers,k2_partfun1(A,k1_numbers,C,B))) ) ) ) )).

fof(t19_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B,C] :
          ( ( v1_funct_1(C)
            & m2_relset_1(C,A,k1_numbers) )
         => ( r2_rfunct_1(C,A)
           => v2_seq_4(k5_relset_1(A,k1_numbers,k2_partfun1(A,k1_numbers,C,B))) ) ) ) )).

fof(t20_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ( ( r3_rfunct_1(B,A)
              & r3_integra1(A,B) )
           => r3_integra1(A,k19_rfunct_3(A,B)) ) ) ) )).

fof(t21_integra4,axiom,(
    ! [A] :
      ( ~ v1_xboole_0(A)
     => ! [B] :
          ( ( v1_funct_1(B)
            & m2_relset_1(B,A,k1_numbers) )
         => k20_rfunct_3(A,B) = k19_rfunct_3(A,k16_seq_1(A,k1_numbers,B)) ) ) )).

fof(t22_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ( ( r3_rfunct_1(B,A)
              & r3_integra1(A,B) )
           => r3_integra1(A,k20_rfunct_3(A,B)) ) ) ) )).

fof(t23_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ( ( r3_rfunct_1(B,A)
              & r3_integra1(A,B) )
           => ( r3_integra1(A,k21_seq_1(A,k1_numbers,B))
              & r1_xreal_0(k18_complex1(k13_integra1(A,B)),k13_integra1(A,k21_seq_1(A,k1_numbers,B))) ) ) ) ) )).

fof(t24_integra4,axiom,(
    ! [A] :
      ( m1_subset_1(A,k1_numbers)
     => ! [B] :
          ( ( v1_integra1(B)
            & m1_subset_1(B,k1_zfmisc_1(k1_numbers)) )
         => ! [C] :
              ( ( v1_funct_1(C)
                & v1_funct_2(C,B,k1_numbers)
                & m2_relset_1(C,B,k1_numbers) )
             => ( ! [D] :
                    ( m1_subset_1(D,k1_numbers)
                   => ! [E] :
                        ( m1_subset_1(E,k1_numbers)
                       => ( ( r2_hidden(D,B)
                            & r2_hidden(E,B) )
                         => r1_xreal_0(k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,C,D),k2_seq_1(B,k1_numbers,C,E))),A) ) ) )
               => r1_xreal_0(k5_real_1(k3_pscomp_1(k5_relset_1(B,k1_numbers,C)),k4_pscomp_1(k5_relset_1(B,k1_numbers,C))),A) ) ) ) ) )).

fof(t25_integra4,axiom,(
    ! [A] :
      ( m1_subset_1(A,k1_numbers)
     => ! [B] :
          ( ( v1_integra1(B)
            & m1_subset_1(B,k1_zfmisc_1(k1_numbers)) )
         => ! [C] :
              ( ( v1_funct_1(C)
                & v1_funct_2(C,B,k1_numbers)
                & m2_relset_1(C,B,k1_numbers) )
             => ! [D] :
                  ( ( v1_funct_1(D)
                    & v1_funct_2(D,B,k1_numbers)
                    & m2_relset_1(D,B,k1_numbers) )
                 => ( ( r3_rfunct_1(C,B)
                      & r1_xreal_0(np__0,A)
                      & ! [E] :
                          ( m1_subset_1(E,k1_numbers)
                         => ! [F] :
                              ( m1_subset_1(F,k1_numbers)
                             => ( ( r2_hidden(E,B)
                                  & r2_hidden(F,B) )
                               => r1_xreal_0(k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,D,E),k2_seq_1(B,k1_numbers,D,F))),k4_real_1(A,k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,C,E),k2_seq_1(B,k1_numbers,C,F))))) ) ) ) )
                   => r1_xreal_0(k5_real_1(k3_pscomp_1(k5_relset_1(B,k1_numbers,D)),k4_pscomp_1(k5_relset_1(B,k1_numbers,D))),k4_real_1(A,k5_real_1(k3_pscomp_1(k5_relset_1(B,k1_numbers,C)),k4_pscomp_1(k5_relset_1(B,k1_numbers,C))))) ) ) ) ) ) )).

fof(t26_integra4,axiom,(
    ! [A] :
      ( m1_subset_1(A,k1_numbers)
     => ! [B] :
          ( ( v1_integra1(B)
            & m1_subset_1(B,k1_zfmisc_1(k1_numbers)) )
         => ! [C] :
              ( ( v1_funct_1(C)
                & v1_funct_2(C,B,k1_numbers)
                & m2_relset_1(C,B,k1_numbers) )
             => ! [D] :
                  ( ( v1_funct_1(D)
                    & v1_funct_2(D,B,k1_numbers)
                    & m2_relset_1(D,B,k1_numbers) )
                 => ! [E] :
                      ( ( v1_funct_1(E)
                        & v1_funct_2(E,B,k1_numbers)
                        & m2_relset_1(E,B,k1_numbers) )
                     => ( ( r3_rfunct_1(C,B)
                          & r3_rfunct_1(D,B)
                          & r1_xreal_0(np__0,A)
                          & ! [F] :
                              ( m1_subset_1(F,k1_numbers)
                             => ! [G] :
                                  ( m1_subset_1(G,k1_numbers)
                                 => ( ( r2_hidden(F,B)
                                      & r2_hidden(G,B) )
                                   => r1_xreal_0(k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,E,F),k2_seq_1(B,k1_numbers,E,G))),k4_real_1(A,k3_real_1(k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,C,F),k2_seq_1(B,k1_numbers,C,G))),k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,D,F),k2_seq_1(B,k1_numbers,D,G)))))) ) ) ) )
                       => r1_xreal_0(k5_real_1(k3_pscomp_1(k5_relset_1(B,k1_numbers,E)),k4_pscomp_1(k5_relset_1(B,k1_numbers,E))),k4_real_1(A,k3_real_1(k5_real_1(k3_pscomp_1(k5_relset_1(B,k1_numbers,C)),k4_pscomp_1(k5_relset_1(B,k1_numbers,C))),k5_real_1(k3_pscomp_1(k5_relset_1(B,k1_numbers,D)),k4_pscomp_1(k5_relset_1(B,k1_numbers,D)))))) ) ) ) ) ) ) )).

fof(t27_integra4,axiom,(
    ! [A] :
      ( m1_subset_1(A,k1_numbers)
     => ! [B] :
          ( ( v1_integra1(B)
            & m1_subset_1(B,k1_zfmisc_1(k1_numbers)) )
         => ! [C] :
              ( ( v1_funct_1(C)
                & v1_funct_2(C,B,k1_numbers)
                & m2_relset_1(C,B,k1_numbers) )
             => ! [D] :
                  ( ( v1_funct_1(D)
                    & v1_funct_2(D,B,k1_numbers)
                    & m2_relset_1(D,B,k1_numbers) )
                 => ( ( r3_rfunct_1(C,B)
                      & r3_integra1(B,C)
                      & r3_rfunct_1(D,B)
                      & ! [E] :
                          ( m1_subset_1(E,k1_numbers)
                         => ! [F] :
                              ( m1_subset_1(F,k1_numbers)
                             => ( ( r2_hidden(E,B)
                                  & r2_hidden(F,B) )
                               => r1_xreal_0(k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,D,E),k2_seq_1(B,k1_numbers,D,F))),k4_real_1(A,k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,C,E),k2_seq_1(B,k1_numbers,C,F))))) ) ) ) )
                   => ( r1_xreal_0(A,np__0)
                      | r3_integra1(B,D) ) ) ) ) ) ) )).

fof(t28_integra4,axiom,(
    ! [A] :
      ( m1_subset_1(A,k1_numbers)
     => ! [B] :
          ( ( v1_integra1(B)
            & m1_subset_1(B,k1_zfmisc_1(k1_numbers)) )
         => ! [C] :
              ( ( v1_funct_1(C)
                & v1_funct_2(C,B,k1_numbers)
                & m2_relset_1(C,B,k1_numbers) )
             => ! [D] :
                  ( ( v1_funct_1(D)
                    & v1_funct_2(D,B,k1_numbers)
                    & m2_relset_1(D,B,k1_numbers) )
                 => ! [E] :
                      ( ( v1_funct_1(E)
                        & v1_funct_2(E,B,k1_numbers)
                        & m2_relset_1(E,B,k1_numbers) )
                     => ( ( r3_rfunct_1(C,B)
                          & r3_integra1(B,C)
                          & r3_rfunct_1(D,B)
                          & r3_integra1(B,D)
                          & r3_rfunct_1(E,B)
                          & ! [F] :
                              ( m1_subset_1(F,k1_numbers)
                             => ! [G] :
                                  ( m1_subset_1(G,k1_numbers)
                                 => ( ( r2_hidden(F,B)
                                      & r2_hidden(G,B) )
                                   => r1_xreal_0(k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,E,F),k2_seq_1(B,k1_numbers,E,G))),k4_real_1(A,k3_real_1(k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,C,F),k2_seq_1(B,k1_numbers,C,G))),k18_complex1(k5_real_1(k2_seq_1(B,k1_numbers,D,F),k2_seq_1(B,k1_numbers,D,G)))))) ) ) ) )
                       => ( r1_xreal_0(A,np__0)
                          | r3_integra1(B,E) ) ) ) ) ) ) ) )).

fof(t29_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ! [C] :
              ( ( v1_funct_1(C)
                & v1_funct_2(C,A,k1_numbers)
                & m2_relset_1(C,A,k1_numbers) )
             => ( ( r3_rfunct_1(B,A)
                  & r3_integra1(A,B)
                  & r3_rfunct_1(C,A)
                  & r3_integra1(A,C) )
               => r3_integra1(A,k8_seq_1(A,k1_numbers,B,C)) ) ) ) ) )).

fof(t30_integra4,axiom,(
    ! [A] :
      ( ( v1_integra1(A)
        & m1_subset_1(A,k1_zfmisc_1(k1_numbers)) )
     => ! [B] :
          ( ( v1_funct_1(B)
            & v1_funct_2(B,A,k1_numbers)
            & m2_relset_1(B,A,k1_numbers) )
         => ( ( r3_rfunct_1(B,A)
              & r3_integra1(A,B)
              & r3_rfunct_1(k4_rfunct_1(A,k1_numbers,B),A) )
           => ( r2_hidden(np__0,k5_relset_1(A,k1_numbers,B))
              | r3_integra1(A,k4_rfunct_1(A,k1_numbers,B)) ) ) ) ) )).
%------------------------------------------------------------------------------