↑ Up

E---3.5.1.UNS-CRf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : E---3.5.1
% Problem  : PUZ008-2 : TPTP v9.3.1. Released v1.0.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM

% Computer : n012.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:01:21 PM UTC 2026

% Result   : Unsatisfiable 0.07s 0.34s
% Output   : CNFRefutation 0.07s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   10
%            Number of leaves      :   13
% Syntax   : Number of clauses     :   49 (  16 unt;   0 nHn;  49 RR)
%            Number of literals    :   82 (   0 equ;  39 neg)
%            Maximal clause size   :    2 (   1 avg)
%            Maximal term depth    :    3 (   2 avg)
%            Number of predicates  :    2 (   1 usr;   1 prp; 0-3 aty)
%            Number of functors    :   10 (  10 usr;   6 con; 0-2 aty)
%            Number of variables   :    0 (   0 sgn)

% Comments : 
%------------------------------------------------------------------------------
cnf(bmmmccc_x_to_mmmc_bcc,axiom,
    ( ~ banks(west(m(n3),c(n3)),east(m(n0),c(n0)),boatonwest)
    | banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatoneast) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',bmmmccc_x_to_mmmc_bcc) ).

cnf(mmmc_bcc_to_bmmmcc_c,axiom,
    ( ~ banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatoneast)
    | banks(west(m(n3),c(n2)),east(m(n0),c(n1)),boatonwest) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mmmc_bcc_to_bmmmcc_c) ).

cnf(starting_configuration,hypothesis,
    banks(west(m(n3),c(n3)),east(m(n0),c(n0)),boatonwest),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',starting_configuration) ).

cnf(bmmmcc_c_to_mmm_bccc,axiom,
    ( ~ banks(west(m(n3),c(n2)),east(m(n0),c(n1)),boatonwest)
    | banks(west(m(n3),c(n0)),east(m(n0),c(n3)),boatoneast) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',bmmmcc_c_to_mmm_bccc) ).

cnf(mmm_bccc_to_bmmmc_cc,axiom,
    ( ~ banks(west(m(n3),c(n0)),east(m(n0),c(n3)),boatoneast)
    | banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatonwest) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mmm_bccc_to_bmmmc_cc) ).

cnf(bmmmc_cc_to_mc_bmmcc,axiom,
    ( ~ banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatonwest)
    | banks(west(m(n1),c(n1)),east(m(n2),c(n2)),boatoneast) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',bmmmc_cc_to_mc_bmmcc) ).

cnf(bcc_mmmc_to_x_bmmmccc,axiom,
    ( ~ banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatonwest)
    | banks(west(m(n0),c(n0)),east(m(n3),c(n3)),boatoneast) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',bcc_mmmc_to_x_bmmmccc) ).

cnf(prove_can_get_across,negated_conjecture,
    ~ banks(west(m(n0),c(n0)),east(m(n3),c(n3)),boatoneast),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',prove_can_get_across) ).

cnf(mc_bmmcc_to_bmmcc_mc,axiom,
    ( ~ banks(west(m(n1),c(n1)),east(m(n2),c(n2)),boatoneast)
    | banks(west(m(n2),c(n2)),east(m(n1),c(n1)),boatonwest) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mc_bmmcc_to_bmmcc_mc) ).

cnf(c_bmmmcc_to_bcc_mmmc,axiom,
    ( ~ banks(west(m(n0),c(n1)),east(m(n3),c(n2)),boatoneast)
    | banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatonwest) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',c_bmmmcc_to_bcc_mmmc) ).

cnf(bmmcc_mc_to_cc_bmmmc,axiom,
    ( ~ banks(west(m(n2),c(n2)),east(m(n1),c(n1)),boatonwest)
    | banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatoneast) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',bmmcc_mc_to_cc_bmmmc) ).

cnf(bccc_mmm_to_c_bmmmcc,axiom,
    ( ~ banks(west(m(n0),c(n3)),east(m(n3),c(n0)),boatonwest)
    | banks(west(m(n0),c(n1)),east(m(n3),c(n2)),boatoneast) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',bccc_mmm_to_c_bmmmcc) ).

cnf(cc_bmmmc_to_bccc_mmm,axiom,
    ( ~ banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatoneast)
    | banks(west(m(n0),c(n3)),east(m(n3),c(n0)),boatonwest) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',cc_bmmmc_to_bccc_mmm) ).

cnf(c_0_13,plain,
    ( ~ banks(west(m(n3),c(n3)),east(m(n0),c(n0)),boatonwest)
    | banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatoneast) ),
    inference(fof_simplification,[status(thm)],[bmmmccc_x_to_mmmc_bcc]) ).

cnf(c_0_14,plain,
    ( ~ banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatoneast)
    | banks(west(m(n3),c(n2)),east(m(n0),c(n1)),boatonwest) ),
    inference(fof_simplification,[status(thm)],[mmmc_bcc_to_bmmmcc_c]) ).

cnf(c_0_15,plain,
    ( ~ banks(west(m(n3),c(n3)),east(m(n0),c(n0)),boatonwest)
    | banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatoneast) ),
    c_0_13 ).

cnf(c_0_16,hypothesis,
    banks(west(m(n3),c(n3)),east(m(n0),c(n0)),boatonwest),
    starting_configuration ).

cnf(c_0_17,plain,
    ( ~ banks(west(m(n3),c(n2)),east(m(n0),c(n1)),boatonwest)
    | banks(west(m(n3),c(n0)),east(m(n0),c(n3)),boatoneast) ),
    inference(fof_simplification,[status(thm)],[bmmmcc_c_to_mmm_bccc]) ).

cnf(c_0_18,plain,
    ( ~ banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatoneast)
    | banks(west(m(n3),c(n2)),east(m(n0),c(n1)),boatonwest) ),
    c_0_14 ).

cnf(c_0_19,plain,
    banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatoneast),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_15,c_0_16])]) ).

cnf(c_0_20,plain,
    ( ~ banks(west(m(n3),c(n0)),east(m(n0),c(n3)),boatoneast)
    | banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatonwest) ),
    inference(fof_simplification,[status(thm)],[mmm_bccc_to_bmmmc_cc]) ).

