↑ Up

Drodi-SAT---4.1.1.UNS-Ass.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : Drodi-SAT---4.1.1
% Problem  : SWC379-1 : TPTP v9.3.1. Released v2.4.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : drodi -satmode(on) -timeout(300) /export/starexec/sandbox/benchmark/theBenchmark.p

% Computer : n010.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 : Thu Sep 24 02:42:19 PM UTC 2026

% Result   : Unsatisfiable 0.10s 0.41s
% Output   : Assurance 0s
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----No solution output by system
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03  % Problem  : SWC379-1 : TPTP v9.3.1. Released v2.4.0.
% 0.00/0.04  % Command  : drodi -satmode(on) -timeout(300) /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.10/0.36  % Computer : n010.cluster.edu
% 0.10/0.36  % Model    : x86_64 x86_64
% 0.10/0.36  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.10/0.36  % Memory   : 8046.5625MB
% 0.10/0.36  % OS       : Linux 6.8.0-71-generic
% 0.10/0.36  % CPULimit : 300
% 0.10/0.36  % WCLimit  : 300
% 0.10/0.36  % DateTime : Mon Sep 21 08:20:29 UTC 2026
% 0.10/0.36  % CPUTime  : 
% 0.10/0.38  % Drodi V4.1.1
% 0.10/0.41  % Refutation found
% 0.10/0.41  % SZS status Unsatisfiable for theBenchmark: Theory is unsatisfiable
% 0.10/0.41  % SZS output start CNFRefutation for theBenchmark
% 0.10/0.41  fof(f190,negated_conjecture,(
% 0.10/0.41    sk2 = sk4 ),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f191,negated_conjecture,(
% 0.10/0.41    sk1 = sk3 ),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f192,negated_conjecture,(
% 0.10/0.41    (![A]: (( ~ ssItem(A)| memberP(sk3,A)| ssItem(sk5(A))| ~ memberP(sk4,A) ) ))),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f193,negated_conjecture,(
% 0.10/0.41    (![A]: (( ~ ssItem(A)| memberP(sk3,A)| memberP(sk4,sk5(A))| ~ memberP(sk4,A) ) ))),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f194,negated_conjecture,(
% 0.10/0.41    (![A]: (( ~ ssItem(A)| memberP(sk3,A)| leq(sk5(A),A)| ~ memberP(sk4,A) ) ))),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f195,negated_conjecture,(
% 0.10/0.41    (![A]: (( ~ ssItem(A)| memberP(sk3,A)| A != sk5(A)| ~ memberP(sk4,A) ) ))),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f196,negated_conjecture,(
% 0.10/0.41    (![A]: (( ~ ssItem(A)| ~ memberP(sk3,A)| memberP(sk4,A) ) ))),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f197,negated_conjecture,(
% 0.10/0.41    (![A,B]: (( ~ ssItem(A)| ~ memberP(sk3,A)| ~ ssItem(B)| A = B| ~ memberP(sk4,B)| ~ leq(B,A) ) ))),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f198,negated_conjecture,(
% 0.10/0.41    ssItem(sk6) ),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f199,negated_conjecture,(
% 0.10/0.41    ( memberP(sk1,sk6)| memberP(sk2,sk6) ) ),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f200,negated_conjecture,(
% 0.10/0.41    (![A]: (( memberP(sk1,sk6)| ~ ssItem(A)| sk6 = A| ~ memberP(sk2,A)| ~ leq(A,sk6) ) ))),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f201,negated_conjecture,(
% 0.10/0.41    ( ssItem(sk7)| ~ memberP(sk2,sk6)| ~ memberP(sk1,sk6) ) ),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f202,negated_conjecture,(
% 0.10/0.41    ( memberP(sk2,sk7)| ~ memberP(sk2,sk6)| ~ memberP(sk1,sk6) ) ),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f203,negated_conjecture,(
% 0.10/0.41    ( leq(sk7,sk6)| ~ memberP(sk2,sk6)| ~ memberP(sk1,sk6) ) ),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f204,negated_conjecture,(
% 0.10/0.41    ( sk6 != sk7| ~ memberP(sk2,sk6)| ~ memberP(sk1,sk6) ) ),
% 0.10/0.41    file('/export/starexec/sandbox/benchmark/theBenchmark.p')).
% 0.10/0.41  fof(f439,plain,(
% 0.10/0.41    sk2=sk4),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f190])).
% 0.10/0.41  fof(f440,plain,(
% 0.10/0.41    sk1=sk3),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f191])).
% 0.10/0.41  fof(f441,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk3,X0)|ssItem(sk5(X0))|~memberP(sk4,X0))),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f192])).
% 0.10/0.41  fof(f442,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk3,X0)|memberP(sk4,sk5(X0))|~memberP(sk4,X0))),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f193])).
% 0.10/0.41  fof(f443,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk3,X0)|leq(sk5(X0),X0)|~memberP(sk4,X0))),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f194])).
% 0.10/0.41  fof(f444,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk3,X0)|~X0=sk5(X0)|~memberP(sk4,X0))),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f195])).
% 0.10/0.41  fof(f445,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|~memberP(sk3,X0)|memberP(sk4,X0))),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f196])).
% 0.10/0.41  fof(f446,plain,(
% 0.10/0.41    ![X0,X1]: (~ssItem(X0)|~memberP(sk3,X0)|~ssItem(X1)|X0=X1|~memberP(sk4,X1)|~leq(X1,X0))),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f197])).
% 0.10/0.41  fof(f447,plain,(
% 0.10/0.41    ssItem(sk6)),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f198])).
% 0.10/0.41  fof(f448,plain,(
% 0.10/0.41    memberP(sk1,sk6)|memberP(sk2,sk6)),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f199])).
% 0.10/0.41  fof(f449,plain,(
% 0.10/0.41    ![X0]: (memberP(sk1,sk6)|~ssItem(X0)|sk6=X0|~memberP(sk2,X0)|~leq(X0,sk6))),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f200])).
% 0.10/0.41  fof(f450,plain,(
% 0.10/0.41    ssItem(sk7)|~memberP(sk2,sk6)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f201])).
% 0.10/0.41  fof(f451,plain,(
% 0.10/0.41    memberP(sk2,sk7)|~memberP(sk2,sk6)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f202])).
% 0.10/0.41  fof(f452,plain,(
% 0.10/0.41    leq(sk7,sk6)|~memberP(sk2,sk6)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f203])).
% 0.10/0.41  fof(f453,plain,(
% 0.10/0.41    ~sk6=sk7|~memberP(sk2,sk6)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(cnf_transformation,[status(thm)],[f204])).
% 0.10/0.41  fof(f487,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk1,X0)|ssItem(sk5(X0))|~memberP(sk4,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f440,f441])).
% 0.10/0.41  fof(f488,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk1,X0)|ssItem(sk5(X0))|~memberP(sk2,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f439,f487])).
% 0.10/0.41  fof(f489,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk1,X0)|memberP(sk4,sk5(X0))|~memberP(sk4,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f440,f442])).
% 0.10/0.41  fof(f490,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk1,X0)|memberP(sk2,sk5(X0))|~memberP(sk4,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f439,f489])).
% 0.10/0.41  fof(f491,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk1,X0)|memberP(sk2,sk5(X0))|~memberP(sk2,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f439,f490])).
% 0.10/0.41  fof(f492,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk1,X0)|leq(sk5(X0),X0)|~memberP(sk4,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f440,f443])).
% 0.10/0.41  fof(f493,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk1,X0)|leq(sk5(X0),X0)|~memberP(sk2,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f439,f492])).
% 0.10/0.41  fof(f494,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk1,X0)|~X0=sk5(X0)|~memberP(sk4,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f440,f444])).
% 0.10/0.41  fof(f495,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|memberP(sk1,X0)|~X0=sk5(X0)|~memberP(sk2,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f439,f494])).
% 0.10/0.41  fof(f496,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|~memberP(sk1,X0)|memberP(sk4,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f440,f445])).
% 0.10/0.41  fof(f497,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|~memberP(sk1,X0)|memberP(sk2,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f439,f496])).
% 0.10/0.41  fof(f498,plain,(
% 0.10/0.41    ![X0,X1]: (~ssItem(X0)|~memberP(sk1,X0)|~ssItem(X1)|X0=X1|~memberP(sk4,X1)|~leq(X1,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f440,f446])).
% 0.10/0.41  fof(f499,plain,(
% 0.10/0.41    ![X0,X1]: (~ssItem(X0)|~memberP(sk1,X0)|~ssItem(X1)|X0=X1|~memberP(sk2,X1)|~leq(X1,X0))),
% 0.10/0.41    inference(forward_demodulation,[status(thm)],[f439,f498])).
% 0.10/0.41  fof(f502,plain,(
% 0.10/0.41    ~ssItem(sk6)|memberP(sk1,sk6)|ssItem(sk5(sk6))|memberP(sk1,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f488,f448])).
% 0.10/0.41  fof(f504,plain,(
% 0.10/0.41    ~ssItem(sk6)|memberP(sk1,sk6)|ssItem(sk5(sk6))),
% 0.10/0.41    inference(duplicate_literals_removal,[status(thm)],[f502])).
% 0.10/0.41  fof(f505,plain,(
% 0.10/0.41    memberP(sk1,sk6)|ssItem(sk5(sk6))),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f504,f447])).
% 0.10/0.41  fof(f537,plain,(
% 0.10/0.41    ~ssItem(sk6)|memberP(sk1,sk6)|~sk6=sk5(sk6)|memberP(sk1,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f495,f448])).
% 0.10/0.41  fof(f540,plain,(
% 0.10/0.41    ~ssItem(sk6)|memberP(sk1,sk6)|~sk6=sk5(sk6)),
% 0.10/0.41    inference(duplicate_literals_removal,[status(thm)],[f537])).
% 0.10/0.41  fof(f541,plain,(
% 0.10/0.41    memberP(sk1,sk6)|~sk6=sk5(sk6)),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f540,f447])).
% 0.10/0.41  fof(f573,plain,(
% 0.10/0.41    leq(sk7,sk6)|~memberP(sk1,sk6)|~ssItem(sk6)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f452,f497])).
% 0.10/0.41  fof(f574,plain,(
% 0.10/0.41    leq(sk7,sk6)|~memberP(sk1,sk6)|~ssItem(sk6)),
% 0.10/0.41    inference(duplicate_literals_removal,[status(thm)],[f573])).
% 0.10/0.41  fof(f575,plain,(
% 0.10/0.41    leq(sk7,sk6)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f574,f447])).
% 0.10/0.41  fof(f576,plain,(
% 0.10/0.41    memberP(sk1,sk6)|~ssItem(sk5(sk6))|sk6=sk5(sk6)|~memberP(sk2,sk5(sk6))|~ssItem(sk6)|memberP(sk1,sk6)|~memberP(sk2,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f449,f493])).
% 0.10/0.41  fof(f578,plain,(
% 0.10/0.41    memberP(sk1,sk6)|~ssItem(sk5(sk6))|sk6=sk5(sk6)|~memberP(sk2,sk5(sk6))|~ssItem(sk6)|~memberP(sk2,sk6)),
% 0.10/0.41    inference(duplicate_literals_removal,[status(thm)],[f576])).
% 0.10/0.41  fof(f579,plain,(
% 0.10/0.41    memberP(sk1,sk6)|sk6=sk5(sk6)|~memberP(sk2,sk5(sk6))|~ssItem(sk6)|~memberP(sk2,sk6)),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f578,f505])).
% 0.10/0.41  fof(f641,plain,(
% 0.10/0.41    memberP(sk1,sk6)|sk6=sk5(sk6)|~memberP(sk2,sk5(sk6))|~memberP(sk2,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f579,f447])).
% 0.10/0.41  fof(f642,plain,(
% 0.10/0.41    memberP(sk1,sk6)|~memberP(sk2,sk5(sk6))|~memberP(sk2,sk6)),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f641,f541])).
% 0.10/0.41  fof(f685,plain,(
% 0.10/0.41    memberP(sk1,sk6)|~memberP(sk2,sk5(sk6))|memberP(sk1,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f642,f448])).
% 0.10/0.41  fof(f687,plain,(
% 0.10/0.41    memberP(sk1,sk6)|~memberP(sk2,sk5(sk6))),
% 0.10/0.41    inference(duplicate_literals_removal,[status(thm)],[f685])).
% 0.10/0.41  fof(f688,plain,(
% 0.10/0.41    memberP(sk1,sk6)|~ssItem(sk6)|memberP(sk1,sk6)|~memberP(sk2,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f687,f491])).
% 0.10/0.41  fof(f690,plain,(
% 0.10/0.41    memberP(sk1,sk6)|~ssItem(sk6)|~memberP(sk2,sk6)),
% 0.10/0.41    inference(duplicate_literals_removal,[status(thm)],[f688])).
% 0.10/0.41  fof(f691,plain,(
% 0.10/0.41    memberP(sk2,sk7)|~memberP(sk2,sk6)),
% 0.10/0.41    inference(backward_subsumption_resolution,[status(thm)],[f451,f697])).
% 0.10/0.41  fof(f692,plain,(
% 0.10/0.41    ~sk6=sk7|~memberP(sk2,sk6)),
% 0.10/0.41    inference(backward_subsumption_resolution,[status(thm)],[f453,f697])).
% 0.10/0.41  fof(f693,plain,(
% 0.10/0.41    ssItem(sk7)|~memberP(sk2,sk6)),
% 0.10/0.41    inference(backward_subsumption_resolution,[status(thm)],[f450,f697])).
% 0.10/0.41  fof(f696,plain,(
% 0.10/0.41    memberP(sk1,sk6)),
% 0.10/0.41    inference(backward_subsumption_resolution,[status(thm)],[f448,f697])).
% 0.10/0.41  fof(f697,plain,(
% 0.10/0.41    memberP(sk1,sk6)|~memberP(sk2,sk6)),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f690,f447])).
% 0.10/0.41  fof(f703,plain,(
% 0.10/0.41    leq(sk7,sk6)),
% 0.10/0.41    inference(backward_subsumption_resolution,[status(thm)],[f575,f696])).
% 0.10/0.41  fof(f710,plain,(
% 0.10/0.41    memberP(sk2,sk7)|~ssItem(sk6)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f691,f497])).
% 0.10/0.41  fof(f711,plain,(
% 0.10/0.41    memberP(sk2,sk7)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f710,f447])).
% 0.10/0.41  fof(f712,plain,(
% 0.10/0.41    ![X0]: (~ssItem(sk6)|~ssItem(X0)|sk6=X0|~memberP(sk2,X0)|~leq(X0,sk6))),
% 0.10/0.41    inference(resolution,[status(thm)],[f696,f499])).
% 0.10/0.41  fof(f713,plain,(
% 0.10/0.41    ![X0]: (~ssItem(X0)|sk6=X0|~memberP(sk2,X0)|~leq(X0,sk6))),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f712,f447])).
% 0.10/0.41  fof(f716,plain,(
% 0.10/0.41    ~sk6=sk7|~ssItem(sk6)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f692,f497])).
% 0.10/0.41  fof(f717,plain,(
% 0.10/0.41    ~sk6=sk7|~memberP(sk1,sk6)),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f716,f447])).
% 0.10/0.41  fof(f718,plain,(
% 0.10/0.41    ssItem(sk7)|~ssItem(sk6)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f693,f497])).
% 0.10/0.41  fof(f719,plain,(
% 0.10/0.41    ssItem(sk7)|~memberP(sk1,sk6)),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f718,f447])).
% 0.10/0.41  fof(f761,plain,(
% 0.10/0.41    ~sk6=sk7),
% 0.10/0.41    inference(resolution,[status(thm)],[f717,f696])).
% 0.10/0.41  fof(f762,plain,(
% 0.10/0.41    memberP(sk2,sk7)),
% 0.10/0.41    inference(resolution,[status(thm)],[f711,f696])).
% 0.10/0.41  fof(f766,plain,(
% 0.10/0.41    ssItem(sk7)),
% 0.10/0.41    inference(resolution,[status(thm)],[f719,f696])).
% 0.10/0.41  fof(f777,plain,(
% 0.10/0.41    ~ssItem(sk7)|sk6=sk7|~leq(sk7,sk6)),
% 0.10/0.41    inference(resolution,[status(thm)],[f713,f762])).
% 0.10/0.41  fof(f780,plain,(
% 0.10/0.41    sk6=sk7|~leq(sk7,sk6)),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f777,f766])).
% 0.10/0.41  fof(f807,plain,(
% 0.10/0.41    sk6=sk7),
% 0.10/0.41    inference(resolution,[status(thm)],[f780,f703])).
% 0.10/0.41  fof(f808,plain,(
% 0.10/0.41    $false),
% 0.10/0.41    inference(forward_subsumption_resolution,[status(thm)],[f807,f761])).
% 0.10/0.41  % SZS output end CNFRefutation for theBenchmark.p
% 0.10/0.44  % Elapsed time: 0.072260 seconds
% 0.10/0.44  % CPU time: 0.237790 seconds
% 0.10/0.44  % Total memory used: 110.424 MB
% 0.10/0.44  % Net memory used: 110.172 MB
%------------------------------------------------------------------------------