TSTP Solution File: CSR108+2 by ET---2.0

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : ET---2.0
% Problem  : CSR108+2 : TPTP v8.1.0. Bugfixed v7.3.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_ET %s %d

% Computer : n023.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 : Fri Jul 15 03:02:52 EDT 2022

% Result   : Theorem 6.96s 44.15s
% Output   : CNFRefutation 6.96s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :    9
%            Number of leaves      :    9
% Syntax   : Number of formulae    :   43 (  19 unt;   0 def)
%            Number of atoms       :   98 (   0 equ)
%            Maximal formula atoms :    8 (   2 avg)
%            Number of connectives :   96 (  41   ~;  35   |;  16   &)
%                                         (   0 <=>;   4  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   16 (   3 avg)
%            Maximal term depth    :    1 (   1 avg)
%            Number of predicates  :    4 (   3 usr;   1 prp; 0-10 aty)
%            Number of functors    :   16 (  16 usr;  16 con; 0-0 aty)
%            Number of variables   :   84 (  38 sgn  30   !;   0   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(kb_SUMO_27,axiom,
    ! [X6,X7,X8] :
      ( ( s__instance(X7,s__SetOrClass)
        & s__instance(X6,s__SetOrClass) )
     => ( ( s__subclass(X6,X7)
          & s__instance(X8,X6) )
       => s__instance(X8,X7) ) ),
    file('/export/starexec/sandbox2/benchmark/Axioms/CSR003+1.ax',kb_SUMO_27) ).

fof(kb_SUMO_26,axiom,
    ! [X6,X7] :
      ( s__subclass(X6,X7)
     => ( s__instance(X6,s__SetOrClass)
        & s__instance(X7,s__SetOrClass) ) ),
    file('/export/starexec/sandbox2/benchmark/Axioms/CSR003+1.ax',kb_SUMO_26) ).

fof(local_24,axiom,
    ! [X1223,X1224,X1225,X1226,X1227,X1228,X1229,X1230,X1231,X1232] :
      ( s__testPred44_1__10(X1223,X1224,X1225,X1226,X1227,X1228,X1229,X1230,X1231,X1232)
     => ( s__instance(X1223,s__Amphibian)
        & s__instance(X1224,s__Bird)
        & s__instance(X1231,s__Mammal)
        & s__instance(X1232,s__Reptile) ) ),
    file('/export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in',local_24) ).

fof(prove_from_SUMO_MILO,conjecture,
    ( s__instance(s__Entity44_1,s__Animal)
    & s__instance(s__Entity44_2,s__Animal)
    & s__instance(s__Entity44_9,s__Animal)
    & s__instance(s__Entity44_10,s__Animal) ),
    file('/export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in',prove_from_SUMO_MILO) ).

fof(kb_SUMO_10441,axiom,
    s__subclass(s__Mammal,s__Animal),
    file('/export/starexec/sandbox2/benchmark/Axioms/CSR003+4.ax',kb_SUMO_10441) ).

fof(local_23,axiom,
    s__testPred44_1__10(s__Entity44_1,s__Entity44_2,s__Entity44_3,s__Entity44_4,s__Entity44_5,s__Entity44_6,s__Entity44_7,s__Entity44_8,s__Entity44_9,s__Entity44_10),
    file('/export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in',local_23) ).

fof(kb_SUMO_20469,axiom,
    s__subclass(s__Bird,s__Animal),
    file('/export/starexec/sandbox2/benchmark/Axioms/CSR003+4.ax',kb_SUMO_20469) ).

fof(kb_SUMO_9340,axiom,
    s__subclass(s__Reptile,s__Animal),
    file('/export/starexec/sandbox2/benchmark/Axioms/CSR003+4.ax',kb_SUMO_9340) ).

fof(kb_SUMO_16110,axiom,
    s__subclass(s__Amphibian,s__Animal),
    file('/export/starexec/sandbox2/benchmark/Axioms/CSR003+4.ax',kb_SUMO_16110) ).

fof(c_0_9,plain,
    ! [X9,X10,X11] :
      ( ~ s__instance(X10,s__SetOrClass)
      | ~ s__instance(X9,s__SetOrClass)
      | ~ s__subclass(X9,X10)
      | ~ s__instance(X11,X9)
      | s__instance(X11,X10) ),
    inference(shift_quantors,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[kb_SUMO_27])])])]) ).