cnf(c_0_21,plain,
    ( ~ banks(west(m(n3),c(n2)),east(m(n0),c(n1)),boatonwest)
    | banks(west(m(n3),c(n0)),east(m(n0),c(n3)),boatoneast) ),
    c_0_17 ).

cnf(c_0_22,plain,
    banks(west(m(n3),c(n2)),east(m(n0),c(n1)),boatonwest),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_18,c_0_19])]) ).

cnf(c_0_23,plain,
    ( ~ banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatonwest)
    | banks(west(m(n1),c(n1)),east(m(n2),c(n2)),boatoneast) ),
    inference(fof_simplification,[status(thm)],[bmmmc_cc_to_mc_bmmcc]) ).

cnf(c_0_24,plain,
    ( ~ banks(west(m(n3),c(n0)),east(m(n0),c(n3)),boatoneast)
    | banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatonwest) ),
    c_0_20 ).

cnf(c_0_25,plain,
    banks(west(m(n3),c(n0)),east(m(n0),c(n3)),boatoneast),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_21,c_0_22])]) ).

cnf(c_0_26,plain,
    ( ~ banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatonwest)
    | banks(west(m(n0),c(n0)),east(m(n3),c(n3)),boatoneast) ),
    inference(fof_simplification,[status(thm)],[bcc_mmmc_to_x_bmmmccc]) ).

cnf(c_0_27,negated_conjecture,
    ~ banks(west(m(n0),c(n0)),east(m(n3),c(n3)),boatoneast),
    inference(fof_simplification,[status(thm)],[prove_can_get_across]) ).

cnf(c_0_28,plain,
    ( ~ banks(west(m(n1),c(n1)),east(m(n2),c(n2)),boatoneast)
    | banks(west(m(n2),c(n2)),east(m(n1),c(n1)),boatonwest) ),
    inference(fof_simplification,[status(thm)],[mc_bmmcc_to_bmmcc_mc]) ).

