TSTP Solution File: SEU130+1 by Geo-III---2018C

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Geo-III---2018C
% Problem  : SEU130+1 : TPTP v8.1.0. Released v3.3.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : geo -tptp_input -nonempty -inputfile %s

% Computer : n029.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:17:16 EDT 2022

% Result   : Theorem 1.13s 1.34s
% Output   : Refutation 1.13s
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.11/0.12  % Problem  : SEU130+1 : TPTP v8.1.0. Released v3.3.0.
% 0.11/0.12  % Command  : geo -tptp_input -nonempty -inputfile %s
% 0.12/0.33  % Computer : n029.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 19:31:41 EDT 2022
% 0.12/0.33  % CPUTime  : 
% 1.13/1.34  GeoParameters:
% 1.13/1.34  
% 1.13/1.34  tptp_input =     1
% 1.13/1.34  tptp_output =    0
% 1.13/1.34  nonempty =       1
% 1.13/1.34  inputfile =      /export/starexec/sandbox2/benchmark/theBenchmark.p
% 1.13/1.34  includepath =    /export/starexec/sandbox2/solver/bin/../../benchmark/
% 1.13/1.34  
% 1.13/1.34  
% 1.13/1.34  % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 1.13/1.34  % SZS output start Refutation for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 1.13/1.34  
% 1.13/1.34  RuleSystem INPUT:
% 1.13/1.34  
% 1.13/1.34  Initial Rules:
% 1.13/1.34  #0: input, references = 5, size of lhs = 2:
% 1.13/1.34     in-{F}(V0,V1), in-{F}(V1,V0) | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #1: input, references = 4, size of lhs = 3:
% 1.13/1.34     P_set_intersection2-{F}(V0,V1,V2), P_set_intersection2-{F}(V1,V0,V3), V2 == V3 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #2: input, references = 3, size of lhs = 1:
% 1.13/1.34     #-{F} V1 | pppp0-{T}(V1,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #3: input, references = 4, size of lhs = 2:
% 1.13/1.34     pppp0-{F}(V0,V1), V0 == V1 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #4: input, references = 3, size of lhs = 1:
% 1.13/1.34     pppp0-{F}(V0,V1) | subset-{T}(V0,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #5: input, references = 3, size of lhs = 1:
% 1.13/1.34     pppp0-{F}(V0,V1) | subset-{T}(V1,V0)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #6: input, references = 4, size of lhs = 2:
% 1.13/1.34     subset-{F}(V0,V1), subset-{F}(V1,V0) | pppp0-{T}(V0,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #7: input, references = 4, size of lhs = 1:
% 1.13/1.34     subset-{F}(V0,V1) | pppp1-{T}(V0,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #8: input, references = 4, size of lhs = 1:
% 1.13/1.34     pppp1-{F}(V0,V1) | subset-{T}(V0,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #9: input, references = 7, size of lhs = 2:
% 1.13/1.34     pppp1-{F}(V0,V1), in-{F}(V2,V0) | in-{T}(V2,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #10: input, references = 6, size of lhs = 2:
% 1.13/1.34     #-{F} V0, #-{F} V1 | pppp1-{T}(V0,V1), pppp10-{T}(V0,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #11: input, references = 4, size of lhs = 1:
% 1.13/1.34     pppp10-{F}(V0,V1) | EXISTS V2: pppp4-{T}(V0,V1,V2)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #12: input, references = 4, size of lhs = 2:
% 1.13/1.34     pppp4-{F}(V0,V1,V2), in-{F}(V2,V1) | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #13: input, references = 4, size of lhs = 1:
% 1.13/1.34     pppp4-{F}(V0,V1,V2) | in-{T}(V2,V0)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #14: input, references = 5, size of lhs = 1:
% 1.13/1.34     P_set_intersection2-{F}(V0,V1,V3) | pppp3-{T}(V0,V1,V3)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #15: input, references = 3, size of lhs = 3:
% 1.13/1.34     P_set_intersection2-{F}(V0,V1,V3), pppp3-{F}(V0,V1,V2), V2 == V3 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #16: input, references = 3, size of lhs = 2:
% 1.13/1.34     pppp3-{F}(V0,V1,V2), in-{F}(V3,V2) | pppp2-{T}(V0,V1,V3)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #17: input, references = 4, size of lhs = 2:
% 1.13/1.34     pppp3-{F}(V0,V1,V2), pppp2-{F}(V0,V1,V3) | in-{T}(V3,V2)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #18: input, references = 4, size of lhs = 3:
% 1.13/1.34     #-{F} V0, #-{F} V1, #-{F} V2 | pppp3-{T}(V0,V1,V2), pppp11-{T}(V0,V1,V2)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #19: input, references = 3, size of lhs = 1:
% 1.13/1.34     pppp11-{F}(V0,V1,V2) | EXISTS V3: pppp5-{T}(V0,V1,V2,V3)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #20: input, references = 6, size of lhs = 3:
% 1.13/1.34     pppp5-{F}(V0,V1,V2,V3), pppp2-{F}(V0,V1,V3), in-{F}(V3,V2) | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #21: input, references = 6, size of lhs = 1:
% 1.13/1.34     pppp5-{F}(V0,V1,V2,V3) | in-{T}(V3,V2), pppp2-{T}(V0,V1,V3)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #22: input, references = 6, size of lhs = 1:
% 1.13/1.34     pppp2-{F}(V0,V1,V2) | in-{T}(V2,V0)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #23: input, references = 5, size of lhs = 1:
% 1.13/1.34     pppp2-{F}(V0,V1,V2) | in-{T}(V2,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #24: input, references = 4, size of lhs = 2:
% 1.13/1.34     in-{F}(V2,V0), in-{F}(V2,V1) | pppp2-{T}(V0,V1,V2)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #25: input, references = 3, size of lhs = 1:
% 1.13/1.34     P_empty_set-{F}(V0) | empty-{T}(V0)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #26: input, references = 4, size of lhs = 3:
% 1.13/1.34     P_empty_set-{F}(V0), P_set_intersection2-{F}(V1,V1,V2), V2 == V1 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #27: input, references = 3, size of lhs = 1:
% 1.13/1.34     P_empty_set-{F}(V0) | EXISTS V1: pppp6-{T}(V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #28: input, references = 3, size of lhs = 1:
% 1.13/1.34     pppp6-{F}(V0) | empty-{T}(V0)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #29: input, references = 3, size of lhs = 1:
% 1.13/1.34     P_empty_set-{F}(V0) | EXISTS V1: pppp7-{T}(V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #30: input, references = 3, size of lhs = 2:
% 1.13/1.34     pppp7-{F}(V0), empty-{F}(V0) | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #31: input, references = 3, size of lhs = 2:
% 1.13/1.34     P_empty_set-{F}(V0), #-{F} V1 | subset-{T}(V1,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #32: input, references = 5, size of lhs = 2:
% 1.13/1.34     P_empty_set-{F}(V0), P_set_intersection2-{F}(V1,V2,V3) | subset-{T}(V3,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #33: input, references = 4, size of lhs = 1:
% 1.13/1.34     P_empty_set-{F}(V0) | EXISTS V1: pppp9-{T}(V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #34: input, references = 4, size of lhs = 1:
% 1.13/1.34     pppp9-{F}(V0) | EXISTS V1: pppp8-{T}(V0,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #35: input, references = 5, size of lhs = 2:
% 1.13/1.34     pppp8-{F}(V0,V1), P_set_intersection2-{F}(V0,V1,V0) | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #36: input, references = 4, size of lhs = 2:
% 1.13/1.34     pppp8-{F}(V0,V1), P_set_intersection2-{F}(V0,V1,V2) | subset-{T}(V0,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #37: input, references = 4, size of lhs = 3:
% 1.13/1.34     P_empty_set-{F}(V0), P_set_intersection2-{F}(V1,V0,V2), V2 == V0 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #38: input, references = 3, size of lhs = 3:
% 1.13/1.34     P_empty_set-{F}(V0), empty-{F}(V1), V1 == V0 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #39: input, references = 6, size of lhs = 3:
% 1.13/1.34     P_empty_set-{F}(V0), empty-{F}(V1), in-{F}(V2,V1) | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #40: input, references = 3, size of lhs = 4:
% 1.13/1.34     P_empty_set-{F}(V0), empty-{F}(V1), empty-{F}(V2), V2 == V1 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #41: input, references = 8, size of lhs = 2:
% 1.13/1.34     #-{F} V0, #-{F} V1 | EXISTS V2: P_set_intersection2-{T}(V0,V1,V2)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #42: input, references = 4, size of lhs = 0:
% 1.13/1.34     FALSE | EXISTS V0: P_empty_set-{T}(V0)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  number of initial rules = 43
% 1.13/1.34  
% 1.13/1.34  Simplifiers:
% 1.13/1.34  #43: unsound, references = 3, size of lhs = 3:
% 1.13/1.34     P_set_intersection2-{F}(V0,V1,V2), P_set_intersection2-{F}(V0,V1,V5), V2 == V5 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #44: unsound, references = 3, size of lhs = 3:
% 1.13/1.34     P_empty_set-{F}(V0), P_empty_set-{F}(V1), V0 == V1 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #45: unsound, references = 3, size of lhs = 3:
% 1.13/1.34     pppp4-{F}(V0,V1,V2), pppp4-{F}(V0,V1,V5), V2 == V5 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #46: unsound, references = 3, size of lhs = 3:
% 1.13/1.34     pppp5-{F}(V0,V1,V2,V3), pppp5-{F}(V0,V1,V2,V7), V3 == V7 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #47: unsound, references = 3, size of lhs = 3:
% 1.13/1.34     pppp6-{F}(V0), pppp6-{F}(V1), V0 == V1 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #48: unsound, references = 3, size of lhs = 3:
% 1.13/1.34     pppp7-{F}(V0), pppp7-{F}(V1), V0 == V1 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #49: unsound, references = 3, size of lhs = 3:
% 1.13/1.34     pppp8-{F}(V0,V1), pppp8-{F}(V0,V3), V1 == V3 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #50: unsound, references = 3, size of lhs = 3:
% 1.13/1.34     pppp8-{F}(V0,V1), pppp8-{F}(V2,V3), V0 == V2 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #51: unsound, references = 3, size of lhs = 3:
% 1.13/1.34     pppp9-{F}(V0), pppp9-{F}(V1), V0 == V1 | FALSE
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  number of simplifiers = 9
% 1.13/1.34  
% 1.13/1.34  Learnt:
% 1.13/1.34  #53: exists( #41, #26 ), references = 1, size of lhs = 2:
% 1.13/1.34     P_empty_set-{F}(V0), #-{F} V1 | P_set_intersection2-{T}(V1,V1,V1)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #55: exists( #41, #37 ), references = 1, size of lhs = 2:
% 1.13/1.34     P_empty_set-{F}(V0), #-{F} V1 | P_set_intersection2-{T}(V1,V0,V0)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #57: exists( #41, #1 ), references = 1, size of lhs = 1:
% 1.13/1.34     P_set_intersection2-{F}(V0,V1,V2) | P_set_intersection2-{T}(V1,V0,V2)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #59: disj( #18, input ), references = 1, size of lhs = 3:
% 1.13/1.34     P_set_intersection2-{F}(V0,V1,V2), #-{F} V3, V3 == V2 | pppp11-{T}(V0,V1,V3)
% 1.13/1.34        (used 0 times, uses = {})
% 1.13/1.34  
% 1.13/1.34  #62: disj( #21, input ), references = 1, size of lhs = 1:
% 1.13/1.34     pppp5-{F}(V0,V1,V2,V2) | pppp2-{T}(V0,V1,V2)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #63: disj( #21, input ), references = 1, size of lhs = 3:
% 1.13/1.35     P_empty_set-{F}(V0), empty-{F}(V1), pppp5-{F}(V2,V3,V1,V4) | pppp2-{T}(V2,V3,V4)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #80: disj( #21, #22+#20 ), references = 1, size of lhs = 2:
% 1.13/1.35     pppp5-{F}(V0,V1,V0,V2), pppp5-{F}(V0,V1,V3,V2) | in-{T}(V2,V3)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #81: disj( #21, #23+#39 ), references = 1, size of lhs = 3:
% 1.13/1.35     P_empty_set-{F}(V0), empty-{F}(V1), pppp5-{F}(V2,V1,V3,V4) | in-{T}(V4,V3)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #88: disj( #10, #9+#0 ), references = 1, size of lhs = 1:
% 1.13/1.35     in-{F}(V0,V1) | pppp10-{T}(V1,V0)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #89: disj( #10, #9+#20 ), references = 1, size of lhs = 3:
% 1.13/1.35     in-{F}(V0,V1), pppp2-{F}(V2,V3,V0), pppp5-{F}(V2,V3,V4,V0) | pppp10-{T}(V1,V4)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #90: disj( #10, #9+#39 ), references = 1, size of lhs = 3:
% 1.13/1.35     P_empty_set-{F}(V0), empty-{F}(V1), in-{F}(V2,V3) | pppp10-{T}(V3,V1)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #114: disj( #21, #23+#20 ), references = 1, size of lhs = 2:
% 1.13/1.35     pppp5-{F}(V0,V1,V1,V2), pppp5-{F}(V0,V1,V3,V2) | in-{T}(V2,V3)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #115: disj( #21, #22+#39 ), references = 1, size of lhs = 3:
% 1.13/1.35     P_empty_set-{F}(V0), empty-{F}(V1), pppp5-{F}(V1,V2,V3,V4) | in-{T}(V4,V3)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #116: disj( #21, #22+#0 ), references = 1, size of lhs = 2:
% 1.13/1.35     in-{F}(V0,V1), pppp5-{F}(V0,V2,V3,V1) | in-{T}(V1,V3)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #128: disj( #10, #8+#6+#3 ), references = 2, size of lhs = 2:
% 1.13/1.35     subset-{F}(V0,V1), V1 == V0 | pppp10-{T}(V1,V0)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #169: exists( #11, #167 ), references = 2, size of lhs = 3:
% 1.13/1.35     pppp10-{F}(V0,V1), pppp1-{F}(V0,V2), pppp3-{F}(V0,V2,V1) | FALSE
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #174: exists( #41, #172 ), references = 1, size of lhs = 2:
% 1.13/1.35     P_empty_set-{F}(V0), pppp1-{F}(V1,V2) | P_set_intersection2-{T}(V1,V2,V1)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #177: disj( #10, #173+#35 ), references = 1, size of lhs = 2:
% 1.13/1.35     P_empty_set-{F}(V0), pppp8-{F}(V1,V2) | pppp10-{T}(V1,V2)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #189: exists( #41, #187 ), references = 1, size of lhs = 2:
% 1.13/1.35     P_empty_set-{F}(V0), pppp8-{F}(V1,V2) | P_set_intersection2-{T}(V1,V2,V1)
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #192: exists( #34, #190 ), references = 1, size of lhs = 2:
% 1.13/1.35     pppp9-{F}(V0), P_empty_set-{F}(V1) | FALSE
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #195: mergings( V0 == V2; #193 ), references = 1, size of lhs = 1:
% 1.13/1.35     P_empty_set-{F}(V0) | FALSE
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  #197: exists( #42, #193 ), references = 1, size of lhs = 0:
% 1.13/1.35     FALSE | FALSE
% 1.13/1.35        (used 0 times, uses = {})
% 1.13/1.35  
% 1.13/1.35  number of learnt formulas = 22
% 1.13/1.35  
% 1.13/1.35  
% 1.13/1.35  % SZS output end Refutation for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 1.13/1.35  
% 1.13/1.35  randbase = 1
%------------------------------------------------------------------------------