TSTP Solution File: SYN254-1 by E-SAT---3.1

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : E-SAT---3.1
% Problem  : SYN254-1 : TPTP v8.1.2. Released v1.1.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_E %s %d THM

% Computer : n011.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8042.1875MB
% OS       : Linux 3.10.0-693.el7.x86_64
% CPULimit : 2400s
% WCLimit  : 300s
% DateTime : Tue Oct 10 20:29:42 EDT 2023

% Result   : Unsatisfiable 0.90s 0.58s
% Output   : CNFRefutation 0.90s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   11
%            Number of leaves      :   26
% Syntax   : Number of clauses     :   80 (  36 unt;   0 nHn;  57 RR)
%            Number of literals    :  161 (   0 equ;  86 neg)
%            Maximal clause size   :    4 (   2 avg)
%            Maximal term depth    :    1 (   1 avg)
%            Number of predicates  :   17 (  16 usr;   1 prp; 0-3 aty)
%            Number of functors    :    4 (   4 usr;   4 con; 0-0 aty)
%            Number of variables   :  117 (  39 sgn)

% Comments : 
%------------------------------------------------------------------------------
cnf(rule_085,axiom,
    ( p1(X1,X1,X1)
    | ~ p0(X2,X1) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_085) ).

cnf(axiom_14,axiom,
    p0(b,X1),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',axiom_14) ).

cnf(rule_126,axiom,
    ( s1(X1)
    | ~ q0(X1,X2)
    | ~ s1(X3) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_126) ).

cnf(axiom_17,axiom,
    q0(X1,d),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',axiom_17) ).

cnf(rule_125,axiom,
    ( s1(X1)
    | ~ p0(X1,X1) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_125) ).

cnf(rule_181,axiom,
    ( q2(X1,X1,X1)
    | ~ p1(X1,X1,X1) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_181) ).

cnf(rule_273,axiom,
    ( s3(X1,X2)
    | ~ q2(X3,X1,X3)
    | ~ s2(X1)
    | ~ m0(X3,X4,X2) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_273) ).

cnf(rule_133,axiom,
    ( l2(X1,X1)
    | ~ p0(X2,X2)
    | ~ s1(X3)
    | ~ m0(X4,X3,X1) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_133) ).

cnf(axiom_19,axiom,
    m0(X1,d,X2),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',axiom_19) ).

cnf(rule_063,axiom,
    ( p1(X1,X1,X2)
    | ~ n0(d,X1)
    | ~ k0(X2) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_063) ).

cnf(axiom_7,axiom,
    n0(d,b),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',axiom_7) ).

cnf(rule_279,axiom,
    ( m4(X1,X2)
    | ~ l2(X3,X2)
    | ~ s3(a,X1) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_279) ).

cnf(axiom_28,axiom,
    k0(e),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',axiom_28) ).

cnf(rule_082,axiom,
    ( p1(X1,X2,X3)
    | ~ m0(X3,X1,X4)
    | ~ p1(X3,X1,X4) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_082) ).

cnf(axiom_31,axiom,
    m0(b,b,e),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',axiom_31) ).

cnf(rule_050,axiom,
    ( n1(X1,X2,X1)
    | ~ s0(b)
    | ~ l0(X1)
    | ~ p0(b,X2) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_050) ).

cnf(axiom_5,axiom,
    s0(b),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',axiom_5) ).

cnf(prove_this,negated_conjecture,
    ~ m4(e,b),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',prove_this) ).

cnf(rule_189,axiom,
    ( s2(X1)
    | ~ q2(b,X1,b)
    | ~ s1(b) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_189) ).

cnf(rule_182,axiom,
    ( q2(X1,X2,X1)
    | ~ p1(X1,X1,X3)
    | ~ n1(X2,X1,X3)
    | ~ q2(X2,X3,X1) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_182) ).

cnf(rule_177,axiom,
    ( q2(X1,X2,X2)
    | ~ k0(X2)
    | ~ p1(X1,X1,X1) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_177) ).

cnf(axiom_20,axiom,
    l0(a),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',axiom_20) ).

cnf(axiom_32,axiom,
    k0(b),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',axiom_32) ).

cnf(rule_054,axiom,
    ( n1(X1,X2,X2)
    | ~ l0(X3)
    | ~ l1(X3,X1)
    | ~ n1(X1,X2,X1) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_054) ).

cnf(rule_002,axiom,
    ( l1(X1,X1)
    | ~ n0(X2,X1) ),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',rule_002) ).

cnf(axiom_37,axiom,
    n0(b,a),
    file('/export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p',axiom_37) ).

cnf(c_0_26,axiom,
    ( p1(X1,X1,X1)
    | ~ p0(X2,X1) ),
    rule_085 ).

cnf(c_0_27,axiom,
    p0(b,X1),
    axiom_14 ).

cnf(c_0_28,axiom,
    ( s1(X1)
    | ~ q0(X1,X2)
    | ~ s1(X3) ),
    rule_126 ).

cnf(c_0_29,axiom,
    q0(X1,d),
    axiom_17 ).

cnf(c_0_30,axiom,
    ( s1(X1)
    | ~ p0(X1,X1) ),
    rule_125 ).

cnf(c_0_31,axiom,
    ( q2(X1,X1,X1)
    | ~ p1(X1,X1,X1) ),
    rule_181 ).

cnf(c_0_32,plain,
    p1(X1,X1,X1),
    inference(spm,[status(thm)],[c_0_26,c_0_27]) ).

cnf(c_0_33,plain,
    ( s1(X1)
    | ~ s1(X2) ),
    inference(spm,[status(thm)],[c_0_28,c_0_29]) ).

cnf(c_0_34,plain,
    s1(b),
    inference(spm,[status(thm)],[c_0_30,c_0_27]) ).

cnf(c_0_35,axiom,
    ( s3(X1,X2)
    | ~ q2(X3,X1,X3)
    | ~ s2(X1)
    | ~ m0(X3,X4,X2) ),
    rule_273 ).

cnf(c_0_36,plain,
    q2(X1,X1,X1),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_31,c_0_32])]) ).

cnf(c_0_37,axiom,
    ( l2(X1,X1)
    | ~ p0(X2,X2)
    | ~ s1(X3)
    | ~ m0(X4,X3,X1) ),
    rule_133 ).

cnf(c_0_38,plain,
    s1(X1),
    inference(spm,[status(thm)],[c_0_33,c_0_34]) ).

cnf(c_0_39,plain,
    ( s3(X1,X2)
    | ~ s2(X1)
    | ~ m0(X1,X3,X2) ),
    inference(spm,[status(thm)],[c_0_35,c_0_36]) ).

cnf(c_0_40,axiom,
    m0(X1,d,X2),
    axiom_19 ).

cnf(c_0_41,plain,
    ( l2(X1,X1)
    | ~ p0(X2,X2)
    | ~ m0(X3,X4,X1) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_37,c_0_38])]) ).

cnf(c_0_42,axiom,
    ( p1(X1,X1,X2)
    | ~ n0(d,X1)
    | ~ k0(X2) ),
    rule_063 ).

cnf(c_0_43,axiom,
    n0(d,b),
    axiom_7 ).

cnf(c_0_44,axiom,
    ( m4(X1,X2)
    | ~ l2(X3,X2)
    | ~ s3(a,X1) ),
    rule_279 ).

cnf(c_0_45,plain,
    ( s3(X1,X2)
    | ~ s2(X1) ),
    inference(spm,[status(thm)],[c_0_39,c_0_40]) ).

cnf(c_0_46,plain,
    ( l2(X1,X1)
    | ~ p0(X2,X2) ),
    inference(spm,[status(thm)],[c_0_41,c_0_40]) ).

cnf(c_0_47,plain,
    ( p1(b,b,X1)
    | ~ k0(X1) ),
    inference(spm,[status(thm)],[c_0_42,c_0_43]) ).

cnf(c_0_48,axiom,
    k0(e),
    axiom_28 ).

cnf(c_0_49,plain,
    ( m4(X1,X2)
    | ~ s2(a)
    | ~ l2(X3,X2) ),
    inference(spm,[status(thm)],[c_0_44,c_0_45]) ).

cnf(c_0_50,plain,
    l2(X1,X1),
    inference(spm,[status(thm)],[c_0_46,c_0_27]) ).

cnf(c_0_51,axiom,
    ( p1(X1,X2,X3)
    | ~ m0(X3,X1,X4)
    | ~ p1(X3,X1,X4) ),
    rule_082 ).

cnf(c_0_52,plain,
    p1(b,b,e),
    inference(spm,[status(thm)],[c_0_47,c_0_48]) ).

cnf(c_0_53,axiom,
    m0(b,b,e),
    axiom_31 ).

cnf(c_0_54,axiom,
    ( n1(X1,X2,X1)
    | ~ s0(b)
    | ~ l0(X1)
    | ~ p0(b,X2) ),
    rule_050 ).

cnf(c_0_55,axiom,
    s0(b),
    axiom_5 ).

cnf(c_0_56,negated_conjecture,
    ~ m4(e,b),
    prove_this ).

cnf(c_0_57,plain,
    ( m4(X1,X2)
    | ~ s2(a) ),
    inference(spm,[status(thm)],[c_0_49,c_0_50]) ).

cnf(c_0_58,axiom,
    ( s2(X1)
    | ~ q2(b,X1,b)
    | ~ s1(b) ),
    rule_189 ).

cnf(c_0_59,axiom,
    ( q2(X1,X2,X1)
    | ~ p1(X1,X1,X3)
    | ~ n1(X2,X1,X3)
    | ~ q2(X2,X3,X1) ),
    rule_182 ).

cnf(c_0_60,plain,
    p1(b,X1,b),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_51,c_0_52]),c_0_53])]) ).