fof(c_0_10,plain,
    ! [X8,X9] :
      ( ( s__instance(X8,s__SetOrClass)
        | ~ s__subclass(X8,X9) )
      & ( s__instance(X9,s__SetOrClass)
        | ~ s__subclass(X8,X9) ) ),
    inference(distribute,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[kb_SUMO_26])])]) ).

cnf(c_0_11,plain,
    ( s__instance(X1,X2)
    | ~ s__instance(X1,X3)
    | ~ s__subclass(X3,X2)
    | ~ s__instance(X3,s__SetOrClass)
    | ~ s__instance(X2,s__SetOrClass) ),
    inference(split_conjunct,[status(thm)],[c_0_9]) ).

cnf(c_0_12,plain,
    ( s__instance(X2,s__SetOrClass)
    | ~ s__subclass(X1,X2) ),
    inference(split_conjunct,[status(thm)],[c_0_10]) ).

cnf(c_0_13,plain,
    ( s__instance(X1,s__SetOrClass)
    | ~ s__subclass(X1,X2) ),
    inference(split_conjunct,[status(thm)],[c_0_10]) ).

fof(c_0_14,plain,
    ! [X1233,X1234,X1235,X1236,X1237,X1238,X1239,X1240,X1241,X1242] :
      ( ( s__instance(X1233,s__Amphibian)
        | ~ s__testPred44_1__10(X1233,X1234,X1235,X1236,X1237,X1238,X1239,X1240,X1241,X1242) )
      & ( s__instance(X1234,s__Bird)
        | ~ s__testPred44_1__10(X1233,X1234,X1235,X1236,X1237,X1238,X1239,X1240,X1241,X1242) )
      & ( s__instance(X1241,s__Mammal)
        | ~ s__testPred44_1__10(X1233,X1234,X1235,X1236,X1237,X1238,X1239,X1240,X1241,X1242) )
      & ( s__instance(X1242,s__Reptile)
        | ~ s__testPred44_1__10(X1233,X1234,X1235,X1236,X1237,X1238,X1239,X1240,X1241,X1242) ) ),
    inference(distribute,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[local_24])])]) ).

fof(c_0_15,negated_conjecture,
    ~ ( s__instance(s__Entity44_1,s__Animal)
      & s__instance(s__Entity44_2,s__Animal)
      & s__instance(s__Entity44_9,s__Animal)
      & s__instance(s__Entity44_10,s__Animal) ),
    inference(assume_negation,[status(cth)],[prove_from_SUMO_MILO]) ).

cnf(c_0_16,plain,
    ( s__instance(X1,X2)
    | ~ s__subclass(X3,X2)
    | ~ s__instance(X1,X3) ),
    inference(csr,[status(thm)],[inference(csr,[status(thm)],[c_0_11,c_0_12]),c_0_13]) ).

cnf(c_0_17,plain,
    s__subclass(s__Mammal,s__Animal),
    inference(split_conjunct,[status(thm)],[kb_SUMO_10441]) ).

cnf(c_0_18,plain,
    ( s__instance(X9,s__Mammal)
    | ~ s__testPred44_1__10(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10) ),
    inference(split_conjunct,[status(thm)],[c_0_14]) ).

cnf(c_0_19,plain,
    s__testPred44_1__10(s__Entity44_1,s__Entity44_2,s__Entity44_3,s__Entity44_4,s__Entity44_5,s__Entity44_6,s__Entity44_7,s__Entity44_8,s__Entity44_9,s__Entity44_10),
    inference(split_conjunct,[status(thm)],[local_23]) ).

