TSTP Solution File: HEN008-2 by Geo-III---2018C

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Geo-III---2018C
% Problem  : HEN008-2 : TPTP v8.1.0. Released v1.0.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : geo -tptp_input -nonempty -inputfile %s

% Computer : n005.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  : 300s
% DateTime : Sat Jul 23 06:04:43 EDT 2022

% Result   : Unsatisfiable 6.96s 7.17s
% Output   : Refutation 6.96s
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.11/0.11  % Problem  : HEN008-2 : TPTP v8.1.0. Released v1.0.0.
% 0.11/0.12  % Command  : geo -tptp_input -nonempty -inputfile %s
% 0.12/0.33  % Computer : n005.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  : 300
% 0.12/0.33  % DateTime : Fri Jul 22 21:03:05 EDT 2022
% 0.12/0.33  % CPUTime  : 
% 6.96/7.17  GeoParameters:
% 6.96/7.17  
% 6.96/7.17  tptp_input =     1
% 6.96/7.17  tptp_output =    0
% 6.96/7.17  nonempty =       1
% 6.96/7.17  inputfile =      /export/starexec/sandbox2/benchmark/theBenchmark.p
% 6.96/7.17  includepath =    /export/starexec/sandbox2/solver/bin/../../benchmark/
% 6.96/7.17  
% 6.96/7.17  
% 6.96/7.17  % SZS status Unsatisfiable for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 6.96/7.17  % SZS output start Refutation for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 6.96/7.17  
% 6.96/7.17  RuleSystem INPUT:
% 6.96/7.17  
% 6.96/7.17  Initial Rules:
% 6.96/7.17  #0: input, references = 6, size of lhs = 2:
% 6.96/7.17     P_zero-{F}(V0), less_equal-{F}(V1,V2) | quotient-{T}(V1,V2,V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #1: input, references = 5, size of lhs = 2:
% 6.96/7.17     P_zero-{F}(V0), quotient-{F}(V1,V2,V0) | less_equal-{T}(V1,V2)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #2: input, references = 5, size of lhs = 2:
% 6.96/7.17     P_zero-{F}(V0), quotient-{F}(V1,V3,V2) | less_equal-{T}(V2,V1)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #3: input, references = 6, size of lhs = 6:
% 6.96/7.17     P_zero-{F}(V0), quotient-{F}(V3,V4,V1), quotient-{F}(V5,V6,V2), quotient-{F}(V7,V6,V4), quotient-{F}(V8,V7,V5), quotient-{F}(V8,V6,V3) | less_equal-{T}(V1,V2)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #4: input, references = 8, size of lhs = 2:
% 6.96/7.17     P_zero-{F}(V0), #-{F} V1 | less_equal-{T}(V0,V1)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #5: input, references = 8, size of lhs = 4:
% 6.96/7.17     P_zero-{F}(V0), less_equal-{F}(V1,V2), less_equal-{F}(V2,V1), V1 == V2 | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #6: input, references = 4, size of lhs = 3:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), #-{F} V2 | less_equal-{T}(V2,V1)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #7: input, references = 10, size of lhs = 3:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_divide-{F}(V2,V3,V4) | quotient-{T}(V2,V3,V4)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #8: input, references = 6, size of lhs = 5:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), quotient-{F}(V5,V4,V2), quotient-{F}(V5,V4,V3), V2 == V3 | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #9: input, references = 3, size of lhs = 3:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), #-{F} V2 | quotient-{T}(V2,V1,V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #10: input, references = 3, size of lhs = 3:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), #-{F} V2 | quotient-{T}(V0,V2,V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #11: input, references = 5, size of lhs = 3:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), #-{F} V2 | quotient-{T}(V2,V2,V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #12: input, references = 5, size of lhs = 3:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), #-{F} V2 | quotient-{T}(V2,V0,V2)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #13: input, references = 4, size of lhs = 4:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), less_equal-{F}(V2,V3), less_equal-{F}(V4,V2) | less_equal-{T}(V4,V3)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #14: input, references = 4, size of lhs = 5:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), less_equal-{F}(V3,V2), quotient-{F}(V6,V5,V3), quotient-{F}(V6,V2,V4) | less_equal-{T}(V4,V5)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #15: input, references = 4, size of lhs = 5:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), quotient-{F}(V4,V5,V2), less_equal-{F}(V6,V5), quotient-{F}(V4,V6,V3) | less_equal-{T}(V2,V3)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #16: input, references = 5, size of lhs = 4:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2), P_b-{F}(V3) | less_equal-{T}(V2,V3)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #17: input, references = 6, size of lhs = 6:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2), P_b-{F}(V3), P_c-{F}(V4), P_aQc-{F}(V5) | quotient-{T}(V2,V4,V5)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #18: input, references = 5, size of lhs = 7:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2), P_b-{F}(V3), P_c-{F}(V4), P_aQc-{F}(V5), P_bQc-{F}(V6) | quotient-{T}(V3,V4,V6)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #19: input, references = 6, size of lhs = 8:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2), P_b-{F}(V3), P_c-{F}(V4), P_aQc-{F}(V5), P_bQc-{F}(V6), less_equal-{F}(V5,V6) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #20: input, references = 4, size of lhs = 0:
% 6.96/7.17     FALSE | EXISTS V0: P_zero-{T}(V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #21: input, references = 4, size of lhs = 0:
% 6.96/7.17     FALSE | EXISTS V0: P_identity-{T}(V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #22: input, references = 8, size of lhs = 2:
% 6.96/7.17     #-{F} V0, #-{F} V1 | EXISTS V2: P_divide-{T}(V0,V1,V2)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #23: input, references = 4, size of lhs = 0:
% 6.96/7.17     FALSE | EXISTS V0: P_a-{T}(V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #24: input, references = 6, size of lhs = 0:
% 6.96/7.17     FALSE | EXISTS V0: P_b-{T}(V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #25: input, references = 6, size of lhs = 0:
% 6.96/7.17     FALSE | EXISTS V0: P_c-{T}(V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #26: input, references = 6, size of lhs = 0:
% 6.96/7.17     FALSE | EXISTS V0: P_aQc-{T}(V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #27: input, references = 6, size of lhs = 0:
% 6.96/7.17     FALSE | EXISTS V0: P_bQc-{T}(V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  number of initial rules = 28
% 6.96/7.17  
% 6.96/7.17  Simplifiers:
% 6.96/7.17  #28: unsound, references = 3, size of lhs = 3:
% 6.96/7.17     P_zero-{F}(V0), P_zero-{F}(V1), V0 == V1 | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #29: unsound, references = 3, size of lhs = 3:
% 6.96/7.17     P_identity-{F}(V0), P_identity-{F}(V1), V0 == V1 | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #30: unsound, references = 3, size of lhs = 3:
% 6.96/7.17     P_divide-{F}(V0,V1,V2), P_divide-{F}(V0,V1,V5), V2 == V5 | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #31: unsound, references = 3, size of lhs = 3:
% 6.96/7.17     P_a-{F}(V0), P_a-{F}(V1), V0 == V1 | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #32: unsound, references = 3, size of lhs = 3:
% 6.96/7.17     P_b-{F}(V0), P_b-{F}(V1), V0 == V1 | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #33: unsound, references = 3, size of lhs = 3:
% 6.96/7.17     P_c-{F}(V0), P_c-{F}(V1), V0 == V1 | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #34: unsound, references = 3, size of lhs = 3:
% 6.96/7.17     P_aQc-{F}(V0), P_aQc-{F}(V1), V0 == V1 | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #35: unsound, references = 3, size of lhs = 3:
% 6.96/7.17     P_bQc-{F}(V0), P_bQc-{F}(V1), V0 == V1 | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  number of simplifiers = 8
% 6.96/7.17  
% 6.96/7.17  Learnt:
% 6.96/7.17  #41: mergings( V1 == V2; #39 ), references = 2, size of lhs = 6:
% 6.96/7.17     P_aQc-{F}(V0), P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2), P_b-{F}(V3), P_c-{F}(V4) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #46: mergings( V1 == V6, V2 == V7; #43 ), references = 2, size of lhs = 6:
% 6.96/7.17     P_a-{F}(V0), P_b-{F}(V1), P_c-{F}(V2), P_zero-{F}(V3), P_identity-{F}(V4), quotient-{F}(V0,V2,V5) | P_aQc-{T}(V5)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #52: mergings( V1 == V7, V2 == V8; #49 ), references = 2, size of lhs = 7:
% 6.96/7.17     P_a-{F}(V0), P_b-{F}(V1), P_c-{F}(V2), P_aQc-{F}(V3), P_zero-{F}(V4), P_identity-{F}(V5), quotient-{F}(V1,V2,V6) | P_bQc-{T}(V6)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #73: mergings( V2 == V3, V3 == V9, V9 == V11, V1 == V4, V4 == V10, V10 == V12, V5 == V7, V7 == V13, V13 == V6, V6 == V14, V8 == V15; #61 ), references = 1, size of lhs = 5:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2), P_b-{F}(V2), P_c-{F}(V3) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #85: mergings( V2 == V3, V3 == V8, V8 == V10, V1 == V4, V4 == V9, V9 == V11, V5 == V7, V7 == V12, V12 == V6, V6 == V13; #74 ), references = 1, size of lhs = 4:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2), P_b-{F}(V2) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #92: mergings( V1 == V3, V3 == V5, V2 == V4; #88 ), references = 1, size of lhs = 3:
% 6.96/7.17     P_a-{F}(V0), P_identity-{F}(V0), P_zero-{F}(V1) | P_b-{T}(V0)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #104: mergings( V1 == V3, V3 == V5, V4 == V6, V5 == V7, V2 == V8; #98 ), references = 1, size of lhs = 4:
% 6.96/7.17     P_zero-{F}(V0), P_a-{F}(V0), P_identity-{F}(V1), P_b-{F}(V2) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #110: mergings( V1 == V2, V2 == V4, V3 == V5, V4 == V6; #105 ), references = 1, size of lhs = 3:
% 6.96/7.17     P_zero-{F}(V0), P_a-{F}(V0), P_identity-{F}(V1) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #124: mergings( V3 == V5, V4 == V6; #121 ), references = 1, size of lhs = 3:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), quotient-{F}(V2,V3,V4) | P_divide-{T}(V2,V3,V4)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #155: mergings( V3 == V4, V4 == V6, V6 == V8, V8 == V9, V5 == V7; #149 ), references = 1, size of lhs = 5:
% 6.96/7.17     P_identity-{F}(V0), P_zero-{F}(V1), quotient-{F}(V2,V3,V1), quotient-{F}(V4,V3,V1), quotient-{F}(V5,V2,V4) | P_divide-{T}(V5,V3,V1)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #179: mergings( V3 == V5, V5 == V6, V6 == V7; #175 ), references = 2, size of lhs = 6:
% 6.96/7.17     P_identity-{F}(V0), P_zero-{F}(V1), quotient-{F}(V2,V3,V4), quotient-{F}(V5,V2,V6), quotient-{F}(V5,V3,V7), quotient-{F}(V7,V4,V6) | P_divide-{T}(V6,V3,V6)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #229: mergings( V3 == V5, V5 == V7, V7 == V9, V4 == V6, V6 == V8; #223 ), references = 1, size of lhs = 6:
% 6.96/7.17     P_identity-{F}(V0), P_zero-{F}(V1), less_equal-{F}(V2,V3), less_equal-{F}(V4,V2), quotient-{F}(V5,V3,V6), quotient-{F}(V5,V6,V4) | P_divide-{T}(V5,V2,V6)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #305: mergings( V3 == V4, V4 == V6, V6 == V7; #301 ), references = 1, size of lhs = 6:
% 6.96/7.17     P_identity-{F}(V0), P_zero-{F}(V1), quotient-{F}(V2,V3,V1), quotient-{F}(V4,V3,V5), quotient-{F}(V6,V4,V2), quotient-{F}(V6,V3,V7) | P_divide-{T}(V7,V5,V1)
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #324: mergings( V1 == V7, V7 == V9, V9 == V10, V10 == V11, V11 == V13, V13 == V14, V2 == V8, V8 == V12, V12 == V15, V3 == V16, V4 == V17, V5 == V18, V6 == V19; #310 ), references = 1, size of lhs = 9:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2), P_b-{F}(V3), P_c-{F}(V4), P_aQc-{F}(V5), quotient-{F}(V6,V4,V5), quotient-{F}(V6,V3,V7), quotient-{F}(V7,V4,V0) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #359: mergings( V1 == V3, V3 == V7, V7 == V8, V8 == V10, V10 == V12, V12 == V13, V13 == V15, V15 == V20, V20 == V22, V22 == V23, V23 == V24, V24 == V26, V26 == V27, V2 == V4, V4 == V9, V9 == V11, V11 == V14, V14 == V16, V16 == V21, V21 == V25, V25 == V28, V5 == V17, V17 == V29, V6 == V18, V18 == V30, V19 == V31; #332 ), references = 1, size of lhs = 8:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2), less_equal-{F}(V2,V3), P_b-{F}(V3), P_c-{F}(V4), quotient-{F}(V4,V4,V0), quotient-{F}(V0,V4,V0) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #390: mergings( V2 == V4, V4 == V8, V8 == V9, V9 == V11, V11 == V13, V13 == V14, V14 == V16, V16 == V20, V20 == V22, V22 == V23, V23 == V24, V24 == V26, V26 == V27, V1 == V3, V3 == V5, V5 == V10, V10 == V12, V12 == V15, V15 == V17, V17 == V21, V21 == V25, V25 == V28, V6 == V18, V18 == V29, V7 == V19, V19 == V30; #363 ), references = 1, size of lhs = 5:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2), less_equal-{F}(V2,V3), P_b-{F}(V3) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #419: mergings( V1 == V4, V4 == V6, V6 == V9, V9 == V10, V10 == V12, V12 == V14, V14 == V15, V15 == V17, V17 == V20, V20 == V22, V22 == V23, V23 == V24, V24 == V26, V26 == V27, V2 == V3, V3 == V5, V5 == V7, V7 == V11, V11 == V13, V13 == V16, V16 == V18, V18 == V21, V21 == V25, V25 == V28, V8 == V19, V19 == V29; #392 ), references = 1, size of lhs = 3:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1), P_a-{F}(V2) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #445: mergings( V1 == V4, V4 == V6, V6 == V8, V8 == V9, V9 == V11, V11 == V13, V13 == V14, V14 == V16, V16 == V18, V18 == V20, V20 == V21, V21 == V22, V22 == V24, V24 == V25, V2 == V3, V3 == V5, V5 == V7, V7 == V10, V10 == V12, V12 == V15, V15 == V17, V17 == V19, V19 == V23, V23 == V26; #420 ), references = 1, size of lhs = 2:
% 6.96/7.17     P_zero-{F}(V0), P_identity-{F}(V1) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #461: mergings( V1 == V2, V2 == V3, V3 == V4, V4 == V5, V5 == V6, V6 == V7, V7 == V8, V8 == V9, V9 == V10, V10 == V11, V11 == V12, V12 == V13, V13 == V14, V14 == V15; #446 ), references = 1, size of lhs = 1:
% 6.96/7.17     P_zero-{F}(V0) | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  #463: exists( #20, #446 ), references = 1, size of lhs = 0:
% 6.96/7.17     FALSE | FALSE
% 6.96/7.17        (used 0 times, uses = {})
% 6.96/7.17  
% 6.96/7.17  number of learnt formulas = 20
% 6.96/7.17  
% 6.96/7.17  
% 6.96/7.17  % SZS output end Refutation for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 6.96/7.17  
% 6.96/7.17  randbase = 1
%------------------------------------------------------------------------------