TSTP Solution File: LAT292+1 by Vampire-SAT---4.8

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Vampire-SAT---4.8
% Problem  : LAT292+1 : TPTP v8.1.2. Released v3.4.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : vampire --mode casc_sat -m 16384 --cores 7 -t %d %s

% Computer : n019.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8042.1875MB
% OS       : Linux 3.10.0-693.el7.x86_64
% CPULimit : 300s
% WCLimit  : 300s
% DateTime : Tue Apr 30 13:22:05 EDT 2024

% Result   : Theorem 0.22s 0.43s
% Output   : Refutation 0.22s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   28
%            Number of leaves      :    6
% Syntax   : Number of formulae    :   57 (   9 unt;   0 def)
%            Number of atoms       :  299 (   9 equ)
%            Maximal formula atoms :   18 (   5 avg)
%            Number of connectives :  418 ( 176   ~; 168   |;  67   &)
%                                         (   0 <=>;   7  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    9 (   6 avg)
%            Maximal term depth    :    3 (   1 avg)
%            Number of predicates  :   11 (   9 usr;   1 prp; 0-2 aty)
%            Number of functors    :    4 (   4 usr;   1 con; 0-1 aty)
%            Number of variables   :   30 (  25   !;   5   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(f1559,plain,
    $false,
    inference(resolution,[],[f1555,f338]) ).

fof(f338,plain,
    l3_lattices(sK7),
    inference(cnf_transformation,[],[f262]) ).

fof(f262,plain,
    ( ! [X1] :
        ( ~ r1_filter_1(sK7,k6_lopclset(X1))
        | ~ l1_pre_topc(X1)
        | ~ v2_pre_topc(X1)
        | v3_struct_0(X1) )
    & l3_lattices(sK7)
    & ~ v3_realset2(sK7)
    & v17_lattices(sK7)
    & v10_lattices(sK7)
    & ~ v3_struct_0(sK7) ),
    inference(skolemisation,[status(esa),new_symbols(skolem,[sK7])],[f138,f261]) ).

fof(f261,plain,
    ( ? [X0] :
        ( ! [X1] :
            ( ~ r1_filter_1(X0,k6_lopclset(X1))
            | ~ l1_pre_topc(X1)
            | ~ v2_pre_topc(X1)
            | v3_struct_0(X1) )
        & l3_lattices(X0)
        & ~ v3_realset2(X0)
        & v17_lattices(X0)
        & v10_lattices(X0)
        & ~ v3_struct_0(X0) )
   => ( ! [X1] :
          ( ~ r1_filter_1(sK7,k6_lopclset(X1))
          | ~ l1_pre_topc(X1)
          | ~ v2_pre_topc(X1)
          | v3_struct_0(X1) )
      & l3_lattices(sK7)
      & ~ v3_realset2(sK7)
      & v17_lattices(sK7)
      & v10_lattices(sK7)
      & ~ v3_struct_0(sK7) ) ),
    introduced(choice_axiom,[]) ).

fof(f138,plain,
    ? [X0] :
      ( ! [X1] :
          ( ~ r1_filter_1(X0,k6_lopclset(X1))
          | ~ l1_pre_topc(X1)
          | ~ v2_pre_topc(X1)
          | v3_struct_0(X1) )
      & l3_lattices(X0)
      & ~ v3_realset2(X0)
      & v17_lattices(X0)
      & v10_lattices(X0)
      & ~ v3_struct_0(X0) ),
    inference(flattening,[],[f137]) ).

fof(f137,plain,
    ? [X0] :
      ( ! [X1] :
          ( ~ r1_filter_1(X0,k6_lopclset(X1))
          | ~ l1_pre_topc(X1)
          | ~ v2_pre_topc(X1)
          | v3_struct_0(X1) )
      & l3_lattices(X0)
      & ~ v3_realset2(X0)
      & v17_lattices(X0)
      & v10_lattices(X0)
      & ~ v3_struct_0(X0) ),
    inference(ennf_transformation,[],[f2]) ).

fof(f2,negated_conjecture,
    ~ ! [X0] :
        ( ( l3_lattices(X0)
          & ~ v3_realset2(X0)
          & v17_lattices(X0)
          & v10_lattices(X0)
          & ~ v3_struct_0(X0) )
       => ? [X1] :
            ( r1_filter_1(X0,k6_lopclset(X1))
            & l1_pre_topc(X1)
            & v2_pre_topc(X1)
            & ~ v3_struct_0(X1) ) ),
    inference(negated_conjecture,[],[f1]) ).

fof(f1,conjecture,
    ! [X0] :
      ( ( l3_lattices(X0)
        & ~ v3_realset2(X0)
        & v17_lattices(X0)
        & v10_lattices(X0)
        & ~ v3_struct_0(X0) )
     => ? [X1] :
          ( r1_filter_1(X0,k6_lopclset(X1))
          & l1_pre_topc(X1)
          & v2_pre_topc(X1)
          & ~ v3_struct_0(X1) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t44_lopclset) ).

fof(f1555,plain,
    ~ l3_lattices(sK7),
    inference(resolution,[],[f1552,f335]) ).

fof(f335,plain,
    v10_lattices(sK7),
    inference(cnf_transformation,[],[f262]) ).

fof(f1552,plain,
    ( ~ v10_lattices(sK7)
    | ~ l3_lattices(sK7) ),
    inference(resolution,[],[f1551,f336]) ).

fof(f336,plain,
    v17_lattices(sK7),
    inference(cnf_transformation,[],[f262]) ).

fof(f1551,plain,
    ( ~ v17_lattices(sK7)
    | ~ l3_lattices(sK7)
    | ~ v10_lattices(sK7) ),
    inference(resolution,[],[f1550,f334]) ).

fof(f334,plain,
    ~ v3_struct_0(sK7),
    inference(cnf_transformation,[],[f262]) ).

fof(f1550,plain,
    ( v3_struct_0(sK7)
    | ~ l3_lattices(sK7)
    | ~ v17_lattices(sK7)
    | ~ v10_lattices(sK7) ),
    inference(resolution,[],[f1549,f337]) ).

fof(f337,plain,
    ~ v3_realset2(sK7),
    inference(cnf_transformation,[],[f262]) ).

fof(f1549,plain,
    ( v3_realset2(sK7)
    | ~ v10_lattices(sK7)
    | ~ l3_lattices(sK7)
    | ~ v17_lattices(sK7)
    | v3_struct_0(sK7) ),
    inference(duplicate_literal_removal,[],[f1548]) ).

fof(f1548,plain,
    ( ~ l3_lattices(sK7)
    | ~ v10_lattices(sK7)
    | ~ l3_lattices(sK7)
    | v3_realset2(sK7)
    | ~ v17_lattices(sK7)
    | ~ v10_lattices(sK7)
    | v3_struct_0(sK7) ),
    inference(resolution,[],[f1545,f463]) ).

fof(f463,plain,
    ! [X0] :
      ( l1_pre_topc(k11_lopclset(X0))
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(cnf_transformation,[],[f209]) ).

fof(f209,plain,
    ! [X0] :
      ( ( l1_pre_topc(k11_lopclset(X0))
        & v2_pre_topc(k11_lopclset(X0))
        & v1_pre_topc(k11_lopclset(X0)) )
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(flattening,[],[f208]) ).

fof(f208,plain,
    ! [X0] :
      ( ( l1_pre_topc(k11_lopclset(X0))
        & v2_pre_topc(k11_lopclset(X0))
        & v1_pre_topc(k11_lopclset(X0)) )
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(ennf_transformation,[],[f41]) ).

fof(f41,axiom,
    ! [X0] :
      ( ( l3_lattices(X0)
        & ~ v3_realset2(X0)
        & v17_lattices(X0)
        & v10_lattices(X0)
        & ~ v3_struct_0(X0) )
     => ( l1_pre_topc(k11_lopclset(X0))
        & v2_pre_topc(k11_lopclset(X0))
        & v1_pre_topc(k11_lopclset(X0)) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',dt_k11_lopclset) ).

fof(f1545,plain,
    ( ~ l1_pre_topc(k11_lopclset(sK7))
    | ~ l3_lattices(sK7)
    | ~ v10_lattices(sK7) ),
    inference(resolution,[],[f1544,f336]) ).

fof(f1544,plain,
    ( ~ v17_lattices(sK7)
    | ~ l3_lattices(sK7)
    | ~ l1_pre_topc(k11_lopclset(sK7))
    | ~ v10_lattices(sK7) ),
    inference(resolution,[],[f1543,f334]) ).

fof(f1543,plain,
    ( v3_struct_0(sK7)
    | ~ l1_pre_topc(k11_lopclset(sK7))
    | ~ l3_lattices(sK7)
    | ~ v17_lattices(sK7)
    | ~ v10_lattices(sK7) ),
    inference(resolution,[],[f1542,f337]) ).

fof(f1542,plain,
    ( v3_realset2(sK7)
    | ~ v10_lattices(sK7)
    | ~ l1_pre_topc(k11_lopclset(sK7))
    | ~ l3_lattices(sK7)
    | ~ v17_lattices(sK7)
    | v3_struct_0(sK7) ),
    inference(duplicate_literal_removal,[],[f1541]) ).

fof(f1541,plain,
    ( ~ l3_lattices(sK7)
    | ~ v10_lattices(sK7)
    | ~ l1_pre_topc(k11_lopclset(sK7))
    | ~ l3_lattices(sK7)
    | v3_realset2(sK7)
    | ~ v17_lattices(sK7)
    | ~ v10_lattices(sK7)
    | v3_struct_0(sK7) ),
    inference(resolution,[],[f1538,f460]) ).

fof(f460,plain,
    ! [X0] :
      ( v2_pre_topc(k11_lopclset(X0))
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(cnf_transformation,[],[f207]) ).

fof(f207,plain,
    ! [X0] :
      ( ( v2_pre_topc(k11_lopclset(X0))
        & v1_pre_topc(k11_lopclset(X0))
        & ~ v3_struct_0(k11_lopclset(X0)) )
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(flattening,[],[f206]) ).

fof(f206,plain,
    ! [X0] :
      ( ( v2_pre_topc(k11_lopclset(X0))
        & v1_pre_topc(k11_lopclset(X0))
        & ~ v3_struct_0(k11_lopclset(X0)) )
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(ennf_transformation,[],[f75]) ).

fof(f75,axiom,
    ! [X0] :
      ( ( l3_lattices(X0)
        & ~ v3_realset2(X0)
        & v17_lattices(X0)
        & v10_lattices(X0)
        & ~ v3_struct_0(X0) )
     => ( v2_pre_topc(k11_lopclset(X0))
        & v1_pre_topc(k11_lopclset(X0))
        & ~ v3_struct_0(k11_lopclset(X0)) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fc4_lopclset) ).

fof(f1538,plain,
    ( ~ v2_pre_topc(k11_lopclset(sK7))
    | ~ l3_lattices(sK7)
    | ~ v10_lattices(sK7)
    | ~ l1_pre_topc(k11_lopclset(sK7)) ),
    inference(resolution,[],[f1533,f336]) ).

fof(f1533,plain,
    ( ~ v17_lattices(sK7)
    | ~ v2_pre_topc(k11_lopclset(sK7))
    | ~ l3_lattices(sK7)
    | ~ v10_lattices(sK7)
    | ~ l1_pre_topc(k11_lopclset(sK7)) ),
    inference(resolution,[],[f1532,f334]) ).

fof(f1532,plain,
    ( v3_struct_0(sK7)
    | ~ l3_lattices(sK7)
    | ~ v2_pre_topc(k11_lopclset(sK7))
    | ~ v17_lattices(sK7)
    | ~ v10_lattices(sK7)
    | ~ l1_pre_topc(k11_lopclset(sK7)) ),
    inference(resolution,[],[f1531,f337]) ).

fof(f1531,plain,
    ( v3_realset2(sK7)
    | ~ l1_pre_topc(k11_lopclset(sK7))
    | ~ l3_lattices(sK7)
    | ~ v2_pre_topc(k11_lopclset(sK7))
    | ~ v17_lattices(sK7)
    | ~ v10_lattices(sK7)
    | v3_struct_0(sK7) ),
    inference(resolution,[],[f1525,f1200]) ).

fof(f1200,plain,
    ~ v3_struct_0(k11_lopclset(sK7)),
    inference(resolution,[],[f1198,f338]) ).

fof(f1198,plain,
    ( ~ l3_lattices(sK7)
    | ~ v3_struct_0(k11_lopclset(sK7)) ),
    inference(resolution,[],[f1195,f335]) ).

fof(f1195,plain,
    ( ~ v10_lattices(sK7)
    | ~ v3_struct_0(k11_lopclset(sK7))
    | ~ l3_lattices(sK7) ),
    inference(resolution,[],[f1194,f336]) ).

fof(f1194,plain,
    ( ~ v17_lattices(sK7)
    | ~ v3_struct_0(k11_lopclset(sK7))
    | ~ v10_lattices(sK7)
    | ~ l3_lattices(sK7) ),
    inference(resolution,[],[f1192,f334]) ).

fof(f1192,plain,
    ( v3_struct_0(sK7)
    | ~ v3_struct_0(k11_lopclset(sK7))
    | ~ v17_lattices(sK7)
    | ~ v10_lattices(sK7)
    | ~ l3_lattices(sK7) ),
    inference(resolution,[],[f458,f337]) ).

fof(f458,plain,
    ! [X0] :
      ( v3_realset2(X0)
      | ~ l3_lattices(X0)
      | ~ v3_struct_0(k11_lopclset(X0))
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(cnf_transformation,[],[f207]) ).

fof(f1525,plain,
    ( v3_struct_0(k11_lopclset(sK7))
    | ~ v2_pre_topc(k11_lopclset(sK7))
    | ~ l1_pre_topc(k11_lopclset(sK7))
    | ~ l3_lattices(sK7)
    | v3_realset2(sK7)
    | ~ v17_lattices(sK7)
    | ~ v10_lattices(sK7)
    | v3_struct_0(sK7) ),
    inference(resolution,[],[f1524,f453]) ).

fof(f453,plain,
    ! [X0] :
      ( r1_filter_1(X0,k12_lopclset(X0))
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(cnf_transformation,[],[f201]) ).

fof(f201,plain,
    ! [X0] :
      ( r1_filter_1(X0,k12_lopclset(X0))
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(flattening,[],[f200]) ).

fof(f200,plain,
    ! [X0] :
      ( r1_filter_1(X0,k12_lopclset(X0))
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(ennf_transformation,[],[f108]) ).

fof(f108,axiom,
    ! [X0] :
      ( ( l3_lattices(X0)
        & ~ v3_realset2(X0)
        & v17_lattices(X0)
        & v10_lattices(X0)
        & ~ v3_struct_0(X0) )
     => r1_filter_1(X0,k12_lopclset(X0)) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t43_lopclset) ).

fof(f1524,plain,
    ( ~ r1_filter_1(sK7,k12_lopclset(sK7))
    | ~ l1_pre_topc(k11_lopclset(sK7))
    | ~ v2_pre_topc(k11_lopclset(sK7))
    | v3_struct_0(k11_lopclset(sK7)) ),
    inference(superposition,[],[f339,f1485]) ).

fof(f1485,plain,
    k12_lopclset(sK7) = k6_lopclset(k11_lopclset(sK7)),
    inference(resolution,[],[f1483,f338]) ).

fof(f1483,plain,
    ( ~ l3_lattices(sK7)
    | k12_lopclset(sK7) = k6_lopclset(k11_lopclset(sK7)) ),
    inference(resolution,[],[f1480,f335]) ).

fof(f1480,plain,
    ( ~ v10_lattices(sK7)
    | k12_lopclset(sK7) = k6_lopclset(k11_lopclset(sK7))
    | ~ l3_lattices(sK7) ),
    inference(resolution,[],[f1479,f336]) ).

fof(f1479,plain,
    ( ~ v17_lattices(sK7)
    | k12_lopclset(sK7) = k6_lopclset(k11_lopclset(sK7))
    | ~ v10_lattices(sK7)
    | ~ l3_lattices(sK7) ),
    inference(resolution,[],[f1477,f334]) ).

fof(f1477,plain,
    ( v3_struct_0(sK7)
    | k12_lopclset(sK7) = k6_lopclset(k11_lopclset(sK7))
    | ~ v17_lattices(sK7)
    | ~ v10_lattices(sK7)
    | ~ l3_lattices(sK7) ),
    inference(resolution,[],[f454,f337]) ).

fof(f454,plain,
    ! [X0] :
      ( v3_realset2(X0)
      | ~ l3_lattices(X0)
      | k12_lopclset(X0) = k6_lopclset(k11_lopclset(X0))
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(cnf_transformation,[],[f203]) ).

fof(f203,plain,
    ! [X0] :
      ( k12_lopclset(X0) = k6_lopclset(k11_lopclset(X0))
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(flattening,[],[f202]) ).

fof(f202,plain,
    ! [X0] :
      ( k12_lopclset(X0) = k6_lopclset(k11_lopclset(X0))
      | ~ l3_lattices(X0)
      | v3_realset2(X0)
      | ~ v17_lattices(X0)
      | ~ v10_lattices(X0)
      | v3_struct_0(X0) ),
    inference(ennf_transformation,[],[f38]) ).

fof(f38,axiom,
    ! [X0] :
      ( ( l3_lattices(X0)
        & ~ v3_realset2(X0)
        & v17_lattices(X0)
        & v10_lattices(X0)
        & ~ v3_struct_0(X0) )
     => k12_lopclset(X0) = k6_lopclset(k11_lopclset(X0)) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d9_lopclset) ).

fof(f339,plain,
    ! [X1] :
      ( ~ r1_filter_1(sK7,k6_lopclset(X1))
      | ~ l1_pre_topc(X1)
      | ~ v2_pre_topc(X1)
      | v3_struct_0(X1) ),
    inference(cnf_transformation,[],[f262]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.12/0.12  % Problem    : LAT292+1 : TPTP v8.1.2. Released v3.4.0.
% 0.12/0.14  % Command    : vampire --mode casc_sat -m 16384 --cores 7 -t %d %s
% 0.15/0.35  % Computer : n019.cluster.edu
% 0.15/0.35  % Model    : x86_64 x86_64
% 0.15/0.35  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.15/0.35  % Memory   : 8042.1875MB
% 0.15/0.35  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.15/0.36  % CPULimit   : 300
% 0.15/0.36  % WCLimit    : 300
% 0.15/0.36  % DateTime   : Mon Apr 29 21:36:59 EDT 2024
% 0.15/0.36  % CPUTime    : 
% 0.15/0.36  % (19499)Running in auto input_syntax mode. Trying TPTP
% 0.15/0.38  % (19507)WARNING: value z3 for option sas not known
% 0.15/0.38  % (19508)fmb+10_1_bce=on:fmbsr=1.5:nm=32_533 on theBenchmark for (533ds/0Mi)
% 0.15/0.38  % (19505)fmb+10_1_bce=on:fmbas=function:fmbsr=1.2:fde=unused:nm=0_846 on theBenchmark for (846ds/0Mi)
% 0.15/0.38  % (19506)fmb+10_1_bce=on:fmbdsb=on:fmbes=contour:fmbswr=3:fde=none:nm=0_793 on theBenchmark for (793ds/0Mi)
% 0.15/0.38  % (19509)ott+10_10:1_add=off:afr=on:amm=off:anc=all:bd=off:bs=on:fsr=off:irw=on:lma=on:msp=off:nm=4:nwc=4.0:sac=on:sp=reverse_frequency_531 on theBenchmark for (531ds/0Mi)
% 0.15/0.38  % (19510)ott-10_8_av=off:bd=preordered:bs=on:fsd=off:fsr=off:fde=unused:irw=on:lcm=predicate:lma=on:nm=4:nwc=1.7:sp=frequency_522 on theBenchmark for (522ds/0Mi)
% 0.15/0.38  % (19507)dis+2_11_add=large:afr=on:amm=off:bd=off:bce=on:fsd=off:fde=none:gs=on:gsaa=full_model:gsem=off:irw=on:msp=off:nm=4:nwc=1.3:sas=z3:sims=off:sac=on:sp=reverse_arity_569 on theBenchmark for (569ds/0Mi)
% 0.15/0.38  % (19511)ott+1_64_av=off:bd=off:bce=on:fsd=off:fde=unused:gsp=on:irw=on:lcm=predicate:lma=on:nm=2:nwc=1.1:sims=off:urr=on_497 on theBenchmark for (497ds/0Mi)
% 0.15/0.39  TRYING [1]
% 0.15/0.39  TRYING [2]
% 0.15/0.40  TRYING [3]
% 0.22/0.42  TRYING [1]
% 0.22/0.43  % (19510)First to succeed.
% 0.22/0.43  TRYING [2]
% 0.22/0.43  TRYING [4]
% 0.22/0.43  % (19510)Refutation found. Thanks to Tanya!
% 0.22/0.43  % SZS status Theorem for theBenchmark
% 0.22/0.43  % SZS output start Proof for theBenchmark
% See solution above
% 0.22/0.43  % (19510)------------------------------
% 0.22/0.43  % (19510)Version: Vampire 4.8 (commit 8e9376e55 on 2024-01-18 13:49:33 +0100)
% 0.22/0.43  % (19510)Termination reason: Refutation
% 0.22/0.43  
% 0.22/0.43  % (19510)Memory used [KB]: 1777
% 0.22/0.43  % (19510)Time elapsed: 0.050 s
% 0.22/0.43  % (19510)Instructions burned: 78 (million)
% 0.22/0.43  % (19510)------------------------------
% 0.22/0.43  % (19510)------------------------------
% 0.22/0.43  % (19499)Success in time 0.07 s
%------------------------------------------------------------------------------