TSTP Solution File: MGT035+2 by Prover9---1109a

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Prover9---1109a
% Problem  : MGT035+2 : TPTP v8.1.0. Released v2.0.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : tptp2X_and_run_prover9 %d %s

% Computer : n020.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 22:22:58 EDT 2022

% Result   : Timeout 300.01s 300.35s
% Output   : None 
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----No solution output by system
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.11/0.14  % Problem  : MGT035+2 : TPTP v8.1.0. Released v2.0.0.
% 0.11/0.15  % Command  : tptp2X_and_run_prover9 %d %s
% 0.13/0.36  % Computer : n020.cluster.edu
% 0.13/0.36  % Model    : x86_64 x86_64
% 0.13/0.36  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.36  % Memory   : 8042.1875MB
% 0.13/0.36  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.13/0.36  % CPULimit : 300
% 0.13/0.36  % WCLimit  : 600
% 0.13/0.36  % DateTime : Thu Jun  9 12:40:51 EDT 2022
% 0.13/0.36  % CPUTime  : 
% 0.43/1.04  ============================== Prover9 ===============================
% 0.43/1.04  Prover9 (32) version 2009-11A, November 2009.
% 0.43/1.04  Process 17003 was started by sandbox on n020.cluster.edu,
% 0.43/1.04  Thu Jun  9 12:40:52 2022
% 0.43/1.04  The command was "/export/starexec/sandbox/solver/bin/prover9 -t 300 -f /tmp/Prover9_16850_n020.cluster.edu".
% 0.43/1.04  ============================== end of head ===========================
% 0.43/1.04  
% 0.43/1.04  ============================== INPUT =================================
% 0.43/1.04  
% 0.43/1.04  % Reading from file /tmp/Prover9_16850_n020.cluster.edu
% 0.43/1.04  
% 0.43/1.04  set(prolog_style_variables).
% 0.43/1.04  set(auto2).
% 0.43/1.04      % set(auto2) -> set(auto).
% 0.43/1.04      % set(auto) -> set(auto_inference).
% 0.43/1.04      % set(auto) -> set(auto_setup).
% 0.43/1.04      % set(auto_setup) -> set(predicate_elim).
% 0.43/1.04      % set(auto_setup) -> assign(eq_defs, unfold).
% 0.43/1.04      % set(auto) -> set(auto_limits).
% 0.43/1.04      % set(auto_limits) -> assign(max_weight, "100.000").
% 0.43/1.04      % set(auto_limits) -> assign(sos_limit, 20000).
% 0.43/1.04      % set(auto) -> set(auto_denials).
% 0.43/1.04      % set(auto) -> set(auto_process).
% 0.43/1.04      % set(auto2) -> assign(new_constants, 1).
% 0.43/1.04      % set(auto2) -> assign(fold_denial_max, 3).
% 0.43/1.04      % set(auto2) -> assign(max_weight, "200.000").
% 0.43/1.04      % set(auto2) -> assign(max_hours, 1).
% 0.43/1.04      % assign(max_hours, 1) -> assign(max_seconds, 3600).
% 0.43/1.04      % set(auto2) -> assign(max_seconds, 0).
% 0.43/1.04      % set(auto2) -> assign(max_minutes, 5).
% 0.43/1.04      % assign(max_minutes, 5) -> assign(max_seconds, 300).
% 0.43/1.04      % set(auto2) -> set(sort_initial_sos).
% 0.43/1.04      % set(auto2) -> assign(sos_limit, -1).
% 0.43/1.04      % set(auto2) -> assign(lrs_ticks, 3000).
% 0.43/1.04      % set(auto2) -> assign(max_megs, 400).
% 0.43/1.04      % set(auto2) -> assign(stats, some).
% 0.43/1.04      % set(auto2) -> clear(echo_input).
% 0.43/1.04      % set(auto2) -> set(quiet).
% 0.43/1.04      % set(auto2) -> clear(print_initial_clauses).
% 0.43/1.04      % set(auto2) -> clear(print_given).
% 0.43/1.04  assign(lrs_ticks,-1).
% 0.43/1.04  assign(sos_limit,10000).
% 0.43/1.04  assign(order,kbo).
% 0.43/1.04  set(lex_order_vars).
% 0.43/1.04  clear(print_given).
% 0.43/1.04  
% 0.43/1.04  % formulas(sos).  % not echoed (20 formulas)
% 0.43/1.04  
% 0.43/1.04  ============================== end of input ==========================
% 0.43/1.04  
% 0.43/1.04  % From the command line: assign(max_seconds, 300).
% 0.43/1.04  
% 0.43/1.04  ============================== PROCESS NON-CLAUSAL FORMULAS ==========
% 0.43/1.04  
% 0.43/1.04  % Formulas that are not ordinary clauses:
% 0.43/1.04  1 (all E all T (environment(E) & subpopulations(first_movers,efficient_producers,E,T) -> in_environment(E,T))) # label(mp_time_point_in_environment) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  2 (all E all T (environment(E) & subpopulations(first_movers,efficient_producers,E,T) -> greater(number_of_organizations(E,T),zero))) # label(mp_environment_not_empty) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  3 (all E all X all T (environment(E) & subpopulation(X,E,T) & (greater(cardinality_at_time(X,T),zero) -> X = efficient_producers | X = first_movers) -> number_of_organizations(E,T) = sum(cardinality_at_time(first_movers,T),cardinality_at_time(efficient_producers,T)))) # label(mp_only_members) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  4 (all E all T (environment(E) & in_environment(E,T) -> subpopulation(first_movers,E,T) & subpopulation(efficient_producers,E,T))) # label(mp_FM_and_EP_organisational) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  5 (all A all B all C (A = sum(B,C) & constant(A) -> constant(B) & constant(C) | increases(B) & decreases(C) | decreases(B) & increases(C))) # label(mp_abc_sum_increase) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  6 (all X all E all T (environment(E) & in_environment(E,T) & subpopulation(X,E,T) & greater(cardinality_at_time(X,T),zero) -> (constant(cardinality_at_time(X,T)) -> growth_rate(X,T) = zero) & (increases(cardinality_at_time(X,T)) -> greater(growth_rate(X,T),zero)) & (decreases(cardinality_at_time(X,T)) -> greater(zero,growth_rate(X,T))))) # label(mp_growth_rate) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  7 (all E all T (environment(E) & subpopulations(first_movers,efficient_producers,E,T) -> greater(cardinality_at_time(first_movers,T),zero) & greater(cardinality_at_time(efficient_producers,T),zero))) # label(mp_positive_number_of_organizations) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  8 (all X all Y -(greater(X,Y) & X = Y)) # label(mp6_1) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  9 (all X all Y -(greater(X,Y) & greater(Y,X))) # label(mp6_2) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  10 (all X all Y all Z (greater(X,Y) & greater(Y,Z) -> greater(X,Z))) # label(mp_greater_transitivity) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  11 (all E all T1 all T2 (in_environment(E,T1) & in_environment(E,T2) -> greater(T2,T1) | T2 = T1 | greater(T1,T2))) # label(mp_times_in_environment) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  12 (all X all Y (greater_or_equal(X,Y) <-> greater(X,Y) | X = Y)) # label(mp_greater_or_equal) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  13 (all E all T (environment(E) & greater_or_equal(T,equilibrium(E)) -> -greater(equilibrium(E),T))) # label(mp_equilibrium) # label(axiom) # label(non_clause).  [assumption].
% 0.43/1.04  14 (all E all S1 all S2 all T (environment(E) & subpopulations(S1,S2,E,T) -> (greater_or_equal(growth_rate(S2,T),zero) & greater(zero,growth_rate(S1,T)) <-> outcompetes(S2,S1,T)))) # label(d2) # label(hypothesis) # label(non_clause).  [assumption].
% 0.43/1.04  15 (all E all T (environment(E) & in_environment(E,T) & greater(number_of_organizations(E,T),zero) -> (greater(equilibrium(E),T) -> decreases(resources(E,T))) & (-greater(equilibrium(E),T) -> constant(resources(E,T))))) # label(a4) # label(hypothesis) # label(non_clause).  [assumption].
% 0.43/1.04  16 (all E (environment(E) & stable(E) -> (exists T (in_environment(E,T) & greater_or_equal(T,equilibrium(E)))))) # label(a5) # label(hypothesis) # label(non_clause).  [assumption].
% 0.43/1.04  17 (all E all T (environment(E) & in_environment(E,T) -> (decreases(resources(E,T)) -> -decreases(number_of_organizations(E,T))) & (constant(resources(E,T)) -> constant(number_of_organizations(E,T))))) # label(a7) # label(hypothesis) # label(non_clause).  [assumption].
% 0.43/1.04  18 (all E all X all T (environment(E) & subpopulation(X,E,T) & greater(cardinality_at_time(X,T),zero) -> X = efficient_producers | X = first_movers)) # label(a11) # label(hypothesis) # label(non_clause).  [assumption].
% 0.43/1.04  19 (all E (environment(E) & stable(E) -> (exists To (in_environment(E,To) & (all T (subpopulations(first_movers,efficient_producers,E,T) & greater_or_equal(T,To) -> greater(growth_rate(efficient_producers,T),growth_rate(first_movers,T)))))))) # label(l1) # label(hypothesis) # label(non_clause).  [assumption].
% 0.43/1.04  20 -(all E (environment(E) & stable(E) -> (exists To (in_environment(E,To) & (all T (subpopulations(first_movers,efficient_producers,E,T) & greater_or_equal(T,To) -> outcompetes(efficient_producers,first_movers,T))))))) # label(prove_t4) # label(negated_conjecture) # label(non_clause).  [assumption].
% 0.43/1.04  
% 0.43/1.04  ============================== end of process non-clausal formulas ===
% 0.43/1.04  
% 0.43/1.04  ============================== PROCESS INITIAL CLAUSES ===============
% 0.43/1.04  
% 0.43/1.04  ============================== PREDICATE ELIMINATION =================
% 0.43/1.04  21 -environment(A) | -greater_or_equal(B,equilibrium(A)) | -greater(equilibrium(A),B) # label(mp_equilibrium) # label(axiom).  [clausify(13)].
% 0.43/1.04  22 environment(c1) # label(prove_t4) # label(negated_conjecture).  [clausify(20)].
% 0.43/1.04  Derived: -greater_or_equal(A,equilibrium(c1)) | -greater(equilibrium(c1),A).  [resolve(21,a,22,a)].
% 0.43/1.04  23 -environment(A) | -in_environment(A,B) | -decreases(resources(A,B)) | -decreases(number_of_organizations(A,B)) # label(a7) # label(hypothesis).  [clausify(17)].
% 0.43/1.04  Derived: -in_environment(c1,A) | -decreases(resources(c1,A)) | -decreases(number_of_organizations(c1,A)).  [resolve(23,a,22,a)].
% 0.43/1.04  24 -environment(A) | -stable(A) | in_environment(A,f1(A)) # label(a5) # label(hypothesis).  [clausify(16)].
% 0.43/1.04  Derived: -stable(c1) | in_environment(c1,f1(c1)).  [resolve(24,a,22,a)].
% 0.43/1.04  25 -environment(A) | -stable(A) | in_environment(A,f2(A)) # label(l1) # label(hypothesis).  [clausify(19)].
% 0.43/1.04  Derived: -stable(c1) | in_environment(c1,f2(c1)).  [resolve(25,a,22,a)].
% 0.43/1.04  26 -environment(A) | -in_environment(A,B) | subpopulation(first_movers,A,B) # label(mp_FM_and_EP_organisational) # label(axiom).  [clausify(4)].
% 0.43/1.04  Derived: -in_environment(c1,A) | subpopulation(first_movers,c1,A).  [resolve(26,a,22,a)].
% 0.43/1.04  27 -environment(A) | -in_environment(A,B) | subpopulation(efficient_producers,A,B) # label(mp_FM_and_EP_organisational) # label(axiom).  [clausify(4)].
% 0.43/1.04  Derived: -in_environment(c1,A) | subpopulation(efficient_producers,c1,A).  [resolve(27,a,22,a)].
% 0.43/1.04  28 -environment(A) | -stable(A) | greater_or_equal(f1(A),equilibrium(A)) # label(a5) # label(hypothesis).  [clausify(16)].
% 0.43/1.04  Derived: -stable(c1) | greater_or_equal(f1(c1),equilibrium(c1)).  [resolve(28,a,22,a)].
% 0.43/1.04  29 -environment(A) | -subpopulations(first_movers,efficient_producers,A,B) | in_environment(A,B) # label(mp_time_point_in_environment) # label(axiom).  [clausify(1)].
% 0.43/1.04  Derived: -subpopulations(first_movers,efficient_producers,c1,A) | in_environment(c1,A).  [resolve(29,a,22,a)].
% 0.43/1.04  30 -environment(A) | -subpopulations(first_movers,efficient_producers,A,B) | greater(number_of_organizations(A,B),zero) # label(mp_environment_not_empty) # label(axiom).  [clausify(2)].
% 0.43/1.04  Derived: -subpopulations(first_movers,efficient_producers,c1,A) | greater(number_of_organizations(c1,A),zero).  [resolve(30,a,22,a)].
% 0.43/1.04  31 -environment(A) | -subpopulations(first_movers,efficient_producers,A,B) | greater(cardinality_at_time(first_movers,B),zero) # label(mp_positive_number_of_organizations) # label(axiom).  [clausify(7)].
% 0.43/1.04  Derived: -subpopulations(first_movers,efficient_producers,c1,A) | greater(cardinality_at_time(first_movers,A),zero).  [resolve(31,a,22,a)].
% 0.43/1.04  32 -environment(A) | -subpopulations(first_movers,efficient_producers,A,B) | greater(cardinality_at_time(efficient_producers,B),zero) # label(mp_positive_number_of_organizations) # label(axiom).  [clausify(7)].
% 0.43/1.04  Derived: -subpopulations(first_movers,efficient_producers,c1,A) | greater(cardinality_at_time(efficient_producers,A),zero).  [resolve(32,a,22,a)].
% 0.43/1.04  33 -environment(A) | -in_environment(A,B) | -constant(resources(A,B)) | constant(number_of_organizations(A,B)) # label(a7) # label(hypothesis).  [clausify(17)].
% 0.43/1.04  Derived: -in_environment(c1,A) | -constant(resources(c1,A)) | constant(number_of_organizations(c1,A)).  [resolve(33,a,22,a)].
% 0.43/1.04  34 -environment(A) | -subpopulations(B,C,A,D) | greater_or_equal(growth_rate(C,D),zero) | -outcompetes(C,B,D) # label(d2) # label(hypothesis).  [clausify(14)].
% 0.43/1.04  Derived: -subpopulations(A,B,c1,C) | greater_or_equal(growth_rate(B,C),zero) | -outcompetes(B,A,C).  [resolve(34,a,22,a)].
% 0.43/1.04  35 -environment(A) | -subpopulations(B,C,A,D) | greater(zero,growth_rate(B,D)) | -outcompetes(C,B,D) # label(d2) # label(hypothesis).  [clausify(14)].
% 0.43/1.04  Derived: -subpopulations(A,B,c1,C) | greater(zero,growth_rate(A,C)) | -outcompetes(B,A,C).  [resolve(35,a,22,a)].
% 0.43/1.04  36 -environment(A) | -subpopulation(B,A,C) | -greater(cardinality_at_time(B,C),zero) | B = efficient_producers | B = first_movers # label(a11) # label(hypothesis).  [clausify(18)].
% 0.43/1.04  Derived: -subpopulation(A,c1,B) | -greater(cardinality_at_time(A,B),zero) | A = efficient_producers | A = first_movers.  [resolve(36,a,22,a)].
% 0.43/1.04  37 -environment(A) | -in_environment(A,B) | -greater(number_of_organizations(A,B),zero) | -greater(equilibrium(A),B) | decreases(resources(A,B)) # label(a4) # label(hypothesis).  [clausify(15)].
% 0.43/1.04  Derived: -in_environment(c1,A) | -greater(number_of_organizations(c1,A),zero) | -greater(equilibrium(c1),A) | decreases(resources(c1,A)).  [resolve(37,a,22,a)].
% 0.43/1.04  38 -environment(A) | -in_environment(A,B) | -greater(number_of_organizations(A,B),zero) | greater(equilibrium(A),B) | constant(resources(A,B)) # label(a4) # label(hypothesis).  [clausify(15)].
% 0.43/1.04  Derived: -in_environment(c1,A) | -greater(number_of_organizations(c1,A),zero) | greater(equilibrium(c1),A) | constant(resources(c1,A)).  [resolve(38,a,22,a)].
% 0.43/1.04  39 -environment(A) | -subpopulation(B,A,C) | B != efficient_producers | sum(cardinality_at_time(first_movers,C),cardinality_at_time(efficient_producers,C)) = number_of_organizations(A,C) # label(mp_only_members) # label(axiom).  [clausify(3)].
% 0.43/1.04  Derived: -subpopulation(A,c1,B) | A != efficient_producers | sum(cardinality_at_time(first_movers,B),cardinality_at_time(efficient_producers,B)) = number_of_organizations(c1,B).  [resolve(39,a,22,a)].
% 0.43/1.04  40 -environment(A) | -subpopulation(B,A,C) | B != first_movers | sum(cardinality_at_time(first_movers,C),cardinality_at_time(efficient_producers,C)) = number_of_organizations(A,C) # label(mp_only_members) # label(axiom).  [clausify(3)].
% 2.53/2.88  Derived: -subpopulation(A,c1,B) | A != first_movers | sum(cardinality_at_time(first_movers,B),cardinality_at_time(efficient_producers,B)) = number_of_organizations(c1,B).  [resolve(40,a,22,a)].
% 2.53/2.88  41 -environment(A) | -stable(A) | -subpopulations(first_movers,efficient_producers,A,B) | -greater_or_equal(B,f2(A)) | greater(growth_rate(efficient_producers,B),growth_rate(first_movers,B)) # label(l1) # label(hypothesis).  [clausify(19)].
% 2.53/2.88  Derived: -stable(c1) | -subpopulations(first_movers,efficient_producers,c1,A) | -greater_or_equal(A,f2(c1)) | greater(growth_rate(efficient_producers,A),growth_rate(first_movers,A)).  [resolve(41,a,22,a)].
% 2.53/2.88  42 -environment(A) | -subpopulations(B,C,A,D) | -greater_or_equal(growth_rate(C,D),zero) | -greater(zero,growth_rate(B,D)) | outcompetes(C,B,D) # label(d2) # label(hypothesis).  [clausify(14)].
% 2.53/2.88  Derived: -subpopulations(A,B,c1,C) | -greater_or_equal(growth_rate(B,C),zero) | -greater(zero,growth_rate(A,C)) | outcompetes(B,A,C).  [resolve(42,a,22,a)].
% 2.53/2.88  43 -environment(A) | -subpopulation(B,A,C) | greater(cardinality_at_time(B,C),zero) | sum(cardinality_at_time(first_movers,C),cardinality_at_time(efficient_producers,C)) = number_of_organizations(A,C) # label(mp_only_members) # label(axiom).  [clausify(3)].
% 2.53/2.88  Derived: -subpopulation(A,c1,B) | greater(cardinality_at_time(A,B),zero) | sum(cardinality_at_time(first_movers,B),cardinality_at_time(efficient_producers,B)) = number_of_organizations(c1,B).  [resolve(43,a,22,a)].
% 2.53/2.88  44 -environment(A) | -in_environment(A,B) | -subpopulation(C,A,B) | -greater(cardinality_at_time(C,B),zero) | -constant(cardinality_at_time(C,B)) | growth_rate(C,B) = zero # label(mp_growth_rate) # label(axiom).  [clausify(6)].
% 2.53/2.88  Derived: -in_environment(c1,A) | -subpopulation(B,c1,A) | -greater(cardinality_at_time(B,A),zero) | -constant(cardinality_at_time(B,A)) | growth_rate(B,A) = zero.  [resolve(44,a,22,a)].
% 2.53/2.88  45 -environment(A) | -in_environment(A,B) | -subpopulation(C,A,B) | -greater(cardinality_at_time(C,B),zero) | -increases(cardinality_at_time(C,B)) | greater(growth_rate(C,B),zero) # label(mp_growth_rate) # label(axiom).  [clausify(6)].
% 2.53/2.88  Derived: -in_environment(c1,A) | -subpopulation(B,c1,A) | -greater(cardinality_at_time(B,A),zero) | -increases(cardinality_at_time(B,A)) | greater(growth_rate(B,A),zero).  [resolve(45,a,22,a)].
% 2.53/2.88  46 -environment(A) | -in_environment(A,B) | -subpopulation(C,A,B) | -greater(cardinality_at_time(C,B),zero) | -decreases(cardinality_at_time(C,B)) | greater(zero,growth_rate(C,B)) # label(mp_growth_rate) # label(axiom).  [clausify(6)].
% 2.53/2.88  Derived: -in_environment(c1,A) | -subpopulation(B,c1,A) | -greater(cardinality_at_time(B,A),zero) | -decreases(cardinality_at_time(B,A)) | greater(zero,growth_rate(B,A)).  [resolve(46,a,22,a)].
% 2.53/2.88  
% 2.53/2.88  ============================== end predicate elimination =============
% 2.53/2.88  
% 2.53/2.88  Auto_denials:  (non-Horn, no changes).
% 2.53/2.88  
% 2.53/2.88  Term ordering decisions:
% 2.53/2.88  Function symbol KB weights:  zero=1. efficient_producers=1. first_movers=1. c1=1. cardinality_at_time=1. sum=1. growth_rate=1. number_of_organizations=1. resources=1. equilibrium=1. f1=1. f2=1. f3=1.
% 2.53/2.88  
% 2.53/2.88  ============================== end of process initial clauses ========
% 2.53/2.88  
% 2.53/2.88  ============================== CLAUSES FOR SEARCH ====================
% 2.53/2.88  
% 2.53/2.88  ============================== end of clauses for search =============
% 2.53/2.88  
% 2.53/2.88  ============================== SEARCH ================================
% 2.53/2.88  
% 2.53/2.88  % Starting search at 0.02 seconds.
% 2.53/2.88  
% 2.53/2.88  NOTE: Back_subsumption disabled, ratio of kept to back_subsumed is 50 (0.00 of 0.11 sec).
% 2.53/2.88  
% 2.53/2.88  Low Water (keep): wt=104.000, iters=3745
% 2.53/2.88  
% 2.53/2.88  Low Water (keep): wt=80.000, iters=3529
% 2.53/2.88  
% 2.53/2.88  Low Water (keep): wt=77.000, iters=3480
% 2.53/2.88  
% 2.53/2.88  Low Water (keep): wt=75.000, iters=3904
% 2.53/2.88  
% 2.53/2.88  Low Water (keep): wt=72.000, iters=3834
% 2.53/2.88  
% 2.53/2.88  Low Water (keep): wt=69.000, iters=3739
% 2.53/2.88  
% 2.53/2.88  Low Water (keep): wt=66.000, iters=3625
% 2.53/2.88  
% 2.53/2.88  Low Water (keep): wt=63.000, iters=3506
% 2.53/2.88  
% 2.53/2.88  Low Water (keep): wt=57.000, iters=3594
% 2.53/2.88  
% 2.53/2.88  Low Water (keep): Cputime limit exceeded (core dumped)
%------------------------------------------------------------------------------