↑ 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  : SEU324+1 : TPTP v9.3.1. Released v3.3.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 SAT

% Computer : n008.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:52:52 PM UTC 2026

% Result   : Theorem 0.13s 0.45s
% Output   : Refutation 0.13s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   18
%            Number of leaves      :   11
% Syntax   : Number of formulae    :   76 (  13 unt;   4 def)
%            Number of atoms       :  224 (  40 equ)
%            Maximal formula atoms :    9 (   2 avg)
%            Number of connectives :  245 (  97   ~;  95   |;  24   &)
%                                         (   6 <=>;  23  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   13 (   4 avg)
%            Maximal term depth    :    5 (   2 avg)
%            Number of predicates  :   11 (   9 usr;   5 prp; 0-2 aty)
%            Number of functors    :    9 (   9 usr;   4 con; 0-2 aty)
%            Number of variables   :   63 (   0 sgn  55   !;   8   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(f1,axiom,
    ! [X0] :
      ( top_str(X0)
     => ! [X1] :
          ( element(X1,powerset(the_carrier(X0)))
         => interior(X0,X1) = subset_complement(the_carrier(X0),topstr_closure(X0,subset_complement(the_carrier(X0),X1))) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d1_tops_1) ).

fof(f4,axiom,
    ! [X0,X1] :
      ( element(X1,powerset(X0))
     => element(subset_complement(X0,X1),powerset(X0)) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',dt_k3_subset_1) ).

fof(f16,axiom,
    ! [X0,X1] :
      ( ( topological_space(X0)
        & top_str(X0)
        & element(X1,powerset(the_carrier(X0))) )
     => open_subset(interior(X0,X1),X0) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fc6_tops_1) ).

fof(f17,axiom,
    ! [X0,X1] :
      ( element(X1,powerset(X0))
     => subset_complement(X0,subset_complement(X0,X1)) = X1 ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',involutiveness_k3_subset_1) ).

fof(f22,axiom,
    ! [X0] :
      ( top_str(X0)
     => ! [X1] :
          ( element(X1,powerset(the_carrier(X0)))
         => ( open_subset(X1,X0)
          <=> closed_subset(subset_complement(the_carrier(X0),X1),X0) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t30_tops_1) ).

fof(f24,axiom,
    ! [X0] :
      ( top_str(X0)
     => ! [X1] :
          ( element(X1,powerset(the_carrier(X0)))
         => ( ( closed_subset(X1,X0)
             => topstr_closure(X0,X1) = X1 )
            & ( ( topological_space(X0)
                & topstr_closure(X0,X1) = X1 )
             => closed_subset(X1,X0) ) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t52_pre_topc) ).

fof(f25,conjecture,
    ! [X0] :
      ( ( topological_space(X0)
        & top_str(X0) )
     => ! [X1] :
          ( top_str(X1)
         => ! [X2] :
              ( element(X2,powerset(the_carrier(X0)))
             => ! [X3] :
                  ( element(X3,powerset(the_carrier(X1)))
                 => ( ( open_subset(X3,X1)
                     => interior(X1,X3) = X3 )
                    & ( interior(X0,X2) = X2
                     => open_subset(X2,X0) ) ) ) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t55_tops_1) ).

fof(f26,negated_conjecture,
    ~ ! [X0] :
        ( ( topological_space(X0)
          & top_str(X0) )
       => ! [X1] :
            ( top_str(X1)
           => ! [X2] :
                ( element(X2,powerset(the_carrier(X0)))
               => ! [X3] :
                    ( element(X3,powerset(the_carrier(X1)))
                   => ( ( open_subset(X3,X1)
                       => interior(X1,X3) = X3 )
                      & ( interior(X0,X2) = X2
                       => open_subset(X2,X0) ) ) ) ) ) ),
    inference(negated_conjecture,[status(cth)],[f25]) ).

fof(f31,plain,
    ! [X0] :
      ( ! [X1] :
          ( interior(X0,X1) = subset_complement(the_carrier(X0),topstr_closure(X0,subset_complement(the_carrier(X0),X1)))
          | ~ element(X1,powerset(the_carrier(X0))) )
      | ~ top_str(X0) ),
    inference(ennf_transformation,[],[f1]) ).

fof(f34,plain,
    ! [X0,X1] :
      ( element(subset_complement(X0,X1),powerset(X0))
      | ~ element(X1,powerset(X0)) ),
    inference(ennf_transformation,[],[f4]) ).

fof(f43,plain,
    ! [X0,X1] :
      ( open_subset(interior(X0,X1),X0)
      | ~ topological_space(X0)
      | ~ top_str(X0)
      | ~ element(X1,powerset(the_carrier(X0))) ),
    inference(ennf_transformation,[],[f16]) ).

fof(f44,plain,
    ! [X0,X1] :
      ( open_subset(interior(X0,X1),X0)
      | ~ topological_space(X0)
      | ~ top_str(X0)
      | ~ element(X1,powerset(the_carrier(X0))) ),
    inference(flattening,[],[f43]) ).

fof(f45,plain,
    ! [X0,X1] :
      ( subset_complement(X0,subset_complement(X0,X1)) = X1
      | ~ element(X1,powerset(X0)) ),
    inference(ennf_transformation,[],[f17]) ).

fof(f52,plain,
    ! [X0] :
      ( ! [X1] :
          ( ( open_subset(X1,X0)
          <=> closed_subset(subset_complement(the_carrier(X0),X1),X0) )
          | ~ element(X1,powerset(the_carrier(X0))) )
      | ~ top_str(X0) ),
    inference(ennf_transformation,[],[f22]) ).

fof(f54,plain,
    ! [X0] :
      ( ! [X1] :
          ( ( ( topstr_closure(X0,X1) = X1
              | ~ closed_subset(X1,X0) )
            & ( closed_subset(X1,X0)
              | ~ topological_space(X0)
              | topstr_closure(X0,X1) != X1 ) )
          | ~ element(X1,powerset(the_carrier(X0))) )
      | ~ top_str(X0) ),
    inference(ennf_transformation,[],[f24]) ).

fof(f55,plain,
    ! [X0] :
      ( ! [X1] :
          ( ( ( topstr_closure(X0,X1) = X1
              | ~ closed_subset(X1,X0) )
            & ( closed_subset(X1,X0)
              | ~ topological_space(X0)
              | topstr_closure(X0,X1) != X1 ) )
          | ~ element(X1,powerset(the_carrier(X0))) )
      | ~ top_str(X0) ),
    inference(flattening,[],[f54]) ).

fof(f56,plain,
    ? [X0] :
      ( ? [X1] :
          ( ? [X2] :
              ( ? [X3] :
                  ( ( ( interior(X1,X3) != X3
                      & open_subset(X3,X1) )
                    | ( ~ open_subset(X2,X0)
                      & interior(X0,X2) = X2 ) )
                  & element(X3,powerset(the_carrier(X1))) )
              & element(X2,powerset(the_carrier(X0))) )
          & top_str(X1) )
      & topological_space(X0)
      & top_str(X0) ),
    inference(ennf_transformation,[],[f26]) ).

fof(f57,plain,
    ? [X0] :
      ( ? [X1] :
          ( ? [X2] :
              ( ? [X3] :
                  ( ( ( interior(X1,X3) != X3
                      & open_subset(X3,X1) )
                    | ( ~ open_subset(X2,X0)
                      & interior(X0,X2) = X2 ) )
                  & element(X3,powerset(the_carrier(X1))) )
              & element(X2,powerset(the_carrier(X0))) )
          & top_str(X1) )
      & topological_space(X0)
      & top_str(X0) ),
    inference(flattening,[],[f56]) ).

fof(f58,plain,
    ! [X0,X1] :
      ( ~ top_str(X0)
      | ~ element(X1,powerset(the_carrier(X0)))
      | interior(X0,X1) = subset_complement(the_carrier(X0),topstr_closure(X0,subset_complement(the_carrier(X0),X1))) ),
    inference(cnf_transformation,[],[f31]) ).

fof(f60,plain,
    ! [X0,X1] :
      ( element(subset_complement(X0,X1),powerset(X0))
      | ~ element(X1,powerset(X0)) ),
    inference(cnf_transformation,[],[f34]) ).

fof(f67,plain,
    ! [X0,X1] :
      ( open_subset(interior(X0,X1),X0)
      | ~ top_str(X0)
      | ~ topological_space(X0)
      | ~ element(X1,powerset(the_carrier(X0))) ),
    inference(cnf_transformation,[],[f44]) ).

fof(f68,plain,
    ! [X0,X1] :
      ( ~ element(X1,powerset(X0))
      | subset_complement(X0,subset_complement(X0,X1)) = X1 ),
    inference(cnf_transformation,[],[f45]) ).

fof(f78,plain,
    ! [X0,X1] :
      ( closed_subset(subset_complement(the_carrier(X0),X1),X0)
      | ~ element(X1,powerset(the_carrier(X0)))
      | ~ top_str(X0)
      | ~ open_subset(X1,X0) ),
    inference(cnf_transformation,[],[f52]) ).

fof(f80,plain,
    ! [X0,X1] :
      ( ~ closed_subset(X1,X0)
      | ~ element(X1,powerset(the_carrier(X0)))
      | ~ top_str(X0)
      | topstr_closure(X0,X1) = X1 ),
    inference(cnf_transformation,[],[f55]) ).

fof(f82,plain,
    ( ~ open_subset(sK7,sK5)
    | open_subset(sK8,sK6) ),
    inference(cnf_transformation,[],[f57]) ).

fof(f83,plain,
    ( ~ open_subset(sK7,sK5)
    | sK8 != interior(sK6,sK8) ),
    inference(cnf_transformation,[],[f57]) ).

fof(f84,plain,
    ( sK7 = interior(sK5,sK7)
    | open_subset(sK8,sK6) ),
    inference(cnf_transformation,[],[f57]) ).

fof(f85,plain,
    ( sK7 = interior(sK5,sK7)
    | sK8 != interior(sK6,sK8) ),
    inference(cnf_transformation,[],[f57]) ).

fof(f86,plain,
    element(sK8,powerset(the_carrier(sK6))),
    inference(cnf_transformation,[],[f57]) ).

fof(f87,plain,
    element(sK7,powerset(the_carrier(sK5))),
    inference(cnf_transformation,[],[f57]) ).

fof(f88,plain,
    top_str(sK6),
    inference(cnf_transformation,[],[f57]) ).

fof(f89,plain,
    top_str(sK5),
    inference(cnf_transformation,[],[f57]) ).

fof(f90,plain,
    topological_space(sK5),
    inference(cnf_transformation,[],[f57]) ).

fof(f92,definition,
    ( spl9_1
  <=> open_subset(sK8,sK6) ),
    introduced(definition,[new_symbols(definition,[spl9_1])],[avatar_definition]) ).

fof(f94,plain,
    ( open_subset(sK8,sK6)
    | ~ spl9_1 ),
    inference(avatar_component_clause,[],[f92]) ).

fof(f96,definition,
    ( spl9_2
  <=> open_subset(sK7,sK5) ),
    introduced(definition,[new_symbols(definition,[spl9_2])],[avatar_definition]) ).

fof(f98,plain,
    ( ~ open_subset(sK7,sK5)
    | spl9_2 ),
    inference(avatar_component_clause,[],[f96]) ).

fof(f99,plain,
    ( spl9_1
    | ~ spl9_2 ),
    inference(avatar_split_clause,[],[f82,f96,f92]) ).

fof(f101,definition,
    ( spl9_3
  <=> sK8 = interior(sK6,sK8) ),
    introduced(definition,[new_symbols(definition,[spl9_3])],[avatar_definition]) ).

fof(f103,plain,
    ( sK8 != interior(sK6,sK8)
    | spl9_3 ),
    inference(avatar_component_clause,[],[f101]) ).

fof(f104,plain,
    ( ~ spl9_3
    | ~ spl9_2 ),
    inference(avatar_split_clause,[],[f83,f96,f101]) ).

fof(f106,definition,
    ( spl9_4
  <=> sK7 = interior(sK5,sK7) ),
    introduced(definition,[new_symbols(definition,[spl9_4])],[avatar_definition]) ).

fof(f108,plain,
    ( sK7 = interior(sK5,sK7)
    | ~ spl9_4 ),
    inference(avatar_component_clause,[],[f106]) ).

fof(f109,plain,
    ( spl9_1
    | spl9_4 ),
    inference(avatar_split_clause,[],[f84,f106,f92]) ).

fof(f110,plain,
    ( ~ spl9_3
    | spl9_4 ),
    inference(avatar_split_clause,[],[f85,f106,f101]) ).

fof(f122,plain,
    sK8 = subset_complement(the_carrier(sK6),subset_complement(the_carrier(sK6),sK8)),
    inference(resolution,[],[f68,f86]) ).

fof(f136,plain,
    ( open_subset(sK7,sK5)
    | ~ top_str(sK5)
    | ~ topological_space(sK5)
    | ~ element(sK7,powerset(the_carrier(sK5)))
    | ~ spl9_4 ),
    inference(superposition,[],[f67,f108]) ).

fof(f137,plain,
    ( ~ top_str(sK5)
    | ~ topological_space(sK5)
    | ~ element(sK7,powerset(the_carrier(sK5)))
    | spl9_2
    | ~ spl9_4 ),
    inference(forward_subsumption_resolution,[],[f136,f98]) ).

fof(f138,plain,
    ( ~ topological_space(sK5)
    | ~ element(sK7,powerset(the_carrier(sK5)))
    | spl9_2
    | ~ spl9_4 ),
    inference(forward_subsumption_resolution,[],[f137,f89]) ).

fof(f139,plain,
    ( ~ element(sK7,powerset(the_carrier(sK5)))
    | spl9_2
    | ~ spl9_4 ),
    inference(forward_subsumption_resolution,[],[f138,f90]) ).

fof(f140,plain,
    ( $false
    | spl9_2
    | ~ spl9_4 ),
    inference(forward_subsumption_resolution,[],[f139,f87]) ).

fof(f141,plain,
    ( spl9_2
    | ~ spl9_4 ),
    inference(avatar_contradiction_clause,[],[f140]) ).

fof(f228,plain,
    ! [X0,X1] :
      ( ~ element(X0,powerset(the_carrier(X1)))
      | ~ top_str(X1)
      | ~ open_subset(X0,X1)
      | ~ element(subset_complement(the_carrier(X1),X0),powerset(the_carrier(X1)))
      | ~ top_str(X1)
      | subset_complement(the_carrier(X1),X0) = topstr_closure(X1,subset_complement(the_carrier(X1),X0)) ),
    inference(resolution,[],[f78,f80]) ).

fof(f234,plain,
    ! [X0,X1] :
      ( ~ element(X0,powerset(the_carrier(X1)))
      | ~ top_str(X1)
      | ~ open_subset(X0,X1)
      | ~ element(subset_complement(the_carrier(X1),X0),powerset(the_carrier(X1)))
      | subset_complement(the_carrier(X1),X0) = topstr_closure(X1,subset_complement(the_carrier(X1),X0)) ),
    inference(duplicate_literal_removal,[],[f228]) ).

fof(f239,plain,
    ! [X0,X1] :
      ( ~ open_subset(X0,X1)
      | ~ top_str(X1)
      | ~ element(X0,powerset(the_carrier(X1)))
      | subset_complement(the_carrier(X1),X0) = topstr_closure(X1,subset_complement(the_carrier(X1),X0)) ),
    inference(forward_subsumption_resolution,[],[f234,f60]) ).

fof(f285,plain,
    ! [X0] :
      ( ~ element(X0,powerset(the_carrier(sK6)))
      | interior(sK6,X0) = subset_complement(the_carrier(sK6),topstr_closure(sK6,subset_complement(the_carrier(sK6),X0))) ),
    inference(resolution,[],[f58,f88]) ).

fof(f296,plain,
    interior(sK6,sK8) = subset_complement(the_carrier(sK6),topstr_closure(sK6,subset_complement(the_carrier(sK6),sK8))),
    inference(resolution,[],[f285,f86]) ).

fof(f438,plain,
    ( ~ top_str(sK6)
    | ~ element(sK8,powerset(the_carrier(sK6)))
    | subset_complement(the_carrier(sK6),sK8) = topstr_closure(sK6,subset_complement(the_carrier(sK6),sK8))
    | ~ spl9_1 ),
    inference(resolution,[],[f239,f94]) ).

fof(f450,plain,
    ( ~ element(sK8,powerset(the_carrier(sK6)))
    | subset_complement(the_carrier(sK6),sK8) = topstr_closure(sK6,subset_complement(the_carrier(sK6),sK8))
    | ~ spl9_1 ),
    inference(forward_subsumption_resolution,[],[f438,f88]) ).

fof(f457,plain,
    ( subset_complement(the_carrier(sK6),sK8) = topstr_closure(sK6,subset_complement(the_carrier(sK6),sK8))
    | ~ spl9_1 ),
    inference(forward_subsumption_resolution,[],[f450,f86]) ).

fof(f505,plain,
    ( interior(sK6,sK8) = subset_complement(the_carrier(sK6),subset_complement(the_carrier(sK6),sK8))
    | ~ spl9_1 ),
    inference(superposition,[],[f296,f457]) ).

fof(f515,plain,
    ( sK8 = interior(sK6,sK8)
    | ~ spl9_1 ),
    inference(forward_demodulation,[],[f505,f122]) ).

fof(f519,plain,
    ( $false
    | ~ spl9_1
    | spl9_3 ),
    inference(forward_subsumption_resolution,[],[f515,f103]) ).

fof(f520,plain,
    ( ~ spl9_1
    | spl9_3 ),
    inference(avatar_contradiction_clause,[],[f519]) ).

cnf(s1,plain,
    ( spl9_1
    | ~ spl9_2 ),
    inference(sat_conversion,[],[f99]) ).

cnf(s2,plain,
    ( ~ spl9_2
    | ~ spl9_3 ),
    inference(sat_conversion,[],[f104]) ).

cnf(s3,plain,
    ( spl9_1
    | spl9_4 ),
    inference(sat_conversion,[],[f109]) ).

cnf(s4,plain,
    ( ~ spl9_3
    | spl9_4 ),
    inference(sat_conversion,[],[f110]) ).

cnf(s5,plain,
    ( spl9_2
    | ~ spl9_4 ),
    inference(sat_conversion,[],[f141]) ).

cnf(s28,plain,
    ( ~ spl9_1
    | spl9_3 ),
    inference(sat_conversion,[],[f520]) ).

cnf(s37,plain,
    spl9_1,
    inference(rat,[],[s5,s1,s3]) ).

cnf(s38,plain,
    spl9_3,
    inference(rat,[],[s28,s37]) ).

cnf(s39,plain,
    spl9_4,
    inference(rat,[],[s4,s38]) ).

cnf(s40,plain,
    ~ spl9_2,
    inference(rat,[],[s2,s38]) ).

cnf(s41,plain,
    $false,
    inference(rat,[],[s5,s39,s40]) ).

fof(f526,plain,
    $false,
    inference(avatar_sat_refutation,[],[s41]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03  % Problem  : SEU324+1 : TPTP v9.3.1. Released v3.3.0.
% 0.00/0.05  % Command  : run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 SAT
% 0.13/0.37  % Computer : n008.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 04:43:24 UTC 2026
% 0.13/0.37  % CPUTime  : 
% 0.13/0.37  Running run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 SAT
% 0.13/0.40  Running first-order model finding
% 0.13/0.40  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.13/0.45  % (1881976)Will run a generic schedule for satisfiability detection.
% 0.13/0.45  % (1881985)ott+31_1_sil=16000:lcm=predicate:bce=on:newcnf=on:random_seed=2120721467:i=116_2999 on theBenchmark for (2999ds/116Mi)
% 0.13/0.45  % (1881982)% WARNING: option uhcvi not known.
% 0.13/0.45  % (1881985) found proof, printing to "/export/starexec/sandbox2/tmp/vampire-proof-1881976-1881985"...
% 0.13/0.45  % (1881981)fmb+10_1_sas=cadical:bce=on:rp=on:random_seed=414045572_2999 on theBenchmark for (2999ds/0Mi)
% 0.13/0.45  % (1881983)dis+10_161_sil=256000:plsq=on:plsqr=61199697,1048576:gs=on:alpa=true:sac=on:slsq=on:cn=on:random_seed=104465860:i=88024:add=on:rawr=on_2999 on theBenchmark for (2999ds/88024Mi)
% 0.13/0.45  % (1881987)ott-3_16_to=lpo:sil=16000:sp=arity:fd=off:rp=on:random_seed=273825847:i=159:bs=unit_only:nicw=on:fsr=off:amm=off_2999 on theBenchmark for (2999ds/159Mi)
% 0.13/0.45  % (1881984)dis+10_1_sil=32000:sp=arity:random_seed=1729796473:i=103:fgj=on_2999 on theBenchmark for (2999ds/103Mi)
% 0.13/0.45  % (1881986)ott+1_1_to=lpo:sil=16000:sp=reverse_arity:erd=off:random_seed=2383250976:i=131_2999 on theBenchmark for (2999ds/131Mi)
% 0.13/0.45  % (1881982)dis+11_61:31_drc=ordering:lsd=5:bsr=unit_only:rp=on:newcnf=on:random_seed=1407606271:i=135531:add=off:rawr=on_2999 on theBenchmark for (2999ds/135531Mi)
% 0.13/0.45  % (1881985)...printing done.
% 0.13/0.45  % (1881985)Refutation found. Thanks to Tanya!
% 0.13/0.45  % SZS status Theorem for theBenchmark
% 0.13/0.45  % SZS output start Proof for theBenchmark
% See solution above
% 0.13/0.45  % (1881985)------------------------------
% 0.13/0.45  % (1881985)Version: Vampire 5.0.1 (Release build, commit 5ef7c2677 on 2026-07-16 16:54:09 +0200)
% 0.13/0.45  % (1881985)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 0.13/0.45  % (1881985)CaDiCaL version: 2.1.3
% 0.13/0.45  % (1881985)Termination reason: Refutation
% 0.13/0.45  % (1881985)Time elapsed: 0.008 s
% 0.13/0.45  % (1881985)Peak memory usage: 12 MB
% 0.13/0.45  % (1881985)Instructions burned: 17 (million)
% 0.13/0.45  % (1881976)Success in time 0.034 s
% 0.13/0.45  % Vampire exiting
%------------------------------------------------------------------------------