cnf(c_0_61,axiom,
    ( q2(X1,X2,X2)
    | ~ k0(X2)
    | ~ p1(X1,X1,X1) ),
    rule_177 ).

cnf(c_0_62,plain,
    ( n1(X1,X2,X1)
    | ~ l0(X1) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_54,c_0_55]),c_0_27])]) ).

cnf(c_0_63,axiom,
    l0(a),
    axiom_20 ).

cnf(c_0_64,negated_conjecture,
    ~ s2(a),
    inference(spm,[status(thm)],[c_0_56,c_0_57]) ).

cnf(c_0_65,plain,
    ( s2(X1)
    | ~ q2(b,X1,b) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_58,c_0_34])]) ).

cnf(c_0_66,plain,
    ( q2(b,X1,b)
    | ~ q2(X1,b,b)
    | ~ n1(X1,b,b) ),
    inference(spm,[status(thm)],[c_0_59,c_0_60]) ).

cnf(c_0_67,plain,
    ( q2(X1,X2,X2)
    | ~ k0(X2) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_61,c_0_32])]) ).

cnf(c_0_68,axiom,
    k0(b),
    axiom_32 ).

cnf(c_0_69,axiom,
    ( n1(X1,X2,X2)
    | ~ l0(X3)
    | ~ l1(X3,X1)
    | ~ n1(X1,X2,X1) ),
    rule_054 ).

