TSTP Solution File: NLP213-1 by Etableau---0.67

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Etableau---0.67
% Problem  : NLP213-1 : TPTP v8.1.0. Released v2.4.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : etableau --auto --tsmdo --quicksat=10000 --tableau=1 --tableau-saturation=1 -s -p --tableau-cores=8 --cpu-limit=%d %s

% Computer : n026.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 : Mon Jul 18 02:13:56 EDT 2022

% Result   : Satisfiable 0.21s 0.45s
% Output   : CNFRefutation 0.21s
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.03/0.12  % Problem  : NLP213-1 : TPTP v8.1.0. Released v2.4.0.
% 0.03/0.13  % Command  : etableau --auto --tsmdo --quicksat=10000 --tableau=1 --tableau-saturation=1 -s -p --tableau-cores=8 --cpu-limit=%d %s
% 0.13/0.34  % Computer : n026.cluster.edu
% 0.13/0.34  % Model    : x86_64 x86_64
% 0.13/0.34  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.34  % Memory   : 8042.1875MB
% 0.13/0.34  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.13/0.34  % CPULimit : 300
% 0.13/0.34  % WCLimit  : 600
% 0.13/0.34  % DateTime : Fri Jul  1 08:34:19 EDT 2022
% 0.13/0.35  % CPUTime  : 
% 0.21/0.38  # No SInE strategy applied
% 0.21/0.38  # Auto-Mode selected heuristic G_E___207_C18_F1_SE_CS_SP_PI_PS_S2SA
% 0.21/0.38  # and selection function SelectNewComplexAHP.
% 0.21/0.38  #
% 0.21/0.38  # Presaturation interreduction done
% 0.21/0.38  # Number of axioms: 124 Number of unprocessed: 124
% 0.21/0.38  # Tableaux proof search.
% 0.21/0.38  # APR header successfully linked.
% 0.21/0.38  # Hello from C++
% 0.21/0.39  # The folding up rule is enabled...
% 0.21/0.39  # Local unification is enabled...
% 0.21/0.39  # Any saturation attempts will use folding labels...
% 0.21/0.39  # 124 beginning clauses after preprocessing and clausification
% 0.21/0.39  # Creating start rules for all 47 conjectures.
% 0.21/0.39  # There are 47 start rule candidates:
% 0.21/0.39  # Found 25 unit axioms.
% 0.21/0.39  # Unsuccessfully attempted saturation on 1 start tableaux, moving on.
% 0.21/0.39  # 47 start rule tableaux created.
% 0.21/0.39  # 99 extension rule candidate clauses
% 0.21/0.39  # 25 unit axiom clauses
% 0.21/0.39  
% 0.21/0.39  # Requested 8, 32 cores available to the main process.
% 0.21/0.45  # 13291 Satisfiable branch
% 0.21/0.45  # Satisfiable branch found.
% 0.21/0.45  # There were 1 total branch saturation attempts.
% 0.21/0.45  # There were 0 of these attempts blocked.
% 0.21/0.45  # There were 0 deferred branch saturation attempts.
% 0.21/0.45  # There were 0 free duplicated saturations.
% 0.21/0.45  # There were 0 total successful branch saturations.
% 0.21/0.45  # There were 0 successful branch saturations in interreduction.
% 0.21/0.45  # There were 0 successful branch saturations on the branch.
% 0.21/0.45  # There were 0 successful branch saturations after the branch.
% 0.21/0.45  # SZS status Satisfiable for /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.21/0.45  # SZS output start for /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.21/0.45  # Begin clausification derivation
% 0.21/0.45  
% 0.21/0.45  # End clausification derivation
% 0.21/0.45  # Begin listing active clauses obtained from FOF to CNF conversion
% 0.21/0.45  cnf(i_0_202, negated_conjecture, (actual_world(skc8))).
% 0.21/0.45  cnf(i_0_217, negated_conjecture, (event(skc8,skc12))).
% 0.21/0.45  cnf(i_0_210, negated_conjecture, (group(skc8,skc10))).
% 0.21/0.45  cnf(i_0_212, negated_conjecture, (group(skc8,skc9))).
% 0.21/0.45  cnf(i_0_211, negated_conjecture, (two(skc8,skc10))).
% 0.21/0.45  cnf(i_0_219, negated_conjecture, (barrel(skc8,skc12))).
% 0.21/0.45  cnf(i_0_206, negated_conjecture, (street(skc8,skc13))).
% 0.21/0.45  cnf(i_0_216, negated_conjecture, (chevy(skc8,skc15))).
% 0.21/0.45  cnf(i_0_204, negated_conjecture, (placename(skc8,skc14))).
% 0.21/0.45  cnf(i_0_203, negated_conjecture, (hollywood_placename(skc8,skc14))).
% 0.21/0.45  cnf(i_0_207, negated_conjecture, (city(skc8,skc13))).
% 0.21/0.45  cnf(i_0_208, negated_conjecture, (frontseat(skc8,skc11))).
% 0.21/0.45  cnf(i_0_213, negated_conjecture, (old(skc8,skc15))).
% 0.21/0.45  cnf(i_0_215, negated_conjecture, (white(skc8,skc15))).
% 0.21/0.45  cnf(i_0_205, negated_conjecture, (lonely(skc8,skc13))).
% 0.21/0.45  cnf(i_0_209, negated_conjecture, (ssSkP0(skc10,skc8))).
% 0.21/0.45  cnf(i_0_214, negated_conjecture, (dirty(skc8,skc15))).
% 0.21/0.45  cnf(i_0_218, negated_conjecture, (present(skc8,skc12))).
% 0.21/0.45  cnf(i_0_220, negated_conjecture, (agent(skc8,skc12,skc15))).
% 0.21/0.45  cnf(i_0_221, negated_conjecture, (of(skc8,skc14,skc13))).
% 0.21/0.45  cnf(i_0_222, negated_conjecture, (in(skc8,skc12,skc13))).
% 0.21/0.45  cnf(i_0_223, negated_conjecture, (down(skc8,skc12,skc13))).
% 0.21/0.45  cnf(i_0_224, negated_conjecture, (ssSkP1(skc11,skc10,skc8))).
% 0.21/0.45  cnf(i_0_225, negated_conjecture, (ssSkP2(skc10,skc9,skc8))).
% 0.21/0.45  cnf(i_0_125, plain, (~member(X1,X2,X2))).
% 0.21/0.45  cnf(i_0_186, plain, (~multiple(X1,X2)|~singleton(X1,X2))).
% 0.21/0.45  cnf(i_0_185, plain, (~general(X1,X2)|~specific(X1,X2))).
% 0.21/0.45  cnf(i_0_189, plain, (~existent(X1,X2)|~nonexistent(X1,X2))).
% 0.21/0.45  cnf(i_0_184, plain, (~male(X1,X2)|~unisex(X1,X2))).
% 0.21/0.45  cnf(i_0_187, plain, (~living(X1,X2)|~nonliving(X1,X2))).
% 0.21/0.45  cnf(i_0_190, plain, (~animate(X1,X2)|~nonliving(X1,X2))).
% 0.21/0.45  cnf(i_0_188, plain, (~nonhuman(X1,X2)|~human(X1,X2))).
% 0.21/0.45  cnf(i_0_126, plain, (eventuality(X1,X2)|~state(X1,X2))).
% 0.21/0.45  cnf(i_0_182, plain, (~young(X1,X2)|~old(X1,X2))).
% 0.21/0.45  cnf(i_0_183, plain, (~white(X1,X2)|~black(X1,X2))).
% 0.21/0.45  cnf(i_0_132, plain, (event(X1,X2)|~state(X1,X2))).
% 0.21/0.45  cnf(i_0_149, plain, (event(X1,X2)|~wear(X1,X2))).
% 0.21/0.45  cnf(i_0_228, negated_conjecture, (coat(skc8,X1)|~member(skc8,X1,skc9))).
% 0.21/0.45  cnf(i_0_133, plain, (eventuality(X1,X2)|~event(X1,X2))).
% 0.21/0.45  cnf(i_0_227, negated_conjecture, (black(skc8,X1)|~member(skc8,X1,skc9))).
% 0.21/0.45  cnf(i_0_160, plain, (event(X1,X2)|~barrel(X1,X2))).
% 0.21/0.45  cnf(i_0_135, plain, (instrumentality(X1,X2)|~device(X1,X2))).
% 0.21/0.45  cnf(i_0_166, plain, (instrumentality(X1,X2)|~transport(X1,X2))).
% 0.21/0.45  cnf(i_0_179, plain, (instrumentality(X1,X2)|~furniture(X1,X2))).
% 0.21/0.45  cnf(i_0_226, negated_conjecture, (cheap(skc8,X1)|~member(skc8,X1,skc9))).
% 0.21/0.45  cnf(i_0_150, plain, (man(X1,X2)|~fellow(X1,X2))).
% 0.21/0.45  cnf(i_0_174, plain, (placename(X1,X2)|~hollywood_placename(X1,X2))).
% 0.21/0.45  cnf(i_0_181, plain, (forename(X1,X2)|~jules_forename(X1,X2))).
% 0.21/0.45  cnf(i_0_159, plain, (group(X1,X2)|~two(X1,X2))).
% 0.21/0.45  cnf(i_0_127, plain, (thing(X1,X2)|~eventuality(X1,X2))).
% 0.21/0.45  cnf(i_0_134, plain, (device(X1,X2)|~wheel(X1,X2))).
% 0.21/0.45  cnf(i_0_146, plain, (artifact(X1,X2)|~clothes(X1,X2))).
% 0.21/0.45  cnf(i_0_162, plain, (artifact(X1,X2)|~way(X1,X2))).
% 0.21/0.45  cnf(i_0_137, plain, (object(X1,X2)|~artifact(X1,X2))).
% 0.21/0.45  cnf(i_0_176, plain, (object(X1,X2)|~location(X1,X2))).
% 0.21/0.45  cnf(i_0_145, plain, (clothes(X1,X2)|~coat(X1,X2))).
% 0.21/0.45  cnf(i_0_191, plain, (X1=X2|~be(X3,X4,X1,X2))).
% 0.21/0.45  cnf(i_0_147, plain, (set(X1,X2)|~group(X1,X2))).
% 0.21/0.45  cnf(i_0_151, plain, (human_person(X1,X2)|~man(X1,X2))).
% 0.21/0.45  cnf(i_0_158, plain, (male(X1,X2)|~man(X1,X2))).
% 0.21/0.45  cnf(i_0_139, plain, (thing(X1,X2)|~entity(X1,X2))).
% 0.21/0.45  cnf(i_0_161, plain, (way(X1,X2)|~street(X1,X2))).
% 0.21/0.45  cnf(i_0_138, plain, (entity(X1,X2)|~object(X1,X2))).
% 0.21/0.45  cnf(i_0_153, plain, (entity(X1,X2)|~organism(X1,X2))).
% 0.21/0.45  cnf(i_0_152, plain, (organism(X1,X2)|~human_person(X1,X2))).
% 0.21/0.45  cnf(i_0_165, plain, (transport(X1,X2)|~vehicle(X1,X2))).
% 0.21/0.45  cnf(i_0_163, plain, (car(X1,X2)|~chevy(X1,X2))).
% 0.21/0.45  cnf(i_0_167, plain, (relname(X1,X2)|~placename(X1,X2))).
% 0.21/0.45  cnf(i_0_180, plain, (relname(X1,X2)|~forename(X1,X2))).
% 0.21/0.45  cnf(i_0_175, plain, (location(X1,X2)|~city(X1,X2))).
% 0.21/0.45  cnf(i_0_177, plain, (seat(X1,X2)|~frontseat(X1,X2))).
% 0.21/0.45  cnf(i_0_170, plain, (thing(X1,X2)|~abstraction(X1,X2))).
% 0.21/0.45  cnf(i_0_128, plain, (singleton(X1,X2)|~thing(X1,X2))).
% 0.21/0.45  cnf(i_0_169, plain, (abstraction(X1,X2)|~relation(X1,X2))).
% 0.21/0.45  cnf(i_0_178, plain, (furniture(X1,X2)|~seat(X1,X2))).
% 0.21/0.45  cnf(i_0_194, plain, (skf24(X1,X2)!=skf26(X1,X2)|~two(X2,X1))).
% 0.21/0.45  cnf(i_0_129, plain, (specific(X1,X2)|~eventuality(X1,X2))).
% 0.21/0.45  cnf(i_0_140, plain, (specific(X1,X2)|~entity(X1,X2))).
% 0.21/0.45  cnf(i_0_130, plain, (nonexistent(X1,X2)|~eventuality(X1,X2))).
% 0.21/0.45  cnf(i_0_131, plain, (unisex(X1,X2)|~eventuality(X1,X2))).
% 0.21/0.45  cnf(i_0_144, plain, (unisex(X1,X2)|~object(X1,X2))).
% 0.21/0.45  cnf(i_0_173, plain, (unisex(X1,X2)|~abstraction(X1,X2))).
% 0.21/0.45  cnf(i_0_136, plain, (artifact(X1,X2)|~instrumentality(X1,X2))).
% 0.21/0.45  cnf(i_0_141, plain, (existent(X1,X2)|~entity(X1,X2))).
% 0.21/0.45  cnf(i_0_142, plain, (nonliving(X1,X2)|~object(X1,X2))).
% 0.21/0.45  cnf(i_0_143, plain, (impartial(X1,X2)|~object(X1,X2))).
% 0.21/0.45  cnf(i_0_154, plain, (impartial(X1,X2)|~organism(X1,X2))).
% 0.21/0.45  cnf(i_0_148, plain, (multiple(X1,X2)|~set(X1,X2))).
% 0.21/0.45  cnf(i_0_155, plain, (living(X1,X2)|~organism(X1,X2))).
% 0.21/0.45  cnf(i_0_156, plain, (human(X1,X2)|~human_person(X1,X2))).
% 0.21/0.45  cnf(i_0_157, plain, (animate(X1,X2)|~human_person(X1,X2))).
% 0.21/0.45  cnf(i_0_164, plain, (vehicle(X1,X2)|~car(X1,X2))).
% 0.21/0.45  cnf(i_0_168, plain, (relation(X1,X2)|~relname(X1,X2))).
% 0.21/0.45  cnf(i_0_171, plain, (nonhuman(X1,X2)|~abstraction(X1,X2))).
% 0.21/0.45  cnf(i_0_172, plain, (general(X1,X2)|~abstraction(X1,X2))).
% 0.21/0.45  cnf(i_0_195, plain, (~agent(X1,X2,X3)|~patient(X1,X2,X3)|~nonreflexive(X1,X2))).
% 0.21/0.45  cnf(i_0_233, negated_conjecture, (fellow(X1,X2)|~ssSkP0(X3,X1)|~member(X1,X2,X3))).
% 0.21/0.45  cnf(i_0_234, negated_conjecture, (young(X1,X2)|~ssSkP0(X3,X1)|~member(X1,X2,X3))).
% 0.21/0.45  cnf(i_0_192, plain, (member(X1,skf26(X2,X1),X2)|~two(X1,X2))).
% 0.21/0.45  cnf(i_0_229, negated_conjecture, (ssSkP0(X1,X2)|member(X2,skf12(X2,X1),X1))).
% 0.21/0.45  cnf(i_0_193, plain, (member(X1,skf24(X2,X1),X2)|~two(X1,X2))).
% 0.21/0.45  cnf(i_0_235, negated_conjecture, (ssSkP0(X1,X2)|~young(X2,skf12(X2,X3))|~fellow(X2,skf12(X2,X3)))).
% 0.21/0.45  cnf(i_0_230, negated_conjecture, (ssSkP1(X1,X2,X3)|member(X3,skf17(X1,X3,X2),X2))).
% 0.21/0.45  cnf(i_0_231, negated_conjecture, (ssSkP2(X1,X2,X3)|member(X3,skf22(X1,X3,X4),X1))).
% 0.21/0.45  cnf(i_0_196, plain, (X1=skf24(X2,X3)|X1=skf26(X2,X3)|~two(X3,X2)|~member(X3,X1,X2))).
% 0.21/0.45  cnf(i_0_232, negated_conjecture, (ssSkP2(X1,X2,X3)|member(X3,skf20(X1,X3,X2),X2))).
% 0.21/0.45  cnf(i_0_200, plain, (X1=X2|~of(X3,X2,X4)|~of(X3,X1,X4)|~placename(X3,X2)|~placename(X3,X1)|~entity(X3,X4))).
% 0.21/0.45  cnf(i_0_201, plain, (X1=X2|~of(X3,X2,X4)|~of(X3,X1,X4)|~forename(X3,X2)|~forename(X3,X1)|~entity(X3,X4))).
% 0.21/0.45  cnf(i_0_236, negated_conjecture, (state(X1,skf14(X1,X2,X3))|~ssSkP1(X4,X5,X1)|~member(X1,X6,X5))).
% 0.21/0.45  cnf(i_0_244, negated_conjecture, (ssSkP1(X1,X2,X3)|~in(X3,X4,X1)|~be(X3,X5,skf17(X1,X3,X6),X4)|~state(X3,X5))).
% 0.21/0.45  cnf(i_0_237, negated_conjecture, (in(X1,skf13(X2,X1,X3),X3)|~ssSkP1(X3,X4,X1)|~member(X1,X2,X4))).
% 0.21/0.45  cnf(i_0_242, negated_conjecture, (event(X1,skf18(X1,X2,X3))|~ssSkP2(X4,X5,X1)|~member(X1,X6,X5)|~member(X1,X7,X4))).
% 0.21/0.45  cnf(i_0_239, negated_conjecture, (wear(X1,skf18(X1,X2,X3))|~ssSkP2(X4,X5,X1)|~member(X1,X6,X5)|~member(X1,X7,X4))).
% 0.21/0.45  cnf(i_0_240, negated_conjecture, (nonreflexive(X1,skf18(X1,X2,X3))|~ssSkP2(X4,X5,X1)|~member(X1,X6,X5)|~member(X1,X7,X4))).
% 0.21/0.45  cnf(i_0_241, negated_conjecture, (present(X1,skf18(X1,X2,X3))|~ssSkP2(X4,X5,X1)|~member(X1,X6,X5)|~member(X1,X7,X4))).
% 0.21/0.45  cnf(i_0_245, negated_conjecture, (patient(X1,skf18(X1,X2,X3),X3)|~ssSkP2(X4,X5,X1)|~member(X1,X3,X5)|~member(X1,X2,X4))).
% 0.21/0.45  cnf(i_0_243, negated_conjecture, (agent(X1,skf18(X1,X2,X3),X2)|~ssSkP2(X4,X5,X1)|~member(X1,X6,X5)|~member(X1,X2,X4))).
% 0.21/0.45  cnf(i_0_198, plain, (X1=X2|two(X3,X4)|skf27(X1,X2,X5,X6)!=X2|~member(X3,X2,X4)|~member(X3,X1,X4))).
% 0.21/0.45  cnf(i_0_199, plain, (X1=X2|two(X3,X4)|skf27(X1,X5,X6,X7)!=X1|~member(X3,X2,X4)|~member(X3,X1,X4))).
% 0.21/0.45  cnf(i_0_246, negated_conjecture, (ssSkP2(X1,X2,X3)|~present(X3,X4)|~agent(X3,X4,skf22(X1,X3,X5))|~patient(X3,X4,skf20(X1,X3,X5))|~nonreflexive(X3,X4)|~wear(X3,X4))).
% 0.21/0.45  cnf(i_0_197, plain, (X1=X2|two(X3,X4)|member(X3,skf27(X1,X2,X4,X3),X4)|~member(X3,X2,X4)|~member(X3,X1,X4))).
% 0.21/0.45  cnf(i_0_238, negated_conjecture, (be(X1,skf14(X1,X2,X3),X3,skf13(X3,X1,X2))|~ssSkP1(X4,X5,X1)|~member(X1,X3,X5))).
% 0.21/0.45  cnf(i_0_247, negated_conjecture, (member(X1,skf11(X1,X2),X2)|~behind(X1,X3,X4)|~ssSkP2(X5,X2,X1)|~ssSkP1(X4,X5,X1)|~down(X1,X6,X7)|~in(X1,X6,X7)|~present(X1,X6)|~dirty(X1,X8)|~ssSkP0(X5,X1)|~lonely(X1,X7)|~actual_world(X1)|~of(X1,X9,X10)|~of(X1,X11,X7)|~agent(X1,X6,X8)|~be(X1,X12,X10,X3)|~white(X1,X8)|~old(X1,X8)|~jules_forename(X1,X9)|~frontseat(X1,X4)|~city(X1,X7)|~hollywood_placename(X1,X11)|~chevy(X1,X8)|~street(X1,X7)|~barrel(X1,X6)|~two(X1,X5)|~man(X1,X10)|~group(X1,X2)|~wheel(X1,X4)|~state(X1,X12))).
% 0.21/0.45  cnf(i_0_248, negated_conjecture, (~behind(X1,X2,X3)|~cheap(X1,skf11(X1,X4))|~ssSkP2(X5,X6,X1)|~ssSkP1(X3,X5,X1)|~down(X1,X7,X8)|~in(X1,X7,X8)|~present(X1,X7)|~dirty(X1,X9)|~ssSkP0(X5,X1)|~lonely(X1,X8)|~actual_world(X1)|~of(X1,X10,X11)|~of(X1,X12,X8)|~agent(X1,X7,X9)|~be(X1,X13,X11,X2)|~white(X1,X9)|~black(X1,skf11(X1,X4))|~old(X1,X9)|~jules_forename(X1,X10)|~frontseat(X1,X3)|~city(X1,X8)|~hollywood_placename(X1,X12)|~chevy(X1,X9)|~street(X1,X8)|~barrel(X1,X7)|~two(X1,X5)|~man(X1,X11)|~group(X1,X6)|~coat(X1,skf11(X1,X4))|~wheel(X1,X3)|~state(X1,X13))).
% 0.21/0.45  # End listing active clauses.  There is an equivalent clause to each of these in the clausification!
% 0.21/0.45  # Begin printing tableau
% 0.21/0.45  # Found 8 steps
% 0.21/0.45  cnf(i_0_245, negated_conjecture, (patient(skc8,skf18(skc8,skf24(skc10,skc8),skf24(skc10,skc8)),skf24(skc10,skc8))|~ssSkP2(skc10,skc9,skc8)|~member(skc8,skf24(skc10,skc8),skc9)|~member(skc8,skf24(skc10,skc8),skc10)), inference(start_rule)).
% 0.21/0.45  cnf(i_0_323, plain, (~ssSkP2(skc10,skc9,skc8)), inference(closure_rule, [i_0_225])).
% 0.21/0.45  cnf(i_0_322, plain, (patient(skc8,skf18(skc8,skf24(skc10,skc8),skf24(skc10,skc8)),skf24(skc10,skc8))), inference(extension_rule, [i_0_195])).
% 0.21/0.45  cnf(i_0_533, plain, (~agent(skc8,skf18(skc8,skf24(skc10,skc8),skf24(skc10,skc8)),skf24(skc10,skc8))), inference(extension_rule, [i_0_243])).
% 0.21/0.45  cnf(i_0_775, plain, (~ssSkP2(skc10,skc9,skc8)), inference(closure_rule, [i_0_225])).
% 0.21/0.45  cnf(i_0_776, plain, (~member(skc8,skf26(skc9,skc8),skc9)), inference(extension_rule, [i_0_192])).
% 0.21/0.45  cnf(i_0_777, plain, (~member(skc8,skf24(skc10,skc8),skc10)), inference(extension_rule, [i_0_193])).
% 0.21/0.45  cnf(i_0_1049, plain, (~two(skc8,skc10)), inference(closure_rule, [i_0_211])).
% 0.21/0.45  # End printing tableau
% 0.21/0.45  # SZS output end
% 0.21/0.45  # Branches closed with saturation will be marked with an "s"
% 0.21/0.45  # Child (13291) has found a proof.
% 0.21/0.45  
% 0.21/0.45  # Proof search is over...
% 0.21/0.45  # Freeing feature tree
%------------------------------------------------------------------------------