↑ Up

Vampire-SAT---5.0.1.THM-Ref.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : Vampire-SAT---5.0.1
% Problem  : SEU009+1 : TPTP v9.3.1. Released v3.2.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 SAT

% Computer : n020.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8046.5625MB
% OS       : Linux 6.8.0-71-generic
% CPULimit : 300s
% WCLimit  : 300s
% DateTime : Tue Sep 29 12:51:47 PM UTC 2026

% Result   : Theorem 0.16s 0.48s
% Output   : Refutation 0.16s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   21
%            Number of leaves      :    8
% Syntax   : Number of formulae    :   75 (  13 unt;   3 def)
%            Number of atoms       :  252 (  15 equ)
%            Maximal formula atoms :    7 (   3 avg)
%            Number of connectives :  292 ( 115   ~; 138   |;  20   &)
%                                         (  11 <=>;   6  =>;   0  <=;   2 <~>)
%            Maximal formula depth :   11 (   5 avg)
%            Maximal term depth    :    4 (   1 avg)
%            Number of predicates  :    8 (   6 usr;   4 prp; 0-2 aty)
%            Number of functors    :    7 (   7 usr;   3 con; 0-2 aty)
%            Number of variables   :   68 (   0 sgn  62   !;   6   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(f5,axiom,
    ! [X0] : relation(identity_relation(X0)),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',dt_k6_relat_1) ).

fof(f12,axiom,
    ! [X0] :
      ( relation(identity_relation(X0))
      & function(identity_relation(X0)) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fc2_funct_1) ).

fof(f27,axiom,
    ! [X0,X1] :
      ( ( relation(X1)
        & function(X1) )
     => ! [X2] :
          ( ( relation(X2)
            & function(X2) )
         => ( in(X0,relation_dom(relation_composition(X2,X1)))
          <=> ( in(X0,relation_dom(X2))
              & in(apply(X2,X0),relation_dom(X1)) ) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t21_funct_1) ).

fof(f29,axiom,
    ! [X0,X1] :
      ( ( relation(X1)
        & function(X1) )
     => ( X1 = identity_relation(X0)
      <=> ( relation_dom(X1) = X0
          & ! [X2] :
              ( in(X2,X0)
             => apply(X1,X2) = X2 ) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t34_funct_1) ).

fof(f31,conjecture,
    ! [X0,X1,X2] :
      ( ( relation(X2)
        & function(X2) )
     => ( in(X1,relation_dom(relation_composition(X2,identity_relation(X0))))
      <=> ( in(X1,relation_dom(X2))
          & in(apply(X2,X1),X0) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t40_funct_1) ).

fof(f32,negated_conjecture,
    ~ ! [X0,X1,X2] :
        ( ( relation(X2)
          & function(X2) )
       => ( in(X1,relation_dom(relation_composition(X2,identity_relation(X0))))
        <=> ( in(X1,relation_dom(X2))
            & in(apply(X2,X1),X0) ) ) ),
    inference(negated_conjecture,[status(cth)],[f31]) ).

fof(f58,plain,
    ! [X0,X1] :
      ( ! [X2] :
          ( ( in(X0,relation_dom(relation_composition(X2,X1)))
          <=> ( in(X0,relation_dom(X2))
              & in(apply(X2,X0),relation_dom(X1)) ) )
          | ~ relation(X2)
          | ~ function(X2) )
      | ~ relation(X1)
      | ~ function(X1) ),
    inference(ennf_transformation,[],[f27]) ).

fof(f59,plain,
    ! [X0,X1] :
      ( ! [X2] :
          ( ( in(X0,relation_dom(relation_composition(X2,X1)))
          <=> ( in(X0,relation_dom(X2))
              & in(apply(X2,X0),relation_dom(X1)) ) )
          | ~ relation(X2)
          | ~ function(X2) )
      | ~ relation(X1)
      | ~ function(X1) ),
    inference(flattening,[],[f58]) ).

fof(f62,plain,
    ! [X0,X1] :
      ( ( X1 = identity_relation(X0)
      <=> ( relation_dom(X1) = X0
          & ! [X2] :
              ( apply(X1,X2) = X2
              | ~ in(X2,X0) ) ) )
      | ~ relation(X1)
      | ~ function(X1) ),
    inference(ennf_transformation,[],[f29]) ).

fof(f63,plain,
    ! [X0,X1] :
      ( ( X1 = identity_relation(X0)
      <=> ( relation_dom(X1) = X0
          & ! [X2] :
              ( apply(X1,X2) = X2
              | ~ in(X2,X0) ) ) )
      | ~ relation(X1)
      | ~ function(X1) ),
    inference(flattening,[],[f62]) ).

fof(f65,plain,
    ? [X0,X1,X2] :
      ( ( in(X1,relation_dom(relation_composition(X2,identity_relation(X0))))
      <~> ( in(X1,relation_dom(X2))
          & in(apply(X2,X1),X0) ) )
      & relation(X2)
      & function(X2) ),
    inference(ennf_transformation,[],[f32]) ).

fof(f66,plain,
    ? [X0,X1,X2] :
      ( ( in(X1,relation_dom(relation_composition(X2,identity_relation(X0))))
      <~> ( in(X1,relation_dom(X2))
          & in(apply(X2,X1),X0) ) )
      & relation(X2)
      & function(X2) ),
    inference(flattening,[],[f65]) ).

fof(f77,plain,
    ! [X0] : relation(identity_relation(X0)),
    inference(cnf_transformation,[],[f5]) ).

fof(f87,plain,
    ! [X0] : function(identity_relation(X0)),
    inference(cnf_transformation,[],[f12]) ).

fof(f111,plain,
    ! [X2,X0,X1] :
      ( ~ function(X1)
      | ~ relation(X1)
      | ~ function(X2)
      | ~ relation(X2)
      | in(apply(X2,X0),relation_dom(X1))
      | ~ in(X0,relation_dom(relation_composition(X2,X1))) ),
    inference(cnf_transformation,[],[f59]) ).

fof(f112,plain,
    ! [X2,X0,X1] :
      ( ~ function(X1)
      | ~ relation(X1)
      | ~ function(X2)
      | ~ relation(X2)
      | in(X0,relation_dom(X2))
      | ~ in(X0,relation_dom(relation_composition(X2,X1))) ),
    inference(cnf_transformation,[],[f59]) ).

fof(f113,plain,
    ! [X2,X0,X1] :
      ( ~ function(X1)
      | ~ relation(X1)
      | ~ function(X2)
      | ~ relation(X2)
      | ~ in(apply(X2,X0),relation_dom(X1))
      | ~ in(X0,relation_dom(X2))
      | in(X0,relation_dom(relation_composition(X2,X1))) ),
    inference(cnf_transformation,[],[f59]) ).

fof(f118,plain,
    ! [X0,X1] :
      ( ~ function(X1)
      | ~ relation(X1)
      | relation_dom(X1) = X0
      | identity_relation(X0) != X1 ),
    inference(cnf_transformation,[],[f63]) ).

fof(f120,plain,
    ( ~ in(apply(sK12,sK11),sK10)
    | ~ in(sK11,relation_dom(sK12))
    | ~ in(sK11,relation_dom(relation_composition(sK12,identity_relation(sK10)))) ),
    inference(cnf_transformation,[],[f66]) ).

fof(f121,plain,
    ( in(apply(sK12,sK11),sK10)
    | in(sK11,relation_dom(relation_composition(sK12,identity_relation(sK10)))) ),
    inference(cnf_transformation,[],[f66]) ).

fof(f122,plain,
    ( in(sK11,relation_dom(sK12))
    | in(sK11,relation_dom(relation_composition(sK12,identity_relation(sK10)))) ),
    inference(cnf_transformation,[],[f66]) ).

fof(f123,plain,
    function(sK12),
    inference(cnf_transformation,[],[f66]) ).

fof(f124,plain,
    relation(sK12),
    inference(cnf_transformation,[],[f66]) ).

fof(f130,plain,
    ! [X0] :
      ( ~ function(identity_relation(X0))
      | ~ relation(identity_relation(X0))
      | relation_dom(identity_relation(X0)) = X0 ),
    inference(equality_resolution,[],[f118]) ).

fof(f136,plain,
    ! [X0] : ~ relation(identity_relation(X0)),
    inference(consistent_polarity_flipping,[],[f77]) ).

fof(f152,plain,
    ! [X2,X0,X1] :
      ( ~ in(apply(X2,X0),relation_dom(X1))
      | relation(X1)
      | ~ function(X2)
      | relation(X2)
      | ~ function(X1)
      | ~ in(X0,relation_dom(X2))
      | in(X0,relation_dom(relation_composition(X2,X1))) ),
    inference(consistent_polarity_flipping,[],[f113]) ).

fof(f153,plain,
    ! [X2,X0,X1] :
      ( ~ in(X0,relation_dom(relation_composition(X2,X1)))
      | relation(X1)
      | ~ function(X2)
      | relation(X2)
      | in(X0,relation_dom(X2))
      | ~ function(X1) ),
    inference(consistent_polarity_flipping,[],[f112]) ).

fof(f154,plain,
    ! [X2,X0,X1] :
      ( ~ in(X0,relation_dom(relation_composition(X2,X1)))
      | relation(X1)
      | ~ function(X2)
      | relation(X2)
      | in(apply(X2,X0),relation_dom(X1))
      | ~ function(X1) ),
    inference(consistent_polarity_flipping,[],[f111]) ).

fof(f155,plain,
    ! [X0] :
      ( ~ function(identity_relation(X0))
      | relation(identity_relation(X0))
      | relation_dom(identity_relation(X0)) = X0 ),
    inference(consistent_polarity_flipping,[],[f130]) ).

fof(f159,plain,
    ~ relation(sK12),
    inference(consistent_polarity_flipping,[],[f124]) ).

fof(f161,definition,
    ( spl13_1
  <=> in(sK11,relation_dom(relation_composition(sK12,identity_relation(sK10)))) ),
    introduced(definition,[new_symbols(definition,[spl13_1])],[avatar_definition]) ).

fof(f162,plain,
    ( in(sK11,relation_dom(relation_composition(sK12,identity_relation(sK10))))
    | ~ spl13_1 ),
    inference(avatar_component_clause,[],[f161]) ).

fof(f163,plain,
    ( ~ in(sK11,relation_dom(relation_composition(sK12,identity_relation(sK10))))
    | spl13_1 ),
    inference(avatar_component_clause,[],[f161]) ).

fof(f165,definition,
    ( spl13_2
  <=> in(sK11,relation_dom(sK12)) ),
    introduced(definition,[new_symbols(definition,[spl13_2])],[avatar_definition]) ).

fof(f166,plain,
    ( in(sK11,relation_dom(sK12))
    | ~ spl13_2 ),
    inference(avatar_component_clause,[],[f165]) ).

fof(f169,definition,
    ( spl13_3
  <=> in(apply(sK12,sK11),sK10) ),
    introduced(definition,[new_symbols(definition,[spl13_3])],[avatar_definition]) ).

fof(f170,plain,
    ( in(apply(sK12,sK11),sK10)
    | ~ spl13_3 ),
    inference(avatar_component_clause,[],[f169]) ).

fof(f172,plain,
    ( ~ spl13_1
    | ~ spl13_2
    | ~ spl13_3 ),
    inference(avatar_split_clause,[],[f120,f169,f165,f161]) ).

fof(f173,plain,
    ( spl13_1
    | spl13_3 ),
    inference(avatar_split_clause,[],[f121,f169,f161]) ).

fof(f174,plain,
    ( spl13_1
    | spl13_2 ),
    inference(avatar_split_clause,[],[f122,f165,f161]) ).

fof(f216,plain,
    ! [X0] :
      ( relation(identity_relation(X0))
      | relation_dom(identity_relation(X0)) = X0 ),
    inference(forward_subsumption_resolution,[],[f155,f87]) ).

fof(f217,plain,
    ! [X0] : relation_dom(identity_relation(X0)) = X0,
    inference(forward_subsumption_resolution,[],[f216,f136]) ).

fof(f246,plain,
    ! [X2,X0,X1] :
      ( ~ in(apply(X1,X2),X0)
      | relation(identity_relation(X0))
      | ~ function(X1)
      | relation(X1)
      | ~ function(identity_relation(X0))
      | ~ in(X2,relation_dom(X1))
      | in(X2,relation_dom(relation_composition(X1,identity_relation(X0)))) ),
    inference(superposition,[],[f152,f217]) ).

fof(f247,plain,
    ! [X2,X0,X1] :
      ( ~ in(apply(X1,X2),X0)
      | ~ function(X1)
      | relation(X1)
      | ~ function(identity_relation(X0))
      | ~ in(X2,relation_dom(X1))
      | in(X2,relation_dom(relation_composition(X1,identity_relation(X0)))) ),
    inference(forward_subsumption_resolution,[],[f246,f136]) ).

fof(f249,plain,
    ! [X2,X0,X1] :
      ( ~ in(apply(X1,X2),X0)
      | ~ function(X1)
      | relation(X1)
      | ~ in(X2,relation_dom(X1))
      | in(X2,relation_dom(relation_composition(X1,identity_relation(X0)))) ),
    inference(forward_subsumption_resolution,[],[f247,f87]) ).

fof(f421,plain,
    ( ~ function(sK12)
    | relation(sK12)
    | ~ in(sK11,relation_dom(sK12))
    | in(sK11,relation_dom(relation_composition(sK12,identity_relation(sK10))))
    | ~ spl13_3 ),
    inference(resolution,[],[f249,f170]) ).

fof(f426,plain,
    ( relation(sK12)
    | ~ in(sK11,relation_dom(sK12))
    | in(sK11,relation_dom(relation_composition(sK12,identity_relation(sK10))))
    | ~ spl13_3 ),
    inference(forward_subsumption_resolution,[],[f421,f123]) ).

fof(f429,plain,
    ( ~ in(sK11,relation_dom(sK12))
    | in(sK11,relation_dom(relation_composition(sK12,identity_relation(sK10))))
    | ~ spl13_3 ),
    inference(forward_subsumption_resolution,[],[f426,f159]) ).

fof(f432,plain,
    ( in(sK11,relation_dom(relation_composition(sK12,identity_relation(sK10))))
    | ~ spl13_2
    | ~ spl13_3 ),
    inference(forward_subsumption_resolution,[],[f429,f166]) ).

fof(f435,plain,
    ( $false
    | spl13_1
    | ~ spl13_2
    | ~ spl13_3 ),
    inference(forward_subsumption_resolution,[],[f432,f163]) ).

fof(f436,plain,
    ( spl13_1
    | ~ spl13_2
    | ~ spl13_3 ),
    inference(avatar_contradiction_clause,[],[f435]) ).

fof(f438,plain,
    ( relation(identity_relation(sK10))
    | ~ function(sK12)
    | relation(sK12)
    | in(apply(sK12,sK11),relation_dom(identity_relation(sK10)))
    | ~ function(identity_relation(sK10))
    | ~ spl13_1 ),
    inference(resolution,[],[f162,f154]) ).

fof(f439,plain,
    ( relation(identity_relation(sK10))
    | ~ function(sK12)
    | relation(sK12)
    | in(sK11,relation_dom(sK12))
    | ~ function(identity_relation(sK10))
    | ~ spl13_1 ),
    inference(resolution,[],[f162,f153]) ).

fof(f445,plain,
    ( ~ function(sK12)
    | relation(sK12)
    | in(apply(sK12,sK11),relation_dom(identity_relation(sK10)))
    | ~ function(identity_relation(sK10))
    | ~ spl13_1 ),
    inference(forward_subsumption_resolution,[],[f438,f136]) ).

fof(f459,plain,
    ( relation(sK12)
    | in(apply(sK12,sK11),relation_dom(identity_relation(sK10)))
    | ~ function(identity_relation(sK10))
    | ~ spl13_1 ),
    inference(forward_subsumption_resolution,[],[f445,f123]) ).

fof(f460,plain,
    ( in(apply(sK12,sK11),relation_dom(identity_relation(sK10)))
    | ~ function(identity_relation(sK10))
    | ~ spl13_1 ),
    inference(forward_subsumption_resolution,[],[f459,f159]) ).

fof(f461,plain,
    ( in(apply(sK12,sK11),relation_dom(identity_relation(sK10)))
    | ~ spl13_1 ),
    inference(forward_subsumption_resolution,[],[f460,f87]) ).

fof(f462,plain,
    ( in(apply(sK12,sK11),sK10)
    | ~ spl13_1 ),
    inference(forward_demodulation,[],[f461,f217]) ).

fof(f465,plain,
    ( spl13_3
    | ~ spl13_1 ),
    inference(avatar_split_clause,[],[f462,f161,f169]) ).

fof(f466,plain,
    ( ~ function(sK12)
    | relation(sK12)
    | in(sK11,relation_dom(sK12))
    | ~ function(identity_relation(sK10))
    | ~ spl13_1 ),
    inference(forward_subsumption_resolution,[],[f439,f136]) ).

fof(f467,plain,
    ( relation(sK12)
    | in(sK11,relation_dom(sK12))
    | ~ function(identity_relation(sK10))
    | ~ spl13_1 ),
    inference(forward_subsumption_resolution,[],[f466,f123]) ).

fof(f468,plain,
    ( in(sK11,relation_dom(sK12))
    | ~ function(identity_relation(sK10))
    | ~ spl13_1 ),
    inference(forward_subsumption_resolution,[],[f467,f159]) ).

fof(f469,plain,
    ( in(sK11,relation_dom(sK12))
    | ~ spl13_1 ),
    inference(forward_subsumption_resolution,[],[f468,f87]) ).

fof(f470,plain,
    ( spl13_2
    | ~ spl13_1 ),
    inference(avatar_split_clause,[],[f469,f161,f165]) ).

cnf(s1,plain,
    ( ~ spl13_1
    | ~ spl13_2
    | ~ spl13_3 ),
    inference(sat_conversion,[],[f172]) ).

cnf(s2,plain,
    ( spl13_1
    | spl13_3 ),
    inference(sat_conversion,[],[f173]) ).

cnf(s3,plain,
    ( spl13_1
    | spl13_2 ),
    inference(sat_conversion,[],[f174]) ).

cnf(s6,plain,
    ( spl13_1
    | ~ spl13_2
    | ~ spl13_3 ),
    inference(sat_conversion,[],[f436]) ).

cnf(s9,plain,
    ( ~ spl13_1
    | spl13_3 ),
    inference(sat_conversion,[],[f465]) ).

cnf(s10,plain,
    ( ~ spl13_1
    | spl13_2 ),
    inference(sat_conversion,[],[f470]) ).

cnf(s12,plain,
    spl13_1,
    inference(rat,[],[s6,s2,s3]) ).

cnf(s13,plain,
    spl13_2,
    inference(rat,[],[s10,s12]) ).

cnf(s14,plain,
    spl13_3,
    inference(rat,[],[s9,s12]) ).

cnf(s15,plain,
    $false,
    inference(rat,[],[s1,s13,s14,s12]) ).

fof(f471,plain,
    $false,
    inference(avatar_sat_refutation,[],[s15]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03  % Problem  : SEU009+1 : TPTP v9.3.1. Released v3.2.0.
% 0.00/0.06  % Command  : run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 SAT
% 0.13/0.37  % Computer : n020.cluster.edu
% 0.13/0.37  % Model    : x86_64 x86_64
% 0.13/0.37  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.37  % Memory   : 8046.5625MB
% 0.13/0.37  % OS       : Linux 6.8.0-71-generic
% 0.13/0.37  % CPULimit : 300
% 0.13/0.37  % WCLimit  : 300
% 0.13/0.37  % DateTime : Mon Sep 28 03:22:34 UTC 2026
% 0.13/0.38  % CPUTime  : 
% 0.13/0.38  Running run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 SAT
% 0.13/0.41  Running first-order model finding
% 0.13/0.41  Running: /export/starexec/sandbox2/solver/bin/vampire-ho --input_syntax tptp --output_axiom_names on --mode casc --intent sat -m 16384 --cores 7 -t 300 /export/starexec/sandbox2/benchmark/theBenchmark.p
% 0.16/0.48  % (3995017)Will run a generic schedule for satisfiability detection.
% 0.16/0.48  % (3995034)fmb+10_1_sas=cadical:bce=on:rp=on:random_seed=3707901299_2999 on theBenchmark for (2999ds/0Mi)
% 0.16/0.48  % TRYING [1]
% 0.16/0.48  % TRYING [2]
% 0.16/0.48  % TRYING [3]
% 0.16/0.48  % (3995035)% WARNING: option uhcvi not known.
% 0.16/0.48  % TRYING [4]
% 0.16/0.48  % (3995037)dis+10_1_sil=32000:sp=arity:random_seed=3498440053:i=103:fgj=on_2999 on theBenchmark for (2999ds/103Mi)
% 0.16/0.48  % (3995036)dis+10_161_sil=256000:plsq=on:plsqr=61199697,1048576:gs=on:alpa=true:sac=on:slsq=on:cn=on:random_seed=1313146479:i=88024:add=on:rawr=on_2999 on theBenchmark for (2999ds/88024Mi)
% 0.16/0.48  % (3995035)dis+11_61:31_drc=ordering:lsd=5:bsr=unit_only:rp=on:newcnf=on:random_seed=1929200919:i=135531:add=off:rawr=on_2999 on theBenchmark for (2999ds/135531Mi)
% 0.16/0.48  % TRYING [5]
% 0.16/0.48  % (3995040)ott+1_1_to=lpo:sil=16000:sp=reverse_arity:erd=off:random_seed=1293815002:i=131_2999 on theBenchmark for (2999ds/131Mi)
% 0.16/0.48  % (3995038)ott+31_1_sil=16000:lcm=predicate:bce=on:newcnf=on:random_seed=1742839706:i=116_2999 on theBenchmark for (2999ds/116Mi)
% 0.16/0.48  % (3995041)ott-3_16_to=lpo:sil=16000:sp=arity:fd=off:rp=on:random_seed=2868195851:i=159:bs=unit_only:nicw=on:fsr=off:amm=off_2999 on theBenchmark for (2999ds/159Mi)
% 0.16/0.48  % TRYING [6]
% 0.16/0.48  % (3995035) found proof, printing to "/export/starexec/sandbox2/tmp/vampire-proof-3995017-3995035"...
% 0.16/0.48  % (3995037) found proof, printing to "/export/starexec/sandbox2/tmp/vampire-proof-3995017-3995037"...
% 0.16/0.48  % (3995035)...printing done.
% 0.16/0.48  % (3995037)...printing done.
% 0.16/0.48  % (3995035)Refutation found. Thanks to Tanya!
% 0.16/0.48  % SZS status Theorem for theBenchmark
% 0.16/0.48  % SZS output start Proof for theBenchmark
% See solution above
% 0.16/0.48  % (3995035)------------------------------
% 0.16/0.48  % (3995035)Version: Vampire 5.0.1 (Release build, commit 5ef7c2677 on 2026-07-16 16:54:09 +0200)
% 0.16/0.48  % (3995035)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 0.16/0.48  % (3995035)CaDiCaL version: 2.1.3
% 0.16/0.48  % (3995035)Termination reason: Refutation
% 0.16/0.48  % (3995035)Time elapsed: 0.013 s
% 0.16/0.48  % (3995035)Peak memory usage: 12 MB
% 0.16/0.48  % (3995035)Instructions burned: 16 (million)
% 0.16/0.48  % (3995017)Success in time 0.057 s
% 0.16/0.48  % Vampire exiting
%------------------------------------------------------------------------------