fof(c_0_20,negated_conjecture,
    ( ~ s__instance(s__Entity44_1,s__Animal)
    | ~ s__instance(s__Entity44_2,s__Animal)
    | ~ s__instance(s__Entity44_9,s__Animal)
    | ~ s__instance(s__Entity44_10,s__Animal) ),
    inference(fof_nnf,[status(thm)],[c_0_15]) ).

cnf(c_0_21,plain,
    ( s__instance(X1,s__Animal)
    | ~ s__instance(X1,s__Mammal) ),
    inference(spm,[status(thm)],[c_0_16,c_0_17]) ).

cnf(c_0_22,plain,
    s__instance(s__Entity44_9,s__Mammal),
    inference(spm,[status(thm)],[c_0_18,c_0_19]) ).

cnf(c_0_23,plain,
    s__subclass(s__Bird,s__Animal),
    inference(split_conjunct,[status(thm)],[kb_SUMO_20469]) ).

cnf(c_0_24,plain,
    ( s__instance(X2,s__Bird)
    | ~ s__testPred44_1__10(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10) ),
    inference(split_conjunct,[status(thm)],[c_0_14]) ).

cnf(c_0_25,negated_conjecture,
    ( ~ s__instance(s__Entity44_10,s__Animal)
    | ~ s__instance(s__Entity44_9,s__Animal)
    | ~ s__instance(s__Entity44_2,s__Animal)
    | ~ s__instance(s__Entity44_1,s__Animal) ),
    inference(split_conjunct,[status(thm)],[c_0_20]) ).

cnf(c_0_26,plain,
    s__instance(s__Entity44_9,s__Animal),
    inference(spm,[status(thm)],[c_0_21,c_0_22]) ).

cnf(c_0_27,plain,
    ( s__instance(X1,s__Animal)
    | ~ s__instance(X1,s__Bird) ),
    inference(spm,[status(thm)],[c_0_16,c_0_23]) ).

cnf(c_0_28,plain,
    s__instance(s__Entity44_2,s__Bird),
    inference(spm,[status(thm)],[c_0_24,c_0_19]) ).

cnf(c_0_29,plain,
    s__subclass(s__Reptile,s__Animal),
    inference(split_conjunct,[status(thm)],[kb_SUMO_9340]) ).

cnf(c_0_30,plain,
    ( s__instance(X10,s__Reptile)
    | ~ s__testPred44_1__10(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10) ),
    inference(split_conjunct,[status(thm)],[c_0_14]) ).

cnf(c_0_31,negated_conjecture,
    ( ~ s__instance(s__Entity44_1,s__Animal)
    | ~ s__instance(s__Entity44_2,s__Animal)
    | ~ s__instance(s__Entity44_10,s__Animal) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_25,c_0_26])]) ).

cnf(c_0_32,plain,
    s__instance(s__Entity44_2,s__Animal),
    inference(spm,[status(thm)],[c_0_27,c_0_28]) ).

cnf(c_0_33,plain,
    ( s__instance(X1,s__Animal)
    | ~ s__instance(X1,s__Reptile) ),
    inference(spm,[status(thm)],[c_0_16,c_0_29]) ).

cnf(c_0_34,plain,
    s__instance(s__Entity44_10,s__Reptile),
    inference(spm,[status(thm)],[c_0_30,c_0_19]) ).

cnf(c_0_35,plain,
    s__subclass(s__Amphibian,s__Animal),
    inference(split_conjunct,[status(thm)],[kb_SUMO_16110]) ).

cnf(c_0_36,plain,
    ( s__instance(X1,s__Amphibian)
    | ~ s__testPred44_1__10(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10) ),
    inference(split_conjunct,[status(thm)],[c_0_14]) ).

cnf(c_0_37,negated_conjecture,
    ( ~ s__instance(s__Entity44_1,s__Animal)
    | ~ s__instance(s__Entity44_10,s__Animal) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_31,c_0_32])]) ).

cnf(c_0_38,plain,
    s__instance(s__Entity44_10,s__Animal),
    inference(spm,[status(thm)],[c_0_33,c_0_34]) ).