cnf(c_0_70,plain,
    n1(a,X1,a),
    inference(spm,[status(thm)],[c_0_62,c_0_63]) ).

cnf(c_0_71,axiom,
    ( l1(X1,X1)
    | ~ n0(X2,X1) ),
    rule_002 ).

cnf(c_0_72,axiom,
    n0(b,a),
    axiom_37 ).

cnf(c_0_73,negated_conjecture,
    ~ q2(b,a,b),
    inference(spm,[status(thm)],[c_0_64,c_0_65]) ).

cnf(c_0_74,plain,
    ( q2(b,X1,b)
    | ~ n1(X1,b,b) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_66,c_0_67]),c_0_68])]) ).

cnf(c_0_75,plain,
    ( n1(a,X1,X1)
    | ~ l1(X2,a)
    | ~ l0(X2) ),
    inference(spm,[status(thm)],[c_0_69,c_0_70]) ).

cnf(c_0_76,plain,
    l1(a,a),
    inference(spm,[status(thm)],[c_0_71,c_0_72]) ).

cnf(c_0_77,negated_conjecture,
    ~ n1(a,b,b),
    inference(spm,[status(thm)],[c_0_73,c_0_74]) ).

cnf(c_0_78,plain,
    n1(a,X1,X1),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_75,c_0_76]),c_0_63])]) ).

