TSTP Solution File: LAT241-1 by Geo-III---2018C
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : Geo-III---2018C
% Problem : LAT241-1 : TPTP v8.1.0. Released v3.1.0.
% Transfm : none
% Format : tptp:raw
% Command : geo -tptp_input -nonempty -inputfile %s
% Computer : n003.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:08:06 EDT 2022
% Result : Timeout 299.06s 299.19s
% Output : None
% Verified :
% SZS Type : -
% Comments :
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.12 % Problem : LAT241-1 : TPTP v8.1.0. Released v3.1.0.
% 0.00/0.12 % Command : geo -tptp_input -nonempty -inputfile %s
% 0.13/0.33 % Computer : n003.cluster.edu
% 0.13/0.33 % Model : x86_64 x86_64
% 0.13/0.33 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.33 % Memory : 8042.1875MB
% 0.13/0.33 % OS : Linux 3.10.0-693.el7.x86_64
% 0.13/0.33 % CPULimit : 300
% 0.13/0.33 % WCLimit : 300
% 0.13/0.33 % DateTime : Fri Jul 22 19:46:38 EDT 2022
% 0.13/0.33 % CPUTime :
% 299.06/299.19 GeoParameters:
% 299.06/299.19
% 299.06/299.19 tptp_input = 1
% 299.06/299.19 tptp_output = 0
% 299.06/299.19 nonempty = 1
% 299.06/299.19 inputfile = /export/starexec/sandbox2/benchmark/theBenchmark.p
% 299.06/299.19 includepath = /export/starexec/sandbox2/solver/bin/../../benchmark/
% 299.06/299.19
% 299.06/299.19
% 299.06/299.19 % SZS status Unsatisfiable for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 299.06/299.19 % SZS output start Refutation for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 299.06/299.19
% 299.06/299.19 RuleSystem INPUT:
% 299.06/299.19
% 299.06/299.19 Initial Rules:
% 299.06/299.19 #0: input, references = 4, size of lhs = 2:
% 299.06/299.19 P_meet-{F}(V0,V0,V1), V1 == V0 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #1: input, references = 4, size of lhs = 2:
% 299.06/299.19 P_join-{F}(V0,V0,V1), V1 == V0 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #2: input, references = 5, size of lhs = 3:
% 299.06/299.19 P_join-{F}(V0,V1,V2), P_meet-{F}(V0,V2,V3), V3 == V0 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #3: input, references = 4, size of lhs = 3:
% 299.06/299.19 P_meet-{F}(V0,V1,V2), P_join-{F}(V0,V2,V3), V3 == V0 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #4: input, references = 4, size of lhs = 3:
% 299.06/299.19 P_meet-{F}(V0,V1,V2), P_meet-{F}(V1,V0,V3), V2 == V3 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #5: input, references = 5, size of lhs = 3:
% 299.06/299.19 P_join-{F}(V0,V1,V2), P_join-{F}(V1,V0,V3), V2 == V3 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #6: input, references = 4, size of lhs = 5:
% 299.06/299.19 P_meet-{F}(V0,V1,V3), P_meet-{F}(V3,V2,V4), P_meet-{F}(V1,V2,V5), P_meet-{F}(V0,V5,V6), V4 == V6 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #7: input, references = 5, size of lhs = 5:
% 299.06/299.19 P_join-{F}(V0,V1,V3), P_join-{F}(V3,V2,V4), P_join-{F}(V1,V2,V5), P_join-{F}(V0,V5,V6), V4 == V6 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #8: input, references = 4, size of lhs = 4:
% 299.06/299.19 P_one-{F}(V0), P_complement-{F}(V1,V2), P_join-{F}(V1,V2,V3), V3 == V0 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #9: input, references = 4, size of lhs = 5:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_complement-{F}(V2,V3), P_meet-{F}(V2,V3,V4), V4 == V1 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #10: input, references = 5, size of lhs = 6:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_meet-{F}(V2,V3,V1), P_join-{F}(V2,V3,V0), P_complement-{F}(V2,V6), V6 == V3 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #11: input, references = 5, size of lhs = 12:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_join-{F}(V2,V5,V6), P_meet-{F}(V4,V6,V7), P_join-{F}(V3,V7,V8), P_meet-{F}(V2,V8,V9), P_meet-{F}(V2,V4,V10), P_meet-{F}(V4,V5,V11), P_join-{F}(V10,V11,V12), P_join-{F}(V3,V12,V13), P_meet-{F}(V2,V13,V14), V9 == V14 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #12: input, references = 4, size of lhs = 6:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2), P_a-{F}(V3), P_meet-{F}(V2,V3,V4), V4 == V3 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #13: input, references = 7, size of lhs = 8:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2), P_a-{F}(V3), P_meet-{F}(V2,V3,V4), P_complement-{F}(V2,V5), P_complement-{F}(V3,V6), P_join-{F}(V5,V6,V6) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #14: input, references = 10, size of lhs = 2:
% 299.06/299.19 #-{F} V0, #-{F} V1 | EXISTS V2: P_meet-{T}(V0,V1,V2)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #15: input, references = 8, size of lhs = 2:
% 299.06/299.19 #-{F} V0, #-{F} V1 | EXISTS V2: P_join-{T}(V0,V1,V2)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #16: input, references = 12, size of lhs = 1:
% 299.06/299.19 #-{F} V0 | EXISTS V1: P_complement-{T}(V0,V1)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #17: input, references = 4, size of lhs = 0:
% 299.06/299.19 FALSE | EXISTS V0: P_one-{T}(V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #18: input, references = 4, size of lhs = 0:
% 299.06/299.19 FALSE | EXISTS V0: P_zero-{T}(V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #19: input, references = 4, size of lhs = 0:
% 299.06/299.19 FALSE | EXISTS V0: P_b-{T}(V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #20: input, references = 6, size of lhs = 0:
% 299.06/299.19 FALSE | EXISTS V0: P_a-{T}(V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 number of initial rules = 21
% 299.06/299.19
% 299.06/299.19 Simplifiers:
% 299.06/299.19 #21: unsound, references = 3, size of lhs = 3:
% 299.06/299.19 P_meet-{F}(V0,V1,V2), P_meet-{F}(V0,V1,V5), V2 == V5 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #22: unsound, references = 3, size of lhs = 3:
% 299.06/299.19 P_join-{F}(V0,V1,V2), P_join-{F}(V0,V1,V5), V2 == V5 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #23: unsound, references = 3, size of lhs = 3:
% 299.06/299.19 P_complement-{F}(V0,V1), P_complement-{F}(V0,V3), V1 == V3 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #24: unsound, references = 3, size of lhs = 3:
% 299.06/299.19 P_one-{F}(V0), P_one-{F}(V1), V0 == V1 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #25: unsound, references = 3, size of lhs = 3:
% 299.06/299.19 P_zero-{F}(V0), P_zero-{F}(V1), V0 == V1 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #26: unsound, references = 3, size of lhs = 3:
% 299.06/299.19 P_b-{F}(V0), P_b-{F}(V1), V0 == V1 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #27: unsound, references = 3, size of lhs = 3:
% 299.06/299.19 P_a-{F}(V0), P_a-{F}(V1), V0 == V1 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 number of simplifiers = 7
% 299.06/299.19
% 299.06/299.19 Learnt:
% 299.06/299.19 #29: exists( #14, #9 ), references = 4, size of lhs = 3:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_complement-{F}(V2,V3) | P_meet-{T}(V2,V3,V1)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #32: exists( #14, #0 ), references = 1, size of lhs = 1:
% 299.06/299.19 #-{F} V0 | P_meet-{T}(V0,V0,V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #35: exists( #15, #1 ), references = 3, size of lhs = 1:
% 299.06/299.19 #-{F} V0 | P_join-{T}(V0,V0,V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #36: exists( #15, #3 ), references = 5, size of lhs = 1:
% 299.06/299.19 P_meet-{F}(V0,V1,V2) | P_join-{T}(V0,V2,V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #40: exists( #14, #12 ), references = 3, size of lhs = 4:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2), P_a-{F}(V3) | P_meet-{T}(V2,V3,V3)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #45: exists( #16, #43 ), references = 3, size of lhs = 4:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_join-{F}(V1,V2,V3), V3 == V2 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #51: mergings( V1 == V4, V2 == V3; #48 ), references = 1, size of lhs = 3:
% 299.06/299.19 P_b-{F}(V0), P_zero-{F}(V0), P_one-{F}(V1) | P_a-{T}(V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #54: exists( #16, #52 ), references = 1, size of lhs = 5:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2), P_a-{F}(V2), P_meet-{F}(V2,V2,V3) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #59: exists( #15, #45 ), references = 4, size of lhs = 3:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), #-{F} V2 | P_join-{T}(V1,V2,V2)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #60: exists( #15, #8 ), references = 7, size of lhs = 2:
% 299.06/299.19 P_one-{F}(V0), P_complement-{F}(V1,V2) | P_join-{T}(V1,V2,V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #64: mergings( V2 == V3; #62 ), references = 1, size of lhs = 2:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1) | P_complement-{T}(V1,V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #69: mergings( V2 == V4, V3 == V5; #66 ), references = 2, size of lhs = 6:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2), P_complement-{F}(V2,V1), P_a-{F}(V3), P_meet-{F}(V2,V3,V4) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #72: exists( #14, #4 ), references = 7, size of lhs = 1:
% 299.06/299.19 P_meet-{F}(V0,V1,V2) | P_meet-{T}(V1,V0,V2)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #73: exists( #14, #6 ), references = 2, size of lhs = 3:
% 299.06/299.19 P_meet-{F}(V0,V1,V2), P_meet-{F}(V2,V3,V4), P_meet-{F}(V1,V3,V5) | P_meet-{T}(V0,V5,V4)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #75: exists( #16, #10 ), references = 1, size of lhs = 4:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_meet-{F}(V2,V3,V1), P_join-{F}(V2,V3,V0) | P_complement-{T}(V2,V3)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #80: mergings( V1 == V3, V2 == V4; #77 ), references = 1, size of lhs = 4:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2), P_complement-{F}(V2,V1) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #84: exists( #14, #81 ), references = 4, size of lhs = 1:
% 299.06/299.19 P_join-{F}(V0,V1,V2) | P_meet-{T}(V2,V0,V0)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #87: exists( #15, #5 ), references = 5, size of lhs = 1:
% 299.06/299.19 P_join-{F}(V0,V1,V2) | P_join-{T}(V1,V0,V2)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #88: exists( #15, #7 ), references = 4, size of lhs = 3:
% 299.06/299.19 P_join-{F}(V0,V1,V2), P_join-{F}(V2,V3,V4), P_join-{F}(V1,V3,V5) | P_join-{T}(V0,V5,V4)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #95: mergings( V2 == V3; #93 ), references = 1, size of lhs = 6:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2), P_a-{F}(V3), P_complement-{F}(V3,V0), P_meet-{F}(V2,V3,V4) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #101: exists( #16, #97 ), references = 1, size of lhs = 3:
% 299.06/299.19 P_one-{F}(V0), P_meet-{F}(V1,V0,V2), V2 == V1 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #102: exists( #16, #98 ), references = 1, size of lhs = 4:
% 299.06/299.19 P_one-{F}(V0), P_join-{F}(V1,V2,V2), P_join-{F}(V1,V0,V3), V0 == V3 | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #137: exists( #15, #135 ), references = 1, size of lhs = 11:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_join-{F}(V2,V3,V4), P_join-{F}(V4,V5,V6), P_join-{F}(V6,V7,V8), P_meet-{F}(V9,V7,V10), P_meet-{F}(V9,V8,V11), P_meet-{F}(V6,V9,V12), P_join-{F}(V12,V10,V5), P_join-{F}(V3,V11,V13), P_meet-{F}(V6,V13,V14) | P_join-{T}(V3,V5,V14)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #157: exists( #14, #11 ), references = 2, size of lhs = 10:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_join-{F}(V2,V3,V4), P_meet-{F}(V5,V4,V6), P_meet-{F}(V2,V5,V7), P_meet-{F}(V5,V3,V8), P_join-{F}(V7,V8,V9), P_join-{F}(V10,V6,V11), P_join-{F}(V10,V9,V12), P_meet-{F}(V2,V12,V13) | P_meet-{T}(V2,V11,V13)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #164: mergings( V3 == V5, V4 == V6; #161 ), references = 1, size of lhs = 12:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_complement-{F}(V2,V3), P_meet-{F}(V2,V4,V1), P_join-{F}(V2,V5,V6), P_join-{F}(V6,V7,V0), P_join-{F}(V5,V8,V4), P_join-{F}(V2,V9,V10), P_meet-{F}(V11,V10,V7), P_meet-{F}(V2,V11,V12), P_meet-{F}(V11,V9,V13), P_join-{F}(V12,V13,V8) | P_join-{T}(V7,V5,V3)
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #191: mergings( V16 == V17, V3 == V5, V5 == V7, V7 == V9, V4 == V6, V6 == V8, V8 == V10; #182 ), references = 1, size of lhs = 13:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2), P_a-{F}(V3), P_meet-{F}(V2,V3,V4), P_complement-{F}(V2,V5), P_complement-{F}(V3,V6), P_complement-{F}(V7,V6), P_meet-{F}(V7,V6,V1), P_meet-{F}(V7,V8,V1), P_join-{F}(V7,V6,V9), P_join-{F}(V9,V5,V0), P_meet-{F}(V8,V9,V5) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #204: mergings( V2 == V3, V3 == V4, V4 == V6, V6 == V8, V8 == V10, V5 == V7, V7 == V9, V9 == V11, V14 == V15; #194 ), references = 1, size of lhs = 9:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2), P_a-{F}(V3), P_meet-{F}(V2,V3,V4), P_complement-{F}(V2,V5), P_join-{F}(V0,V5,V0), P_meet-{F}(V3,V5,V1), P_meet-{F}(V5,V0,V5) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #224: mergings( V2 == V4, V4 == V5, V5 == V7, V7 == V9, V9 == V11, V3 == V6, V6 == V8, V8 == V10, V10 == V12; #214 ), references = 1, size of lhs = 7:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2), P_a-{F}(V3), P_meet-{F}(V2,V3,V4), P_meet-{F}(V1,V5,V1), P_meet-{F}(V2,V5,V3) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #241: mergings( V1 == V2, V2 == V4, V4 == V5, V5 == V6, V6 == V8, V8 == V10, V10 == V12, V3 == V7, V7 == V9, V9 == V11, V11 == V13; #229 ), references = 1, size of lhs = 3:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1), P_b-{F}(V2) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #254: mergings( V1 == V2, V2 == V4, V4 == V5, V5 == V6, V6 == V8, V8 == V10, V10 == V12, V3 == V7, V7 == V9, V9 == V11, V11 == V13; #242 ), references = 1, size of lhs = 2:
% 299.06/299.19 P_one-{F}(V0), P_zero-{F}(V1) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #263: mergings( V1 == V2, V2 == V3, V3 == V4, V4 == V5, V5 == V6, V6 == V7, V7 == V8; #255 ), references = 1, size of lhs = 1:
% 299.06/299.19 P_one-{F}(V0) | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 #265: exists( #17, #255 ), references = 1, size of lhs = 0:
% 299.06/299.19 FALSE | FALSE
% 299.06/299.19 (used 0 times, uses = {})
% 299.06/299.19
% 299.06/299.19 number of learnt formulas = 32
% 299.06/299.19
% 299.06/299.19
% 299.06/299.19 % SZS output end Refutation for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 299.06/299.19
% 299.06/299.19 randbase = 1
%------------------------------------------------------------------------------