cnf(c_0_29,plain,
    ( ~ banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatonwest)
    | banks(west(m(n1),c(n1)),east(m(n2),c(n2)),boatoneast) ),
    c_0_23 ).

cnf(c_0_30,plain,
    banks(west(m(n3),c(n1)),east(m(n0),c(n2)),boatonwest),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_24,c_0_25])]) ).

cnf(c_0_31,plain,
    ( ~ banks(west(m(n0),c(n1)),east(m(n3),c(n2)),boatoneast)
    | banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatonwest) ),
    inference(fof_simplification,[status(thm)],[c_bmmmcc_to_bcc_mmmc]) ).

cnf(c_0_32,plain,
    ( ~ banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatonwest)
    | banks(west(m(n0),c(n0)),east(m(n3),c(n3)),boatoneast) ),
    c_0_26 ).

cnf(c_0_33,negated_conjecture,
    ~ banks(west(m(n0),c(n0)),east(m(n3),c(n3)),boatoneast),
    c_0_27 ).

cnf(c_0_34,plain,
    ( ~ banks(west(m(n2),c(n2)),east(m(n1),c(n1)),boatonwest)
    | banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatoneast) ),
    inference(fof_simplification,[status(thm)],[bmmcc_mc_to_cc_bmmmc]) ).

cnf(c_0_35,plain,
    ( ~ banks(west(m(n1),c(n1)),east(m(n2),c(n2)),boatoneast)
    | banks(west(m(n2),c(n2)),east(m(n1),c(n1)),boatonwest) ),
    c_0_28 ).

cnf(c_0_36,plain,
    banks(west(m(n1),c(n1)),east(m(n2),c(n2)),boatoneast),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_29,c_0_30])]) ).

cnf(c_0_37,plain,
    ( ~ banks(west(m(n0),c(n3)),east(m(n3),c(n0)),boatonwest)
    | banks(west(m(n0),c(n1)),east(m(n3),c(n2)),boatoneast) ),
    inference(fof_simplification,[status(thm)],[bccc_mmm_to_c_bmmmcc]) ).

cnf(c_0_38,plain,
    ( ~ banks(west(m(n0),c(n1)),east(m(n3),c(n2)),boatoneast)
    | banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatonwest) ),
    c_0_31 ).

cnf(c_0_39,plain,
    ~ banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatonwest),
    inference(sr,[status(thm)],[c_0_32,c_0_33]) ).

cnf(c_0_40,plain,
    ( ~ banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatoneast)
    | banks(west(m(n0),c(n3)),east(m(n3),c(n0)),boatonwest) ),
    inference(fof_simplification,[status(thm)],[cc_bmmmc_to_bccc_mmm]) ).

cnf(c_0_41,plain,
    ( ~ banks(west(m(n2),c(n2)),east(m(n1),c(n1)),boatonwest)
    | banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatoneast) ),
    c_0_34 ).

cnf(c_0_42,plain,
    banks(west(m(n2),c(n2)),east(m(n1),c(n1)),boatonwest),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_35,c_0_36])]) ).

cnf(c_0_43,plain,
    ( ~ banks(west(m(n0),c(n3)),east(m(n3),c(n0)),boatonwest)
    | banks(west(m(n0),c(n1)),east(m(n3),c(n2)),boatoneast) ),
    c_0_37 ).

cnf(c_0_44,plain,
    ~ banks(west(m(n0),c(n1)),east(m(n3),c(n2)),boatoneast),
    inference(sr,[status(thm)],[c_0_38,c_0_39]) ).

cnf(c_0_45,plain,
    ( ~ banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatoneast)
    | banks(west(m(n0),c(n3)),east(m(n3),c(n0)),boatonwest) ),
    c_0_40 ).

cnf(c_0_46,plain,
    banks(west(m(n0),c(n2)),east(m(n3),c(n1)),boatoneast),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_41,c_0_42])]) ).

cnf(c_0_47,plain,
    ~ banks(west(m(n0),c(n3)),east(m(n3),c(n0)),boatonwest),
    inference(sr,[status(thm)],[c_0_43,c_0_44]) ).