cnf(c_0_39,plain,
    ( s__instance(X1,s__Animal)
    | ~ s__instance(X1,s__Amphibian) ),
    inference(spm,[status(thm)],[c_0_16,c_0_35]) ).

cnf(c_0_40,plain,
    s__instance(s__Entity44_1,s__Amphibian),
    inference(spm,[status(thm)],[c_0_36,c_0_19]) ).

cnf(c_0_41,negated_conjecture,
    ~ s__instance(s__Entity44_1,s__Animal),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_37,c_0_38])]) ).

cnf(c_0_42,plain,
    $false,
    inference(sr,[status(thm)],[inference(spm,[status(thm)],[c_0_39,c_0_40]),c_0_41]),
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.03/0.11  % Problem  : CSR108+2 : TPTP v8.1.0. Bugfixed v7.3.0.
% 0.03/0.12  % Command  : run_ET %s %d
% 0.12/0.33  % Computer : n023.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 : Fri Jun 10 12:48:52 EDT 2022
% 0.12/0.33  % CPUTime  : 
% 6.88/29.94  eprover: CPU time limit exceeded, terminating
% 6.88/29.94  eprover: CPU time limit exceeded, terminating
% 6.88/29.94  eprover: CPU time limit exceeded, terminating
% 6.88/30.76  eprover: CPU time limit exceeded, terminating
% 6.96/44.15  # Running protocol protocol_eprover_4a02c828a8cc55752123edbcc1ad40e453c11447 for 23 seconds:
% 6.96/44.15  
% 6.96/44.15  # Failure: Resource limit exceeded (time)
% 6.96/44.15  # OLD status Res
% 6.96/44.15  # SinE strategy is GSinE(CountFormulas,hypos,1.4,,04,100,1.0)
% 6.96/44.15  # Preprocessing time       : 0.455 s
% 6.96/44.15  # Running protocol protocol_eprover_f171197f65f27d1ba69648a20c844832c84a5dd7 for 23 seconds:
% 6.96/44.15  # Preprocessing time       : 1.353 s
% 6.96/44.15  
% 6.96/44.15  # Proof found!
% 6.96/44.15  # SZS status Theorem
% 6.96/44.15  # SZS output start CNFRefutation
% See solution above
% 6.96/44.15  # Proof object total steps             : 43
% 6.96/44.15  # Proof object clause steps            : 29
% 6.96/44.15  # Proof object formula steps           : 14
% 6.96/44.15  # Proof object conjectures             : 7
% 6.96/44.15  # Proof object clause conjectures      : 4
% 6.96/44.15  # Proof object formula conjectures     : 3
% 6.96/44.15  # Proof object initial clauses used    : 13
% 6.96/44.15  # Proof object initial formulas used   : 9
% 6.96/44.15  # Proof object generating inferences   : 12
% 6.96/44.15  # Proof object simplifying inferences  : 9
% 6.96/44.15  # Training examples: 0 positive, 0 negative
% 6.96/44.15  # Parsed axioms                        : 38006
% 6.96/44.15  # Removed by relevancy pruning/SinE    : 0
% 6.96/44.15  # Initial clauses                      : 41531
% 6.96/44.15  # Removed in clause preprocessing      : 63
% 6.96/44.15  # Initial clauses in saturation        : 41468
% 6.96/44.15  # Processed clauses                    : 41837
% 6.96/44.15  # ...of these trivial                  : 3132
% 6.96/44.15  # ...subsumed                          : 242
% 6.96/44.15  # ...remaining for further processing  : 38463
% 6.96/44.15  # Other redundant clauses eliminated   : 551
% 6.96/44.15  # Clauses deleted for lack of memory   : 239940
% 6.96/44.15  # Backward-subsumed                    : 15
% 6.96/44.15  # Backward-rewritten                   : 55
% 6.96/44.15  # Generated clauses                    : 295115
% 6.96/44.15  # ...of the previous two non-trivial   : 291279
% 6.96/44.15  # Contextual simplify-reflections      : 1708
% 6.96/44.15  # Paramodulations                      : 294451
% 6.96/44.15  # Factorizations                       : 5
% 6.96/44.15  # Equation resolutions                 : 659
% 6.96/44.15  # Current number of processed clauses  : 38382
% 6.96/44.15  #    Positive orientable unit clauses  : 29647
% 6.96/44.15  #    Positive unorientable unit clauses: 7
% 6.96/44.15  #    Negative unit clauses             : 7
% 6.96/44.15  #    Non-unit-clauses                  : 8721
% 6.96/44.15  # Current number of unprocessed clauses: 50929
% 6.96/44.15  # ...number of literals in the above   : 155691
% 6.96/44.15  # Current number of archived formulas  : 0
% 6.96/44.15  # Current number of archived clauses   : 70
% 6.96/44.15  # Clause-clause subsumption calls (NU) : 19728102
% 6.96/44.15  # Rec. Clause-clause subsumption calls : 3561662
% 6.96/44.15  # Non-unit clause-clause subsumptions  : 1961
% 6.96/44.15  # Unit Clause-clause subsumption calls : 17471802
% 6.96/44.15  # Rewrite failures with RHS unbound    : 0
% 6.96/44.15  # BW rewrite match attempts            : 62
% 6.96/44.15  # BW rewrite match successes           : 60
% 6.96/44.15  # Condensation attempts                : 0
% 6.96/44.15  # Condensation successes               : 0
% 6.96/44.15  # Termbank termtop insertions          : 5096404
% 6.96/44.15  
% 6.96/44.15  # -------------------------------------------------
% 6.96/44.15  # User time                : 13.491 s
% 6.96/44.15  # System time              : 0.294 s
% 6.96/44.15  # Total time               : 13.785 s
% 6.96/44.15  # Maximum resident set size: 364856 pages
% 6.96/52.99  eprover: CPU time limit exceeded, terminating
% 6.96/53.01  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 6.96/53.01  eprover: No such file or directory
% 6.96/53.01  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 6.96/53.01  eprover: No such file or directory
% 6.96/53.02  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 6.96/53.02  eprover: No such file or directory
% 6.96/53.02  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 6.96/53.02  eprover: No such file or directory
% 6.96/53.03  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 6.96/53.03  eprover: No such file or directory
% 6.96/53.04  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 6.96/53.04  eprover: No such file or directory
% 6.96/53.04  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 6.96/53.04  eprover: No such file or directory
% 6.96/53.05  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 6.96/53.05  eprover: No such file or directory
% 6.96/53.06  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 6.96/53.06  eprover: No such file or directory
% 6.96/53.06  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 6.96/53.06  eprover: No such file or directory
% 6.96/53.38  eprover: CPU time limit exceeded, terminating
% 6.96/53.40  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.40  eprover: No such file or directory
% 6.96/53.41  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.41  eprover: No such file or directory
% 6.96/53.41  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.41  eprover: No such file or directory
% 6.96/53.41  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.41  eprover: No such file or directory
% 6.96/53.42  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.42  eprover: No such file or directory
% 6.96/53.42  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.42  eprover: No such file or directory
% 6.96/53.43  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.43  eprover: No such file or directory
% 6.96/53.43  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.43  eprover: No such file or directory
% 6.96/53.43  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.43  eprover: No such file or directory
% 6.96/53.78  eprover: CPU time limit exceeded, terminating
% 6.96/53.81  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.81  eprover: No such file or directory
% 6.96/53.81  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.81  eprover: No such file or directory
% 6.96/53.82  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.82  eprover: No such file or directory
% 6.96/53.82  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.82  eprover: No such file or directory
% 6.96/53.83  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.83  eprover: No such file or directory
% 6.96/53.83  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.83  eprover: No such file or directory
% 6.96/53.84  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.84  eprover: No such file or directory
% 6.96/53.85  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 6.96/53.85  eprover: No such file or directory
%------------------------------------------------------------------------------