cnf(c_0_79,negated_conjecture,
    $false,
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_77,c_0_78])]),
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.03/0.11  % Problem    : SYN254-1 : TPTP v8.1.2. Released v1.1.0.
% 0.03/0.12  % Command    : run_E %s %d THM
% 0.11/0.32  % Computer : n011.cluster.edu
% 0.11/0.32  % Model    : x86_64 x86_64
% 0.11/0.32  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.11/0.32  % Memory   : 8042.1875MB
% 0.11/0.32  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.11/0.32  % CPULimit   : 2400
% 0.11/0.32  % WCLimit    : 300
% 0.11/0.32  % DateTime   : Mon Oct  2 18:44:53 EDT 2023
% 0.11/0.32  % CPUTime    : 
% 0.16/0.45  Running first-order model finding
% 0.16/0.45  Running: /export/starexec/sandbox2/solver/bin/eprover --delete-bad-limit=2000000000 --definitional-cnf=24 -s --print-statistics -R --print-version --proof-object --satauto-schedule=8 --cpu-limit=300 /export/starexec/sandbox2/tmp/tmp.5td8TI3EfT/E---3.1_1912.p
% 0.90/0.58  # Version: 3.1pre001
% 0.90/0.58  # Preprocessing class: FSLSSMSSSSSNFFN.
% 0.90/0.58  # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.90/0.58  # Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.90/0.58  # Starting new_bool_3 with 300s (1) cores
% 0.90/0.58  # Starting new_bool_1 with 300s (1) cores
% 0.90/0.58  # Starting sh5l with 300s (1) cores
% 0.90/0.58  # sh5l with pid 1994 completed with status 0
% 0.90/0.58  # Result found by sh5l
% 0.90/0.58  # Preprocessing class: FSLSSMSSSSSNFFN.
% 0.90/0.58  # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.90/0.58  # Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.90/0.58  # Starting new_bool_3 with 300s (1) cores
% 0.90/0.58  # Starting new_bool_1 with 300s (1) cores
% 0.90/0.58  # Starting sh5l with 300s (1) cores
% 0.90/0.58  # SinE strategy is gf500_gu_R04_F100_L20000
% 0.90/0.58  # Search class: FHUNM-FSLM00-SFFFFFNN
% 0.90/0.58  # Scheduled 5 strats onto 1 cores with 300 seconds (300 total)
% 0.90/0.58  # Starting SAT001_MinMin_p005000_rr_RG with 181s (1) cores
% 0.90/0.58  # SAT001_MinMin_p005000_rr_RG with pid 2002 completed with status 0
% 0.90/0.58  # Result found by SAT001_MinMin_p005000_rr_RG
% 0.90/0.58  # Preprocessing class: FSLSSMSSSSSNFFN.
% 0.90/0.58  # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.90/0.58  # Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.90/0.58  # Starting new_bool_3 with 300s (1) cores
% 0.90/0.58  # Starting new_bool_1 with 300s (1) cores
% 0.90/0.58  # Starting sh5l with 300s (1) cores
% 0.90/0.58  # SinE strategy is gf500_gu_R04_F100_L20000
% 0.90/0.58  # Search class: FHUNM-FSLM00-SFFFFFNN
% 0.90/0.58  # Scheduled 5 strats onto 1 cores with 300 seconds (300 total)
% 0.90/0.58  # Starting SAT001_MinMin_p005000_rr_RG with 181s (1) cores
% 0.90/0.58  # Preprocessing time       : 0.004 s
% 0.90/0.58  # Presaturation interreduction done
% 0.90/0.58  
% 0.90/0.58  # Proof found!
% 0.90/0.58  # SZS status Unsatisfiable
% 0.90/0.58  # SZS output start CNFRefutation
% See solution above
% 0.90/0.58  # Parsed axioms                        : 369
% 0.90/0.58  # Removed by relevancy pruning/SinE    : 0
% 0.90/0.58  # Initial clauses                      : 369
% 0.90/0.58  # Removed in clause preprocessing      : 7
% 0.90/0.58  # Initial clauses in saturation        : 362
% 0.90/0.58  # Processed clauses                    : 1574
% 0.90/0.58  # ...of these trivial                  : 72
% 0.90/0.58  # ...subsumed                          : 103
% 0.90/0.58  # ...remaining for further processing  : 1399
% 0.90/0.58  # Other redundant clauses eliminated   : 0
% 0.90/0.58  # Clauses deleted for lack of memory   : 0
% 0.90/0.58  # Backward-subsumed                    : 103
% 0.90/0.58  # Backward-rewritten                   : 386
% 0.90/0.58  # Generated clauses                    : 2297
% 0.90/0.58  # ...of the previous two non-redundant : 1675
% 0.90/0.58  # ...aggressively subsumed             : 0
% 0.90/0.58  # Contextual simplify-reflections      : 2
% 0.90/0.58  # Paramodulations                      : 2297
% 0.90/0.58  # Factorizations                       : 0
% 0.90/0.58  # NegExts                              : 0
% 0.90/0.58  # Equation resolutions                 : 0
% 0.90/0.58  # Total rewrite steps                  : 1630
% 0.90/0.58  # Propositional unsat checks           : 0
% 0.90/0.58  #    Propositional check models        : 0
% 0.90/0.58  #    Propositional check unsatisfiable : 0
% 0.90/0.58  #    Propositional clauses             : 0
% 0.90/0.58  #    Propositional clauses after purity: 0
% 0.90/0.58  #    Propositional unsat core size     : 0
% 0.90/0.58  #    Propositional preprocessing time  : 0.000
% 0.90/0.58  #    Propositional encoding time       : 0.000
% 0.90/0.58  #    Propositional solver time         : 0.000
% 0.90/0.58  #    Success case prop preproc time    : 0.000
% 0.90/0.58  #    Success case prop encoding time   : 0.000
% 0.90/0.58  #    Success case prop solver time     : 0.000
% 0.90/0.58  # Current number of processed clauses  : 582
% 0.90/0.58  #    Positive orientable unit clauses  : 253
% 0.90/0.58  #    Positive unorientable unit clauses: 0
% 0.90/0.58  #    Negative unit clauses             : 4
% 0.90/0.58  #    Non-unit-clauses                  : 325
% 0.90/0.58  # Current number of unprocessed clauses: 279
% 0.90/0.58  # ...number of literals in the above   : 928
% 0.90/0.58  # Current number of archived formulas  : 0
% 0.90/0.58  # Current number of archived clauses   : 817
% 0.90/0.58  # Clause-clause subsumption calls (NU) : 66556
% 0.90/0.58  # Rec. Clause-clause subsumption calls : 49860
% 0.90/0.58  # Non-unit clause-clause subsumptions  : 188
% 0.90/0.58  # Unit Clause-clause subsumption calls : 6579
% 0.90/0.58  # Rewrite failures with RHS unbound    : 0
% 0.90/0.58  # BW rewrite match attempts            : 889
% 0.90/0.58  # BW rewrite match successes           : 252
% 0.90/0.58  # Condensation attempts                : 0
% 0.90/0.58  # Condensation successes               : 0
% 0.90/0.58  # Termbank termtop insertions          : 34492
% 0.90/0.58  
% 0.90/0.58  # -------------------------------------------------
% 0.90/0.58  # User time                : 0.106 s
% 0.90/0.58  # System time              : 0.007 s
% 0.90/0.58  # Total time               : 0.113 s
% 0.90/0.58  # Maximum resident set size: 2528 pages
% 0.90/0.58  
% 0.90/0.58  # -------------------------------------------------
% 0.90/0.58  # User time                : 0.113 s
% 0.90/0.58  # System time              : 0.007 s
% 0.90/0.58  # Total time               : 0.120 s
% 0.90/0.58  # Maximum resident set size: 2000 pages
% 0.90/0.58  % E---3.1 exiting
%------------------------------------------------------------------------------