cnf(c_0_48,plain,
    $false,
    inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_45,c_0_46])]),c_0_47]),
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.01  % Problem  : PUZ008-2 : TPTP v9.3.1. Released v1.0.0.
% 0.00/0.02  % Command  : run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% 0.05/0.31  % Computer : n012.cluster.edu
% 0.05/0.31  % Model    : x86_64 x86_64
% 0.05/0.31  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.05/0.31  % Memory   : 8046.5625MB
% 0.05/0.31  % OS       : Linux 6.8.0-71-generic
% 0.05/0.31  % CPULimit : 300
% 0.05/0.31  % WCLimit  : 300
% 0.05/0.31  % DateTime : Mon Sep 21 03:44:37 UTC 2026
% 0.05/0.31  % CPUTime  : 
% 0.05/0.31  Running run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% 0.07/0.33  Running first-order theorem proving
% 0.07/0.33  Running: /export/starexec/sandbox/solver/bin/eprover --delete-bad-limit=2000000000 --definitional-cnf=24 -s --print-statistics -R --print-version --proof-object --auto-schedule=8 --cpu-limit=300 /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.07/0.34  % Version: 3.5.1
% 0.07/0.34  % Preprocessing class: FSLSSMSSSSSNFFN.
% 0.07/0.34  % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.07/0.34  % Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.07/0.34  % Starting new_bool_3 with 300s (1) cores
% 0.07/0.34  % Starting new_bool_1 with 300s (1) cores
% 0.07/0.34  % Starting sh5l with 300s (1) cores
% 0.07/0.34  % new_bool_3 with pid 1489128 completed with status 0
% 0.07/0.34  % Result found by new_bool_3
% 0.07/0.34  % Preprocessing class: FSLSSMSSSSSNFFN.
% 0.07/0.34  % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.07/0.34  % Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.07/0.34  % Starting new_bool_3 with 300s (1) cores
% 0.07/0.34  % (lift_lambdas = 0, lambda_to_forall = 0,unroll_only_formulas = 0, sine = GSinE(CountFormulas,hypos,1.5,,3,20000,1.0))
% 0.07/0.34  % SinE strategy is GSinE(CountFormulas,hypos,1.5,,3,20000,1.0)
% 0.07/0.34  % Search class: FHUNF-FFMF21-SFFFFFNN
% 0.07/0.34  % partial match(1): FHUNF-FFMM21-SFFFFFNN
% 0.07/0.34  % Scheduled 5 strats onto 1 cores with 300 seconds (300 total)
% 0.07/0.34  % Starting SubtermCWHack with 31s (1) cores
% 0.07/0.34  % SubtermCWHack with pid 1489133 completed with status 0
% 0.07/0.34  % Result found by SubtermCWHack
% 0.07/0.34  % Preprocessing class: FSLSSMSSSSSNFFN.
% 0.07/0.34  % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.07/0.34  % Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.07/0.34  % Starting new_bool_3 with 300s (1) cores
% 0.07/0.34  % (lift_lambdas = 0, lambda_to_forall = 0,unroll_only_formulas = 0, sine = GSinE(CountFormulas,hypos,1.5,,3,20000,1.0))
% 0.07/0.34  % SinE strategy is GSinE(CountFormulas,hypos,1.5,,3,20000,1.0)
% 0.07/0.34  % Search class: FHUNF-FFMF21-SFFFFFNN
% 0.07/0.34  % partial match(1): FHUNF-FFMM21-SFFFFFNN
% 0.07/0.34  % Scheduled 5 strats onto 1 cores with 300 seconds (300 total)
% 0.07/0.34  % Starting SubtermCWHack with 31s (1) cores
% 0.07/0.34  % Preprocessing time       : 0.001 s
% 0.07/0.34  
% 0.07/0.34  % Proof found!
% 0.07/0.34  % SZS status Unsatisfiable
% 0.07/0.34  % SZS output start CNFRefutation
% See solution above
% 0.07/0.34  % Parsed axioms                        : 32
% 0.07/0.34  % Removed by relevancy pruning/SinE    : 0
% 0.07/0.34  % Initial clauses                      : 32
% 0.07/0.34  % Removed in clause preprocessing      : 0
% 0.07/0.34  % Initial clauses in saturation        : 32
% 0.07/0.34  % Processed clauses                    : 36
% 0.07/0.34  % ...of these trivial                  : 5
% 0.07/0.34  % ...subsumed                          : 3
% 0.07/0.34  % ...remaining for further processing  : 28
% 0.07/0.34  % Other redundant clauses eliminated   : 0
% 0.07/0.34  % Clauses deleted for lack of memory   : 0
% 0.07/0.34  % Backward-subsumed                    : 4
% 0.07/0.34  % Backward-rewritten                   : 9
% 0.07/0.34  % Generated clauses                    : 4
% 0.07/0.34  % ...of the previous two non-redundant : 5
% 0.07/0.34  % ...aggressively subsumed             : 0
% 0.07/0.34  % Contextual simplify-reflections      : 0
% 0.07/0.34  % Paramodulations                      : 4
% 0.07/0.34  % Factorizations                       : 0
% 0.07/0.34  % NegExts                              : 0
% 0.07/0.34  % Equation resolutions                 : 0
% 0.07/0.34  % Disequality decompositions           : 0
% 0.07/0.34  % Total rewrite steps                  : 19
% 0.07/0.34  % ...of those cached                   : 10
% 0.07/0.34  % Propositional unsat checks           : 0
% 0.07/0.34  %    Propositional check models        : 0
% 0.07/0.34  %    Propositional check unsatisfiable : 0
% 0.07/0.34  %    Propositional clauses             : 0
% 0.07/0.34  %    Propositional clauses after purity: 0
% 0.07/0.34  %    Propositional unsat core size     : 0
% 0.07/0.34  %    Propositional preprocessing time  : 0.000
% 0.07/0.34  %    Propositional encoding time       : 0.000
% 0.07/0.34  %    Propositional solver time         : 0.000
% 0.07/0.34  %    Success case prop preproc time    : 0.000
% 0.07/0.34  %    Success case prop encoding time   : 0.000
% 0.07/0.34  %    Success case prop solver time     : 0.000
% 0.07/0.34  % Current number of processed clauses  : 15
% 0.07/0.34  %    Positive orientable unit clauses  : 9
% 0.07/0.34  %    Positive unorientable unit clauses: 0
% 0.07/0.34  %    Negative unit clauses             : 6
% 0.07/0.34  %    Non-unit-clauses                  : 0
% 0.07/0.34  % Current number of unprocessed clauses: 1
% 0.07/0.34  % ...number of literals in the above   : 2
% 0.07/0.34  % Current number of archived formulas  : 0
% 0.07/0.34  % Current number of archived clauses   : 13
% 0.07/0.34  % Clause-clause subsumption calls (NU) : 16
% 0.07/0.34  % Rec. Clause-clause subsumption calls : 16
% 0.07/0.34  % Non-unit clause-clause subsumptions  : 0
% 0.07/0.34  % Unit Clause-clause subsumption calls : 22
% 0.07/0.34  % Rewrite failures with RHS unbound    : 0
% 0.07/0.34  % BW rewrite match attempts            : 117
% 0.07/0.34  % BW rewrite match successes           : 7
% 0.07/0.34  % Condensation attempts                : 0
% 0.07/0.34  % Condensation successes               : 0
% 0.07/0.34  % Termbank termtop insertions          : 1979
% 0.07/0.34  % Search garbage collected termcells   : 48
% 0.07/0.34  
% 0.07/0.34  % -------------------------------------------------
% 0.07/0.34  % User time                : 0.001 s
% 0.07/0.34  % System time              : 0.003 s
% 0.07/0.34  % Total time               : 0.004 s
% 0.07/0.34  % Maximum resident set size: 3644 pages
% 0.07/0.34  
% 0.07/0.34  % -------------------------------------------------
% 0.07/0.34  % User time                : 0.002 s
% 0.07/0.34  % System time              : 0.006 s
% 0.07/0.34  % Total time               : 0.007 s
% 0.07/0.34  % Maximum resident set size: 4608 pages
% 0.07/0.34  % E exiting
%------------------------------------------------------------------------------