TSTP Solution File: LCL501+1 by Enigma---0.5.1
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : Enigma---0.5.1
% Problem : LCL501+1 : TPTP v8.1.0. Released v3.3.0.
% Transfm : none
% Format : tptp:raw
% Command : enigmatic-eprover.py %s %d 1
% Computer : n015.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 : 300s
% WCLimit : 600s
% DateTime : Sun Jul 17 09:26:27 EDT 2022
% Result : Theorem 18.12s 3.93s
% Output : CNFRefutation 18.12s
% Verified :
% SZS Type : Refutation
% Derivation depth : 15
% Number of leaves : 26
% Syntax : Number of clauses : 104 ( 62 unt; 0 nHn; 50 RR)
% Number of literals : 155 ( 28 equ; 56 neg)
% Maximal clause size : 4 ( 1 avg)
% Maximal term depth : 5 ( 2 avg)
% Number of predicates : 16 ( 14 usr; 14 prp; 0-2 aty)
% Number of functors : 8 ( 8 usr; 3 con; 0-2 aty)
% Number of variables : 150 ( 4 sgn)
% Comments :
%------------------------------------------------------------------------------
cnf(i_0_34,plain,
( is_a_theorem(X1)
| ~ modus_ponens
| ~ is_a_theorem(X2)
| ~ is_a_theorem(implies(X2,X1)) ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_34) ).
cnf(i_0_48,plain,
modus_ponens,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_48) ).
cnf(i_0_64,plain,
( is_a_theorem(implies(or(X1,or(X2,X3)),or(X2,or(X1,X3))))
| ~ r4 ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_64) ).
cnf(i_0_55,plain,
r4,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_55) ).
cnf(i_0_40,plain,
( or(not(X1),X2) = implies(X1,X2)
| ~ op_implies_or ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_40) ).
cnf(i_0_51,plain,
op_implies_or,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_51) ).
cnf(i_0_58,plain,
( is_a_theorem(implies(or(X1,X1),X1))
| ~ r1 ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_58) ).
cnf(i_0_52,plain,
r1,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_52) ).
cnf(i_0_60,plain,
( is_a_theorem(implies(X1,or(X2,X1)))
| ~ r2 ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_60) ).
cnf(i_0_53,plain,
r2,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_53) ).
cnf(i_0_62,plain,
( is_a_theorem(implies(or(X1,X2),or(X2,X1)))
| ~ r3 ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_62) ).
cnf(i_0_54,plain,
r3,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_54) ).
cnf(i_0_39,plain,
( not(and(X1,not(X2))) = implies(X1,X2)
| ~ op_implies_and ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_39) ).
cnf(i_0_69,plain,
op_implies_and,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_69) ).
cnf(i_0_37,plain,
( not(or(not(X1),not(X2))) = and(X1,X2)
| ~ op_and ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_37) ).
cnf(i_0_49,plain,
op_and,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_49) ).
cnf(i_0_41,plain,
( not(and(not(X1),not(X2))) = or(X1,X2)
| ~ op_or ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_41) ).
cnf(i_0_70,plain,
op_or,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_70) ).
cnf(i_0_38,plain,
( and(implies(X1,X2),implies(X2,X1)) = equiv(X1,X2)
| ~ op_equiv ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_38) ).
cnf(i_0_50,plain,
op_equiv,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_50) ).
cnf(i_0_74,plain,
( X1 = X2
| ~ substitution_of_equivalents
| ~ is_a_theorem(equiv(X1,X2)) ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_74) ).
cnf(i_0_71,plain,
substitution_of_equivalents,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_71) ).
cnf(i_0_29,plain,
( kn3
| ~ is_a_theorem(implies(implies(esk29_0,esk30_0),implies(not(and(esk30_0,esk31_0)),not(and(esk31_0,esk29_0))))) ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_29) ).
cnf(i_0_67,negated_conjecture,
~ kn3,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_67) ).
cnf(i_0_66,plain,
( is_a_theorem(implies(implies(X1,X2),implies(or(X3,X1),or(X3,X2))))
| ~ r5 ),
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_66) ).
cnf(i_0_56,plain,
r5,
file('/export/starexec/sandbox2/tmp/enigma-theBenchmark.p-i8gl87de/input.p',i_0_56) ).
cnf(c_0_101,plain,
( is_a_theorem(X1)
| ~ modus_ponens
| ~ is_a_theorem(X2)
| ~ is_a_theorem(implies(X2,X1)) ),
i_0_34 ).
cnf(c_0_102,plain,
modus_ponens,
i_0_48 ).
cnf(c_0_103,plain,
( is_a_theorem(implies(or(X1,or(X2,X3)),or(X2,or(X1,X3))))
| ~ r4 ),
i_0_64 ).
cnf(c_0_104,plain,
r4,
i_0_55 ).
cnf(c_0_105,plain,
( is_a_theorem(X1)
| ~ is_a_theorem(implies(X2,X1))
| ~ is_a_theorem(X2) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_101,c_0_102])]) ).
cnf(c_0_106,plain,
is_a_theorem(implies(or(X1,or(X2,X3)),or(X2,or(X1,X3)))),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_103,c_0_104])]) ).
cnf(c_0_107,plain,
( or(not(X1),X2) = implies(X1,X2)
| ~ op_implies_or ),
i_0_40 ).
cnf(c_0_108,plain,
op_implies_or,
i_0_51 ).
cnf(c_0_109,plain,
( is_a_theorem(implies(or(X1,X1),X1))
| ~ r1 ),
i_0_58 ).
cnf(c_0_110,plain,
r1,
i_0_52 ).
cnf(c_0_111,plain,
( is_a_theorem(or(X1,or(X2,X3)))
| ~ is_a_theorem(or(X2,or(X1,X3))) ),
inference(spm,[status(thm)],[c_0_105,c_0_106]) ).
cnf(c_0_112,plain,
or(not(X1),X2) = implies(X1,X2),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_107,c_0_108])]) ).
cnf(c_0_113,plain,
( is_a_theorem(implies(X1,or(X2,X1)))
| ~ r2 ),
i_0_60 ).
cnf(c_0_114,plain,
r2,
i_0_53 ).
cnf(c_0_115,plain,
( is_a_theorem(implies(or(X1,X2),or(X2,X1)))
| ~ r3 ),
i_0_62 ).
cnf(c_0_116,plain,
r3,
i_0_54 ).
cnf(c_0_117,plain,
is_a_theorem(implies(or(X1,X1),X1)),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_109,c_0_110])]) ).
cnf(c_0_118,plain,
( is_a_theorem(or(X1,implies(X2,X3)))
| ~ is_a_theorem(implies(X2,or(X1,X3))) ),
inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_111,c_0_112]),c_0_112]) ).
cnf(c_0_119,plain,
is_a_theorem(implies(X1,or(X2,X1))),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_113,c_0_114])]) ).
cnf(c_0_120,plain,
( not(and(X1,not(X2))) = implies(X1,X2)
| ~ op_implies_and ),
i_0_39 ).
cnf(c_0_121,plain,
op_implies_and,
i_0_69 ).
cnf(c_0_122,plain,
( not(or(not(X1),not(X2))) = and(X1,X2)
| ~ op_and ),
i_0_37 ).
cnf(c_0_123,plain,
op_and,
i_0_49 ).
cnf(c_0_124,plain,
is_a_theorem(implies(or(X1,X2),or(X2,X1))),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_115,c_0_116])]) ).
cnf(c_0_125,plain,
( is_a_theorem(implies(X1,or(X2,X3)))
| ~ is_a_theorem(or(X2,implies(X1,X3))) ),
inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_111,c_0_112]),c_0_112]) ).
cnf(c_0_126,plain,
( is_a_theorem(X1)
| ~ is_a_theorem(or(X1,X1)) ),
inference(spm,[status(thm)],[c_0_105,c_0_117]) ).
cnf(c_0_127,plain,
is_a_theorem(or(X1,implies(X2,X2))),
inference(spm,[status(thm)],[c_0_118,c_0_119]) ).
cnf(c_0_128,plain,
( not(and(not(X1),not(X2))) = or(X1,X2)
| ~ op_or ),
i_0_41 ).
cnf(c_0_129,plain,
not(and(X1,not(X2))) = implies(X1,X2),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_120,c_0_121])]) ).
cnf(c_0_130,plain,
op_or,
i_0_70 ).
cnf(c_0_131,plain,
not(implies(X1,not(X2))) = and(X1,X2),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_122,c_0_112]),c_0_123])]) ).
cnf(c_0_132,plain,
is_a_theorem(implies(or(X1,not(X2)),implies(X2,X1))),
inference(spm,[status(thm)],[c_0_124,c_0_112]) ).
cnf(c_0_133,plain,
( is_a_theorem(implies(X1,implies(X2,X3)))
| ~ is_a_theorem(implies(X2,implies(X1,X3))) ),
inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_125,c_0_112]),c_0_112]) ).
cnf(c_0_134,plain,
is_a_theorem(implies(X1,X1)),
inference(spm,[status(thm)],[c_0_126,c_0_127]) ).
cnf(c_0_135,plain,
implies(not(X1),X2) = or(X1,X2),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_128,c_0_129]),c_0_130])]) ).
cnf(c_0_136,plain,
or(and(X1,X2),X3) = implies(implies(X1,not(X2)),X3),
inference(spm,[status(thm)],[c_0_112,c_0_131]) ).
cnf(c_0_137,plain,
is_a_theorem(implies(implies(X1,X2),or(X2,not(X1)))),
inference(spm,[status(thm)],[c_0_124,c_0_112]) ).
cnf(c_0_138,plain,
( is_a_theorem(implies(X1,X2))
| ~ is_a_theorem(or(X2,not(X1))) ),
inference(spm,[status(thm)],[c_0_105,c_0_132]) ).
cnf(c_0_139,plain,
is_a_theorem(implies(X1,implies(implies(X1,X2),X2))),
inference(spm,[status(thm)],[c_0_133,c_0_134]) ).
cnf(c_0_140,plain,
( and(implies(X1,X2),implies(X2,X1)) = equiv(X1,X2)
| ~ op_equiv ),
i_0_38 ).
cnf(c_0_141,plain,
op_equiv,
i_0_50 ).
cnf(c_0_142,plain,
implies(implies(X1,not(not(X2))),X3) = implies(implies(X1,X2),X3),
inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_135,c_0_129]),c_0_136]) ).
cnf(c_0_143,plain,
( is_a_theorem(or(X1,not(X2)))
| ~ is_a_theorem(implies(X2,X1)) ),
inference(spm,[status(thm)],[c_0_105,c_0_137]) ).
cnf(c_0_144,plain,
is_a_theorem(implies(implies(X1,not(X1)),not(X1))),
inference(spm,[status(thm)],[c_0_117,c_0_112]) ).
cnf(c_0_145,plain,
( is_a_theorem(implies(X1,not(X2)))
| ~ is_a_theorem(implies(X2,not(X1))) ),
inference(spm,[status(thm)],[c_0_138,c_0_112]) ).
cnf(c_0_146,plain,
( is_a_theorem(implies(implies(X1,X2),X2))
| ~ is_a_theorem(X1) ),
inference(spm,[status(thm)],[c_0_105,c_0_139]) ).
cnf(c_0_147,plain,
( X1 = X2
| ~ substitution_of_equivalents
| ~ is_a_theorem(equiv(X1,X2)) ),
i_0_74 ).
cnf(c_0_148,plain,
substitution_of_equivalents,
i_0_71 ).
cnf(c_0_149,plain,
and(implies(X1,X2),implies(X2,X1)) = equiv(X1,X2),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_140,c_0_141])]) ).
cnf(c_0_150,plain,
and(implies(X1,not(not(X2))),X3) = and(implies(X1,X2),X3),
inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_131,c_0_142]),c_0_131]) ).
cnf(c_0_151,plain,
is_a_theorem(implies(X1,and(X1,X1))),
inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_143,c_0_144]),c_0_131]),c_0_112]) ).
cnf(c_0_152,plain,
( is_a_theorem(implies(X1,and(X2,X1)))
| ~ is_a_theorem(X2) ),
inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_145,c_0_146]),c_0_131]) ).
cnf(c_0_153,plain,
( X1 = X2
| ~ is_a_theorem(equiv(X1,X2)) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_147,c_0_148])]) ).
cnf(c_0_154,plain,
equiv(X1,not(not(X2))) = equiv(X1,X2),
inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_149,c_0_150]),c_0_135]),c_0_112]),c_0_149]) ).
cnf(c_0_155,plain,
( is_a_theorem(and(X1,X1))
| ~ is_a_theorem(X1) ),
inference(spm,[status(thm)],[c_0_105,c_0_151]) ).
cnf(c_0_156,plain,
( is_a_theorem(and(X1,X2))
| ~ is_a_theorem(X2)
| ~ is_a_theorem(X1) ),
inference(spm,[status(thm)],[c_0_105,c_0_152]) ).
cnf(c_0_157,plain,
is_a_theorem(implies(implies(X1,not(X2)),implies(X2,not(X1)))),
inference(spm,[status(thm)],[c_0_132,c_0_112]) ).
cnf(c_0_158,plain,
or(implies(X1,not(X2)),X3) = implies(and(X1,X2),X3),
inference(spm,[status(thm)],[c_0_135,c_0_131]) ).
cnf(c_0_159,plain,
( kn3
| ~ is_a_theorem(implies(implies(esk29_0,esk30_0),implies(not(and(esk30_0,esk31_0)),not(and(esk31_0,esk29_0))))) ),
i_0_29 ).
cnf(c_0_160,negated_conjecture,
~ kn3,
i_0_67 ).
cnf(c_0_161,plain,
( X1 = not(not(X2))
| ~ is_a_theorem(equiv(X1,X2)) ),
inference(spm,[status(thm)],[c_0_153,c_0_154]) ).
cnf(c_0_162,plain,
is_a_theorem(equiv(X1,X1)),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_155,c_0_149]),c_0_134])]) ).
cnf(c_0_163,plain,
( is_a_theorem(equiv(X1,X2))
| ~ is_a_theorem(implies(X2,X1))
| ~ is_a_theorem(implies(X1,X2)) ),
inference(spm,[status(thm)],[c_0_156,c_0_149]) ).
cnf(c_0_164,plain,
is_a_theorem(implies(and(X1,X2),and(X2,X1))),
inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_143,c_0_157]),c_0_131]),c_0_158]) ).
cnf(c_0_165,plain,
( is_a_theorem(implies(implies(X1,X2),implies(or(X3,X1),or(X3,X2))))
| ~ r5 ),
i_0_66 ).
cnf(c_0_166,plain,
r5,
i_0_56 ).
cnf(c_0_167,plain,
~ is_a_theorem(implies(implies(esk29_0,esk30_0),or(and(esk30_0,esk31_0),not(and(esk31_0,esk29_0))))),
inference(sr,[status(thm)],[inference(rw,[status(thm)],[c_0_159,c_0_135]),c_0_160]) ).
cnf(c_0_168,plain,
not(not(X1)) = X1,
inference(spm,[status(thm)],[c_0_161,c_0_162]) ).
cnf(c_0_169,plain,
is_a_theorem(equiv(and(X1,X2),and(X2,X1))),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_163,c_0_164]),c_0_164])]) ).
cnf(c_0_170,plain,
is_a_theorem(implies(implies(X1,X2),implies(or(X3,X1),or(X3,X2)))),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_165,c_0_166])]) ).
cnf(c_0_171,plain,
~ is_a_theorem(implies(implies(esk29_0,esk30_0),implies(implies(esk30_0,not(esk31_0)),not(and(esk31_0,esk29_0))))),
inference(rw,[status(thm)],[c_0_167,c_0_136]) ).
cnf(c_0_172,plain,
not(and(X1,X2)) = implies(X1,not(X2)),
inference(spm,[status(thm)],[c_0_129,c_0_168]) ).
cnf(c_0_173,plain,
and(X1,X2) = and(X2,X1),
inference(spm,[status(thm)],[c_0_153,c_0_169]) ).
cnf(c_0_174,plain,
is_a_theorem(implies(implies(X1,X2),implies(implies(X3,X1),implies(X3,X2)))),
inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_170,c_0_112]),c_0_112]) ).
cnf(c_0_175,plain,
~ is_a_theorem(implies(implies(esk29_0,esk30_0),implies(implies(esk30_0,not(esk31_0)),implies(esk31_0,not(esk29_0))))),
inference(rw,[status(thm)],[c_0_171,c_0_172]) ).
cnf(c_0_176,plain,
implies(X1,not(X2)) = implies(X2,not(X1)),
inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_172,c_0_173]),c_0_172]) ).
cnf(c_0_177,plain,
is_a_theorem(implies(implies(X1,X2),implies(implies(X2,X3),implies(X1,X3)))),
inference(spm,[status(thm)],[c_0_133,c_0_174]) ).
cnf(c_0_178,plain,
$false,
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_175,c_0_176]),c_0_177])]),
[proof] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.10/0.12 % Problem : LCL501+1 : TPTP v8.1.0. Released v3.3.0.
% 0.10/0.12 % Command : enigmatic-eprover.py %s %d 1
% 0.12/0.33 % Computer : n015.cluster.edu
% 0.12/0.33 % Model : x86_64 x86_64
% 0.12/0.33 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.12/0.33 % Memory : 8042.1875MB
% 0.12/0.33 % OS : Linux 3.10.0-693.el7.x86_64
% 0.12/0.33 % CPULimit : 300
% 0.12/0.33 % WCLimit : 600
% 0.12/0.33 % DateTime : Sun Jul 3 07:35:16 EDT 2022
% 0.12/0.33 % CPUTime :
% 0.19/0.44 # ENIGMATIC: Selected SinE mode:
% 0.19/0.45 # Parsing /export/starexec/sandbox2/benchmark/theBenchmark.p
% 0.19/0.45 # Filter: axfilter_auto 0 goes into file theBenchmark_axfilter_auto 0.p
% 0.19/0.45 # Filter: axfilter_auto 1 goes into file theBenchmark_axfilter_auto 1.p
% 0.19/0.45 # Filter: axfilter_auto 2 goes into file theBenchmark_axfilter_auto 2.p
% 18.12/3.93 # ENIGMATIC: Solved by Enigma+tptp-cade20-model03-h2e15+lgb-t150-d30-l6400-e0.15+coop-eprover66:
% 18.12/3.93 # ENIGMA: LightGBM model '/export/starexec/sandbox2/solver/bin/data/Enigma/tptp-cade20-model03-h2e15/lgb-t150-d30-l6400-e0.15/model.lgb' loaded. (hash_base: 32768; conj_feats: 9; version: 991; iters: 150)
% 18.12/3.93 # Preprocessing time : 0.960 s
% 18.12/3.93 # Presaturation interreduction done
% 18.12/3.93
% 18.12/3.93 # Proof found!
% 18.12/3.93 # SZS status Theorem
% 18.12/3.93 # SZS output start CNFRefutation
% See solution above
% 18.12/3.93 # Training examples: 0 positive, 0 negative
% 18.12/3.93
% 18.12/3.93 # -------------------------------------------------
% 18.12/3.93 # User time : 1.215 s
% 18.12/3.93 # System time : 0.129 s
% 18.12/3.93 # Total time : 1.344 s
% 18.12/3.93 # ...preprocessing : 0.960 s
% 18.12/3.93 # ...main loop : 0.384 s
% 18.12/3.93 # Maximum resident set size: 167712 pages
% 18.12/3.93
%------------------------------------------------------------------------------