↑ Up

Vampire-SAT---5.0.1.UNS-Ref.s

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

% Computer : n002.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 11:47:42 AM UTC 2026

% Result   : Unsatisfiable 0.85s 0.62s
% Output   : Refutation 0.85s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   36
%            Number of leaves      :   10
% Syntax   : Number of formulae    :   78 (  61 unt;   4 def)
%            Number of atoms       :  103 (  68 equ)
%            Maximal formula atoms :    4 (   1 avg)
%            Number of connectives :   46 (  21   ~;  21   |;   0   &)
%                                         (   4 <=>;   0  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    5 (   3 avg)
%            Maximal term depth    :    6 (   2 avg)
%            Number of predicates  :    6 (   4 usr;   5 prp; 0-2 aty)
%            Number of functors    :    4 (   4 usr;   2 con; 0-2 aty)
%            Number of variables   :   99 (   0 sgn  99   !;   0   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(f1,axiom,
    ! [X0,X1] : join(meet(X0,X1),meet(X0,join(X0,X1))) = X0,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',wal_absorbtion_1) ).

fof(f2,axiom,
    ! [X0,X1] : join(meet(X0,X0),meet(X1,join(X0,X0))) = X0,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',wal_absorbtion_2) ).

fof(f3,axiom,
    ! [X0,X1] : join(meet(X0,X1),meet(X1,join(X0,X1))) = X1,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',wal_absorbtion_3) ).

fof(f4,axiom,
    ! [X2,X0,X1] : meet(meet(join(X0,X1),join(X2,X0)),X0) = X0,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',wal_absorbtion_4) ).

fof(f5,axiom,
    ! [X2,X0,X1] : join(join(meet(X0,X1),meet(X2,X0)),X0) = X0,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',wal_absorbtion_5) ).

fof(f6,negated_conjecture,
    ( meet(a,a) != a
    | meet(b,a) != meet(a,b)
    | join(a,a) != a
    | join(b,a) != join(a,b) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',prove_normal_axioms) ).

fof(f7,plain,
    ( a != meet(a,a)
    | meet(b,a) != meet(a,b)
    | a != join(a,a)
    | join(b,a) != join(a,b) ),
    inference(reorient_equations,[],[f6]) ).

fof(f9,definition,
    ( spl0_1
  <=> join(b,a) = join(a,b) ),
    introduced(definition,[new_symbols(definition,[spl0_1])],[avatar_definition]) ).

fof(f11,plain,
    ( join(b,a) != join(a,b)
    | spl0_1 ),
    inference(avatar_component_clause,[],[f9]) ).

fof(f13,definition,
    ( spl0_2
  <=> a = join(a,a) ),
    introduced(definition,[new_symbols(definition,[spl0_2])],[avatar_definition]) ).

fof(f15,plain,
    ( a != join(a,a)
    | spl0_2 ),
    inference(avatar_component_clause,[],[f13]) ).

fof(f17,definition,
    ( spl0_3
  <=> meet(b,a) = meet(a,b) ),
    introduced(definition,[new_symbols(definition,[spl0_3])],[avatar_definition]) ).

fof(f19,plain,
    ( meet(b,a) != meet(a,b)
    | spl0_3 ),
    inference(avatar_component_clause,[],[f17]) ).

fof(f21,definition,
    ( spl0_4
  <=> a = meet(a,a) ),
    introduced(definition,[new_symbols(definition,[spl0_4])],[avatar_definition]) ).

fof(f23,plain,
    ( a != meet(a,a)
    | spl0_4 ),
    inference(avatar_component_clause,[],[f21]) ).

fof(f24,plain,
    ( ~ spl0_1
    | ~ spl0_2
    | ~ spl0_3
    | ~ spl0_4 ),
    inference(avatar_split_clause,[],[f7,f21,f17,f13,f9]) ).

fof(f32,plain,
    ! [X2,X0,X1] : meet(X1,X0) = meet(meet(X0,join(X2,meet(X1,X0))),meet(X1,X0)),
    inference(superposition,[],[f4,f3]) ).

fof(f39,plain,
    ! [X0] : join(meet(X0,X0),join(X0,X0)) = X0,
    inference(superposition,[],[f2,f4]) ).

fof(f45,plain,
    ! [X0,X1] : join(join(meet(X0,X1),X0),X0) = X0,
    inference(superposition,[],[f5,f4]) ).

fof(f46,plain,
    ! [X0,X1] : meet(meet(join(X0,X1),X0),X0) = X0,
    inference(superposition,[],[f4,f5]) ).

fof(f55,plain,
    ! [X0,X1] : meet(X0,X1) = meet(meet(X0,meet(X0,X1)),meet(X0,X1)),
    inference(superposition,[],[f46,f1]) ).

fof(f56,plain,
    ! [X0,X1] : meet(X1,X0) = meet(meet(X0,meet(X1,X0)),meet(X1,X0)),
    inference(superposition,[],[f46,f3]) ).

fof(f75,plain,
    ! [X0,X1] : meet(meet(meet(join(X0,X1),X0),X0),X0) = X0,
    inference(superposition,[],[f55,f46]) ).

fof(f84,plain,
    ! [X0] : meet(X0,X0) = X0,
    inference(forward_demodulation,[],[f75,f46]) ).

fof(f87,plain,
    ! [X0] : join(X0,join(X0,X0)) = X0,
    inference(superposition,[],[f39,f84]) ).

fof(f97,plain,
    ! [X0] : meet(join(X0,X0),X0) = X0,
    inference(superposition,[],[f4,f84]) ).

fof(f101,plain,
    ! [X0,X1] : meet(meet(X0,join(X1,X0)),X0) = X0,
    inference(superposition,[],[f4,f87]) ).

fof(f117,plain,
    ! [X0] : join(X0,X0) = join(join(X0,join(X0,X0)),join(X0,X0)),
    inference(superposition,[],[f45,f97]) ).

fof(f122,plain,
    ! [X0] : join(X0,X0) = join(X0,join(X0,X0)),
    inference(forward_demodulation,[],[f117,f87]) ).

fof(f126,plain,
    ! [X0] : join(X0,X0) = X0,
    inference(forward_demodulation,[],[f122,f87]) ).

fof(f137,plain,
    ! [X0,X1] : join(meet(X0,X0),meet(X1,X0)) = X0,
    inference(superposition,[],[f2,f126]) ).

fof(f140,plain,
    ! [X0,X1] : join(X0,meet(X1,X0)) = X0,
    inference(forward_demodulation,[],[f137,f84]) ).

fof(f283,plain,
    ! [X0,X1] : meet(X1,meet(X0,X1)) = join(join(meet(X0,X1),meet(X1,meet(X0,X1))),meet(X1,meet(X0,X1))),
    inference(superposition,[],[f45,f56]) ).

fof(f295,plain,
    ! [X0,X1] : meet(X1,meet(X0,X1)) = join(meet(X0,X1),meet(X1,meet(X0,X1))),
    inference(forward_demodulation,[],[f283,f140]) ).

fof(f305,plain,
    ! [X0,X1] : meet(X0,X1) = meet(X1,meet(X0,X1)),
    inference(forward_demodulation,[],[f295,f140]) ).

fof(f318,plain,
    ! [X0,X1] : join(meet(X0,X1),meet(X1,join(X1,meet(X0,X1)))) = X1,
    inference(superposition,[],[f1,f305]) ).

fof(f335,plain,
    ! [X0,X1] : join(meet(X0,X1),meet(X1,X1)) = X1,
    inference(forward_demodulation,[],[f318,f140]) ).

fof(f337,plain,
    ! [X0,X1] : join(meet(X0,X1),X1) = X1,
    inference(forward_demodulation,[],[f335,f84]) ).

fof(f355,plain,
    ! [X0,X1] : meet(X1,X0) = join(meet(meet(X1,X0),X0),meet(meet(X1,X0),X0)),
    inference(superposition,[],[f1,f337]) ).

fof(f356,plain,
    ! [X0,X1] : meet(X1,X0) = meet(meet(X1,X0),X0),
    inference(forward_demodulation,[],[f355,f126]) ).

fof(f370,plain,
    ! [X0,X1] : meet(join(X0,X1),X0) = X0,
    inference(superposition,[],[f356,f46]) ).

fof(f408,plain,
    ! [X0,X1] : join(meet(X0,X1),X0) = meet(X0,join(meet(X0,X1),X0)),
    inference(superposition,[],[f370,f45]) ).

fof(f853,plain,
    ! [X0,X1] : meet(join(meet(X0,X1),X0),X0) = X0,
    inference(superposition,[],[f101,f408]) ).

fof(f909,plain,
    ! [X0,X1] : join(meet(X0,X1),X0) = join(X0,meet(join(meet(X0,X1),X0),join(join(meet(X0,X1),X0),X0))),
    inference(superposition,[],[f1,f853]) ).

fof(f935,plain,
    ! [X0,X1] : join(meet(X0,X1),X0) = join(X0,meet(join(meet(X0,X1),X0),X0)),
    inference(forward_demodulation,[],[f909,f45]) ).

fof(f942,plain,
    ! [X0,X1] : join(meet(X0,X1),X0) = X0,
    inference(forward_demodulation,[],[f935,f140]) ).

fof(f955,plain,
    ! [X0,X1] : join(X0,X1) = join(X0,join(X0,X1)),
    inference(superposition,[],[f942,f370]) ).

fof(f965,plain,
    ! [X0,X1] : meet(X0,X1) = join(meet(meet(X0,X1),X0),meet(meet(X0,X1),X0)),
    inference(superposition,[],[f1,f942]) ).

fof(f980,plain,
    ! [X0,X1] : meet(X0,X1) = meet(meet(X0,X1),X0),
    inference(forward_demodulation,[],[f965,f126]) ).

fof(f1011,plain,
    ! [X0,X1] : join(meet(X0,join(X0,X1)),meet(X0,join(X0,X1))) = X0,
    inference(superposition,[],[f1,f955]) ).

fof(f1026,plain,
    ! [X0,X1] : meet(X0,join(X0,X1)) = X0,
    inference(forward_demodulation,[],[f1011,f126]) ).

fof(f1057,plain,
    ! [X2,X0,X1] : join(X0,X1) = join(join(meet(join(X0,X1),X2),X0),join(X0,X1)),
    inference(superposition,[],[f5,f1026]) ).

fof(f1105,plain,
    ! [X0,X1] : meet(X0,join(X1,X0)) = X0,
    inference(superposition,[],[f980,f101]) ).

fof(f1117,plain,
    ! [X0,X1] : join(X0,meet(X0,X1)) = X0,
    inference(superposition,[],[f140,f980]) ).

fof(f1188,plain,
    ! [X0,X1] : meet(join(X1,X0),X0) = X0,
    inference(superposition,[],[f305,f1105]) ).

fof(f3387,plain,
    ! [X0,X1] : meet(X0,X1) = meet(meet(X1,X0),meet(X0,X1)),
    inference(superposition,[],[f32,f1117]) ).

fof(f3562,plain,
    ! [X0,X1] : meet(X0,X1) = meet(meet(X0,X1),meet(X1,X0)),
    inference(superposition,[],[f980,f3387]) ).

fof(f3827,plain,
    ! [X0,X1] : meet(X0,X1) = meet(X1,X0),
    inference(superposition,[],[f3562,f3387]) ).

fof(f7587,plain,
    ! [X0,X1] : join(X1,X0) = join(join(X0,X1),join(X1,X0)),
    inference(superposition,[],[f1057,f1188]) ).

fof(f7824,plain,
    ! [X0,X1] : join(X1,X0) = meet(join(X0,X1),join(X1,X0)),
    inference(superposition,[],[f370,f7587]) ).

fof(f7831,plain,
    ! [X0,X1] : join(X1,X0) = meet(join(X1,X0),join(X0,X1)),
    inference(superposition,[],[f1026,f7587]) ).

fof(f8290,plain,
    ! [X0,X1] : join(X0,X1) = join(X1,X0),
    inference(superposition,[],[f7831,f7824]) ).

fof(f8673,plain,
    ( join(a,b) != join(a,b)
    | spl0_1 ),
    inference(superposition,[],[f11,f8290]) ).

fof(f8786,plain,
    ( $false
    | spl0_1 ),
    inference(trivial_inequality_removal,[],[f8673]) ).

fof(f8787,plain,
    spl0_1,
    inference(avatar_contradiction_clause,[],[f8786]) ).

fof(f8852,plain,
    ( $false
    | spl0_2 ),
    inference(forward_subsumption_resolution,[],[f15,f126]) ).

fof(f8853,plain,
    spl0_2,
    inference(avatar_contradiction_clause,[],[f8852]) ).

fof(f8854,plain,
    ( $false
    | spl0_3 ),
    inference(forward_subsumption_resolution,[],[f19,f3827]) ).

fof(f8855,plain,
    spl0_3,
    inference(avatar_contradiction_clause,[],[f8854]) ).

fof(f8856,plain,
    ( $false
    | spl0_4 ),
    inference(forward_subsumption_resolution,[],[f23,f84]) ).

fof(f8857,plain,
    spl0_4,
    inference(avatar_contradiction_clause,[],[f8856]) ).

cnf(s8,plain,
    ( ~ spl0_1
    | ~ spl0_2
    | ~ spl0_3
    | ~ spl0_4 ),
    inference(sat_conversion,[],[f24]) ).

cnf(s1400,plain,
    spl0_1,
    inference(sat_conversion,[],[f8787]) ).

cnf(s1467,plain,
    spl0_2,
    inference(sat_conversion,[],[f8853]) ).

cnf(s1468,plain,
    spl0_3,
    inference(sat_conversion,[],[f8855]) ).

cnf(s1469,plain,
    spl0_4,
    inference(sat_conversion,[],[f8857]) ).

cnf(s1470,plain,
    $false,
    inference(rat,[],[s8,s1469,s1468,s1467,s1400]) ).

fof(f8858,plain,
    $false,
    inference(avatar_sat_refutation,[],[s1470]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03  % Problem  : LAT029-1 : TPTP v9.3.1. Released v2.2.0.
% 0.00/0.05  % Command  : run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 SAT
% 0.13/0.39  % Computer : n002.cluster.edu
% 0.13/0.39  % Model    : x86_64 x86_64
% 0.13/0.39  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.39  % Memory   : 8046.5625MB
% 0.13/0.39  % OS       : Linux 6.8.0-71-generic
% 0.13/0.39  % CPULimit : 300
% 0.13/0.39  % WCLimit  : 300
% 0.13/0.39  % DateTime : Sun Sep 27 14:00:06 UTC 2026
% 0.13/0.39  % CPUTime  : 
% 0.13/0.39  Running run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 SAT
% 0.13/0.42  Running first-order model finding
% 0.13/0.42  Running: /export/starexec/sandbox/solver/bin/vampire-ho --input_syntax tptp --output_axiom_names on --mode casc --intent sat -m 16384 --cores 7 -t 300 /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.85/0.62  % (3544728)Will run a generic schedule for satisfiability detection.
% 0.85/0.62  % (3544734)% WARNING: option uhcvi not known.
% 0.85/0.62  % (3544739)ott-3_16_to=lpo:sil=16000:sp=arity:fd=off:rp=on:random_seed=1990978192:i=159:bs=unit_only:nicw=on:fsr=off:amm=off_2999 on theBenchmark for (2999ds/159Mi)
% 0.85/0.62  % (3544735)dis+10_161_sil=256000:plsq=on:plsqr=61199697,1048576:gs=on:alpa=true:sac=on:slsq=on:cn=on:random_seed=4275127960:i=88024:add=on:rawr=on_2999 on theBenchmark for (2999ds/88024Mi)
% 0.85/0.62  % (3544733)fmb+10_1_sas=cadical:bce=on:rp=on:random_seed=3258081750_2999 on theBenchmark for (2999ds/0Mi)
% 0.85/0.62  % (3544736)dis+10_1_sil=32000:sp=arity:random_seed=957956996:i=103:fgj=on_2999 on theBenchmark for (2999ds/103Mi)
% 0.85/0.62  % (3544734)dis+11_61:31_drc=ordering:lsd=5:bsr=unit_only:rp=on:newcnf=on:random_seed=4037389730:i=135531:add=off:rawr=on_2999 on theBenchmark for (2999ds/135531Mi)
% 0.85/0.62  % TRYING [1]
% 0.85/0.62  % TRYING [2]
% 0.85/0.62  % TRYING [3]
% 0.85/0.62  % TRYING [4]
% 0.85/0.62  % TRYING [5]
% 0.85/0.62  % (3544737)ott+31_1_sil=16000:lcm=predicate:bce=on:newcnf=on:random_seed=1884464956:i=116_2999 on theBenchmark for (2999ds/116Mi)
% 0.85/0.62  % (3544738)ott+1_1_to=lpo:sil=16000:sp=reverse_arity:erd=off:random_seed=1803582237:i=131_2999 on theBenchmark for (2999ds/131Mi)
% 0.85/0.62  % TRYING [6]
% 0.85/0.62  % (3544739)Instruction limit reached! 
% 0.85/0.62  % (3544739)------------------------------
% 0.85/0.62  % (3544739)Version: Vampire 5.0.1 (Release build, commit 5ef7c2677 on 2026-07-16 16:54:09 +0200)
% 0.85/0.62  % (3544739)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 0.85/0.62  % (3544739)CaDiCaL version: 2.1.3
% 0.85/0.62  % (3544739)Termination reason: Instruction limit
% 0.85/0.62  % (3544739)Termination phase: Saturation
% 0.85/0.62  % (3544739)Time elapsed: 0.053 s
% 0.85/0.62  % (3544739)Peak memory usage: 13 MB
% 0.85/0.62  % (3544739)Instructions burned: 161 (million)
% 0.85/0.62  % (3544736)Instruction limit reached! 
% 0.85/0.62  % (3544736)------------------------------
% 0.85/0.62  % (3544736)Version: Vampire 5.0.1 (Release build, commit 5ef7c2677 on 2026-07-16 16:54:09 +0200)
% 0.85/0.62  % (3544736)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 0.85/0.62  % (3544736)CaDiCaL version: 2.1.3
% 0.85/0.62  % (3544736)Termination reason: Instruction limit
% 0.85/0.62  % (3544736)Termination phase: Saturation
% 0.85/0.62  % (3544736)Time elapsed: 0.060 s
% 0.85/0.62  % (3544736)Peak memory usage: 12 MB
% 0.85/0.62  % (3544736)Instructions burned: 103 (million)
% 0.85/0.62  % (3544756)fmb+10_1_fmbas=predicate:sil=64000:sas=cadical:random_seed=834176446:i=714:nm=2_2999 on theBenchmark for (2999ds/714Mi)
% 0.85/0.62  % TRYING [1]
% 0.85/0.62  % TRYING [2]
% 0.85/0.62  % TRYING [3]
% 0.85/0.62  % TRYING [4]
% 0.85/0.62  % TRYING [5]
% 0.85/0.62  % (3544761)ott+32_1_sil=16000:bsd=on:sp=const_max:bce=on:random_seed=4275143942:i=131:bd=preordered:fsd=on_2999 on theBenchmark for (2999ds/131Mi)
% 0.85/0.62  % TRYING [6]
% 0.85/0.62  % (3544737)Instruction limit reached! 
% 0.85/0.62  % (3544737)------------------------------
% 0.85/0.62  % (3544737)Version: Vampire 5.0.1 (Release build, commit 5ef7c2677 on 2026-07-16 16:54:09 +0200)
% 0.85/0.62  % (3544737)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 0.85/0.62  % (3544737)CaDiCaL version: 2.1.3
% 0.85/0.62  % (3544737)Termination reason: Instruction limit
% 0.85/0.62  % (3544737)Termination phase: Saturation
% 0.85/0.62  % (3544737)Time elapsed: 0.077 s
% 0.85/0.62  % (3544737)Peak memory usage: 12 MB
% 0.85/0.62  % (3544737)Instructions burned: 118 (million)
% 0.85/0.62  % (3544738)Instruction limit reached! 
% 0.85/0.62  % (3544738)------------------------------
% 0.85/0.62  % (3544738)Version: Vampire 5.0.1 (Release build, commit 5ef7c2677 on 2026-07-16 16:54:09 +0200)
% 0.85/0.62  % (3544738)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 0.85/0.62  % (3544738)CaDiCaL version: 2.1.3
% 0.85/0.62  % (3544738)Termination reason: Instruction limit
% 0.85/0.62  % (3544738)Termination phase: Saturation
% 0.85/0.62  % (3544738)Time elapsed: 0.082 s
% 0.85/0.62  % (3544738)Peak memory usage: 13 MB
% 0.85/0.62  % (3544738)Instructions burned: 131 (million)
% 0.85/0.62  % (3544772)dis+11_32_anc=none:slsqr=2,1:sil=64000:sas=cadical:lma=off:lsd=50:s2agt=8:slsqc=1:kmz=on:newcnf=on:slsq=on:random_seed=1923286966:i=684:slsql=off:bs=unit_only:nicw=on:rawr=on_2998 on theBenchmark for (2998ds/684Mi)
% 0.85/0.62  % TRYING [7]
% 0.85/0.62  % (3544777)ott-21_1_sil=16000:fs=off:random_seed=3430778279:i=180:av=off:fsr=off_2998 on theBenchmark for (2998ds/180Mi)
% 0.85/0.62  % (3544735) found proof, printing to "/export/starexec/sandbox/tmp/vampire-proof-3544728-3544735"...
% 0.85/0.62  % (3544735)...printing done.
% 0.85/0.62  % (3544735)Refutation found. Thanks to Tanya!
% 0.85/0.62  % SZS status Unsatisfiable for theBenchmark
% 0.85/0.62  % SZS output start Proof for theBenchmark
% See solution above
% 0.85/0.62  % (3544735)------------------------------
% 0.85/0.62  % (3544735)Version: Vampire 5.0.1 (Release build, commit 5ef7c2677 on 2026-07-16 16:54:09 +0200)
% 0.85/0.62  % (3544735)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 0.85/0.62  % (3544735)CaDiCaL version: 2.1.3
% 0.85/0.62  % (3544735)Termination reason: Refutation
% 0.85/0.62  % (3544735)Time elapsed: 0.154 s
% 0.85/0.62  % (3544735)Peak memory usage: 14 MB
% 0.85/0.62  % (3544735)Instructions burned: 285 (million)
% 0.85/0.62  % (3544728)Success in time 0.191 s
% 0.85/0.62  % Vampire exiting
%------------------------------------------------------------------------------