TSTP Solution File: SEU208+1 by Beagle---0.9.51
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : Beagle---0.9.51
% Problem : SEU208+1 : TPTP v8.1.2. Released v3.3.0.
% Transfm : none
% Format : tptp:raw
% Command : java -Dfile.encoding=UTF-8 -Xms512M -Xmx4G -Xss10M -jar /export/starexec/sandbox2/solver/bin/beagle.jar -auto -q -proof -print tff -smtsolver /export/starexec/sandbox2/solver/bin/cvc4-1.4-x86_64-linux-opt -liasolver cooper -t %d %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 : Tue Aug 22 10:58:00 EDT 2023
% Result : Theorem 50.13s 35.75s
% Output : CNFRefutation 50.13s
% Verified :
% SZS Type : Refutation
% Derivation depth : 9
% Number of leaves : 30
% Syntax : Number of formulae : 85 ( 17 unt; 27 typ; 0 def)
% Number of atoms : 142 ( 2 equ)
% Maximal formula atoms : 5 ( 2 avg)
% Number of connectives : 180 ( 96 ~; 73 |; 3 &)
% ( 5 <=>; 3 =>; 0 <=; 0 <~>)
% Maximal formula depth : 10 ( 4 avg)
% Maximal term depth : 4 ( 1 avg)
% Number of types : 2 ( 0 usr)
% Number of type conns : 37 ( 18 >; 19 *; 0 +; 0 <<)
% Number of predicates : 6 ( 4 usr; 1 prp; 0-2 aty)
% Number of functors : 23 ( 23 usr; 9 con; 0-4 aty)
% Number of variables : 63 (; 60 !; 3 ?; 0 :)
% Comments :
%------------------------------------------------------------------------------
%$ in > element > relation > empty > unordered_pair > relation_inverse_image > ordered_pair > #nlpp > singleton > relation_rng > empty_set > #skF_9 > #skF_6 > #skF_1 > #skF_17 > #skF_11 > #skF_15 > #skF_10 > #skF_16 > #skF_14 > #skF_13 > #skF_2 > #skF_4 > #skF_3 > #skF_8 > #skF_7 > #skF_5 > #skF_12
%Foreground sorts:
%Background operators:
%Foreground operators:
tff('#skF_9',type,
'#skF_9': $i > $i ).
tff(relation,type,
relation: $i > $o ).
tff('#skF_6',type,
'#skF_6': ( $i * $i ) > $i ).
tff('#skF_1',type,
'#skF_1': ( $i * $i * $i ) > $i ).
tff(singleton,type,
singleton: $i > $i ).
tff('#skF_17',type,
'#skF_17': $i ).
tff('#skF_11',type,
'#skF_11': $i ).
tff('#skF_15',type,
'#skF_15': $i ).
tff(unordered_pair,type,
unordered_pair: ( $i * $i ) > $i ).
tff(element,type,
element: ( $i * $i ) > $o ).
tff(ordered_pair,type,
ordered_pair: ( $i * $i ) > $i ).
tff(relation_inverse_image,type,
relation_inverse_image: ( $i * $i ) > $i ).
tff('#skF_10',type,
'#skF_10': $i ).
tff('#skF_16',type,
'#skF_16': $i ).
tff(in,type,
in: ( $i * $i ) > $o ).
tff('#skF_14',type,
'#skF_14': $i ).
tff('#skF_13',type,
'#skF_13': $i ).
tff('#skF_2',type,
'#skF_2': ( $i * $i * $i ) > $i ).
tff(empty,type,
empty: $i > $o ).
tff(empty_set,type,
empty_set: $i ).
tff('#skF_4',type,
'#skF_4': ( $i * $i * $i * $i ) > $i ).
tff('#skF_3',type,
'#skF_3': ( $i * $i * $i ) > $i ).
tff(relation_rng,type,
relation_rng: $i > $i ).
tff('#skF_8',type,
'#skF_8': ( $i * $i * $i ) > $i ).
tff('#skF_7',type,
'#skF_7': ( $i * $i ) > $i ).
tff('#skF_5',type,
'#skF_5': ( $i * $i ) > $i ).
tff('#skF_12',type,
'#skF_12': $i ).
tff(f_120,negated_conjecture,
~ ! [A,B,C] :
( relation(C)
=> ( in(A,relation_inverse_image(C,B))
<=> ? [D] :
( in(D,relation_rng(C))
& in(ordered_pair(A,D),C)
& in(D,B) ) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t166_relat_1) ).
tff(f_50,axiom,
! [A] :
( relation(A)
=> ! [B,C] :
( ( C = relation_inverse_image(A,B) )
<=> ! [D] :
( in(D,C)
<=> ? [E] :
( in(ordered_pair(D,E),A)
& in(E,B) ) ) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d14_relat_1) ).
tff(f_61,axiom,
! [A] :
( relation(A)
=> ! [B] :
( ( B = relation_rng(A) )
<=> ! [C] :
( in(C,B)
<=> ? [D] : in(ordered_pair(D,C),A) ) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d5_relat_1) ).
tff(c_86,plain,
relation('#skF_16'),
inference(cnfTransformation,[status(thm)],[f_120]) ).
tff(c_102,plain,
( in('#skF_14',relation_inverse_image('#skF_16','#skF_15'))
| in('#skF_17',relation_rng('#skF_16')) ),
inference(cnfTransformation,[status(thm)],[f_120]) ).
tff(c_150,plain,
in('#skF_17',relation_rng('#skF_16')),
inference(splitLeft,[status(thm)],[c_102]) ).
tff(c_94,plain,
( in('#skF_14',relation_inverse_image('#skF_16','#skF_15'))
| in('#skF_17','#skF_15') ),
inference(cnfTransformation,[status(thm)],[f_120]) ).
tff(c_114,plain,
in('#skF_17','#skF_15'),
inference(splitLeft,[status(thm)],[c_94]) ).
tff(c_98,plain,
( in('#skF_14',relation_inverse_image('#skF_16','#skF_15'))
| in(ordered_pair('#skF_14','#skF_17'),'#skF_16') ),
inference(cnfTransformation,[status(thm)],[f_120]) ).
tff(c_185,plain,
in(ordered_pair('#skF_14','#skF_17'),'#skF_16'),
inference(splitLeft,[status(thm)],[c_98]) ).
tff(c_88,plain,
! [D_101] :
( ~ in(D_101,'#skF_15')
| ~ in(ordered_pair('#skF_14',D_101),'#skF_16')
| ~ in(D_101,relation_rng('#skF_16'))
| ~ in('#skF_14',relation_inverse_image('#skF_16','#skF_15')) ),
inference(cnfTransformation,[status(thm)],[f_120]) ).
tff(c_445,plain,
~ in('#skF_14',relation_inverse_image('#skF_16','#skF_15')),
inference(splitLeft,[status(thm)],[c_88]) ).
tff(c_1020,plain,
! [D_175,A_176,B_177,E_178] :
( in(D_175,relation_inverse_image(A_176,B_177))
| ~ in(E_178,B_177)
| ~ in(ordered_pair(D_175,E_178),A_176)
| ~ relation(A_176) ),
inference(cnfTransformation,[status(thm)],[f_50]) ).
tff(c_1197,plain,
! [D_193,A_194] :
( in(D_193,relation_inverse_image(A_194,'#skF_15'))
| ~ in(ordered_pair(D_193,'#skF_17'),A_194)
| ~ relation(A_194) ),
inference(resolution,[status(thm)],[c_114,c_1020]) ).
tff(c_1208,plain,
( in('#skF_14',relation_inverse_image('#skF_16','#skF_15'))
| ~ relation('#skF_16') ),
inference(resolution,[status(thm)],[c_185,c_1197]) ).
tff(c_1213,plain,
in('#skF_14',relation_inverse_image('#skF_16','#skF_15')),
inference(demodulation,[status(thm),theory(equality)],[c_86,c_1208]) ).
tff(c_1215,plain,
$false,
inference(negUnitSimplification,[status(thm)],[c_445,c_1213]) ).
tff(c_1367,plain,
! [D_202] :
( ~ in(D_202,'#skF_15')
| ~ in(ordered_pair('#skF_14',D_202),'#skF_16')
| ~ in(D_202,relation_rng('#skF_16')) ),
inference(splitRight,[status(thm)],[c_88]) ).
tff(c_1373,plain,
( ~ in('#skF_17','#skF_15')
| ~ in('#skF_17',relation_rng('#skF_16')) ),
inference(resolution,[status(thm)],[c_185,c_1367]) ).
tff(c_1380,plain,
$false,
inference(demodulation,[status(thm),theory(equality)],[c_150,c_114,c_1373]) ).
tff(c_1381,plain,
in('#skF_14',relation_inverse_image('#skF_16','#skF_15')),
inference(splitRight,[status(thm)],[c_98]) ).
tff(c_10,plain,
! [A_6,B_29,D_44] :
( in('#skF_4'(A_6,B_29,relation_inverse_image(A_6,B_29),D_44),B_29)
| ~ in(D_44,relation_inverse_image(A_6,B_29))
| ~ relation(A_6) ),
inference(cnfTransformation,[status(thm)],[f_50]) ).
tff(c_4393,plain,
! [D_331,A_332,B_333] :
( in(ordered_pair(D_331,'#skF_4'(A_332,B_333,relation_inverse_image(A_332,B_333),D_331)),A_332)
| ~ in(D_331,relation_inverse_image(A_332,B_333))
| ~ relation(A_332) ),
inference(cnfTransformation,[status(thm)],[f_50]) ).
tff(c_28,plain,
! [C_84,A_48,D_87] :
( in(C_84,relation_rng(A_48))
| ~ in(ordered_pair(D_87,C_84),A_48)
| ~ relation(A_48) ),
inference(cnfTransformation,[status(thm)],[f_61]) ).
tff(c_18874,plain,
! [A_688,B_689,D_690] :
( in('#skF_4'(A_688,B_689,relation_inverse_image(A_688,B_689),D_690),relation_rng(A_688))
| ~ in(D_690,relation_inverse_image(A_688,B_689))
| ~ relation(A_688) ),
inference(resolution,[status(thm)],[c_4393,c_28]) ).
tff(c_1382,plain,
~ in(ordered_pair('#skF_14','#skF_17'),'#skF_16'),
inference(splitRight,[status(thm)],[c_98]) ).
tff(c_96,plain,
! [D_101] :
( ~ in(D_101,'#skF_15')
| ~ in(ordered_pair('#skF_14',D_101),'#skF_16')
| ~ in(D_101,relation_rng('#skF_16'))
| in(ordered_pair('#skF_14','#skF_17'),'#skF_16') ),
inference(cnfTransformation,[status(thm)],[f_120]) ).
tff(c_1553,plain,
! [D_101] :
( ~ in(D_101,'#skF_15')
| ~ in(ordered_pair('#skF_14',D_101),'#skF_16')
| ~ in(D_101,relation_rng('#skF_16')) ),
inference(negUnitSimplification,[status(thm)],[c_1382,c_96]) ).
tff(c_4429,plain,
! [B_333] :
( ~ in('#skF_4'('#skF_16',B_333,relation_inverse_image('#skF_16',B_333),'#skF_14'),'#skF_15')
| ~ in('#skF_4'('#skF_16',B_333,relation_inverse_image('#skF_16',B_333),'#skF_14'),relation_rng('#skF_16'))
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_333))
| ~ relation('#skF_16') ),
inference(resolution,[status(thm)],[c_4393,c_1553]) ).
tff(c_4474,plain,
! [B_333] :
( ~ in('#skF_4'('#skF_16',B_333,relation_inverse_image('#skF_16',B_333),'#skF_14'),'#skF_15')
| ~ in('#skF_4'('#skF_16',B_333,relation_inverse_image('#skF_16',B_333),'#skF_14'),relation_rng('#skF_16'))
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_333)) ),
inference(demodulation,[status(thm),theory(equality)],[c_86,c_4429]) ).
tff(c_18882,plain,
! [B_689] :
( ~ in('#skF_4'('#skF_16',B_689,relation_inverse_image('#skF_16',B_689),'#skF_14'),'#skF_15')
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_689))
| ~ relation('#skF_16') ),
inference(resolution,[status(thm)],[c_18874,c_4474]) ).
tff(c_118404,plain,
! [B_1535] :
( ~ in('#skF_4'('#skF_16',B_1535,relation_inverse_image('#skF_16',B_1535),'#skF_14'),'#skF_15')
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_1535)) ),
inference(demodulation,[status(thm),theory(equality)],[c_86,c_18882]) ).
tff(c_118495,plain,
( ~ in('#skF_14',relation_inverse_image('#skF_16','#skF_15'))
| ~ relation('#skF_16') ),
inference(resolution,[status(thm)],[c_10,c_118404]) ).
tff(c_118545,plain,
$false,
inference(demodulation,[status(thm),theory(equality)],[c_86,c_1381,c_118495]) ).
tff(c_118546,plain,
in('#skF_14',relation_inverse_image('#skF_16','#skF_15')),
inference(splitRight,[status(thm)],[c_102]) ).
tff(c_120793,plain,
! [D_1660,A_1661,B_1662] :
( in(ordered_pair(D_1660,'#skF_4'(A_1661,B_1662,relation_inverse_image(A_1661,B_1662),D_1660)),A_1661)
| ~ in(D_1660,relation_inverse_image(A_1661,B_1662))
| ~ relation(A_1661) ),
inference(cnfTransformation,[status(thm)],[f_50]) ).
tff(c_135616,plain,
! [A_2036,B_2037,D_2038] :
( in('#skF_4'(A_2036,B_2037,relation_inverse_image(A_2036,B_2037),D_2038),relation_rng(A_2036))
| ~ in(D_2038,relation_inverse_image(A_2036,B_2037))
| ~ relation(A_2036) ),
inference(resolution,[status(thm)],[c_120793,c_28]) ).
tff(c_118547,plain,
~ in('#skF_17',relation_rng('#skF_16')),
inference(splitRight,[status(thm)],[c_102]) ).
tff(c_100,plain,
! [D_101] :
( ~ in(D_101,'#skF_15')
| ~ in(ordered_pair('#skF_14',D_101),'#skF_16')
| ~ in(D_101,relation_rng('#skF_16'))
| in('#skF_17',relation_rng('#skF_16')) ),
inference(cnfTransformation,[status(thm)],[f_120]) ).
tff(c_118923,plain,
! [D_101] :
( ~ in(D_101,'#skF_15')
| ~ in(ordered_pair('#skF_14',D_101),'#skF_16')
| ~ in(D_101,relation_rng('#skF_16')) ),
inference(negUnitSimplification,[status(thm)],[c_118547,c_100]) ).
tff(c_120827,plain,
! [B_1662] :
( ~ in('#skF_4'('#skF_16',B_1662,relation_inverse_image('#skF_16',B_1662),'#skF_14'),'#skF_15')
| ~ in('#skF_4'('#skF_16',B_1662,relation_inverse_image('#skF_16',B_1662),'#skF_14'),relation_rng('#skF_16'))
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_1662))
| ~ relation('#skF_16') ),
inference(resolution,[status(thm)],[c_120793,c_118923]) ).
tff(c_120861,plain,
! [B_1662] :
( ~ in('#skF_4'('#skF_16',B_1662,relation_inverse_image('#skF_16',B_1662),'#skF_14'),'#skF_15')
| ~ in('#skF_4'('#skF_16',B_1662,relation_inverse_image('#skF_16',B_1662),'#skF_14'),relation_rng('#skF_16'))
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_1662)) ),
inference(demodulation,[status(thm),theory(equality)],[c_86,c_120827]) ).
tff(c_135628,plain,
! [B_2037] :
( ~ in('#skF_4'('#skF_16',B_2037,relation_inverse_image('#skF_16',B_2037),'#skF_14'),'#skF_15')
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_2037))
| ~ relation('#skF_16') ),
inference(resolution,[status(thm)],[c_135616,c_120861]) ).
tff(c_237437,plain,
! [B_2930] :
( ~ in('#skF_4'('#skF_16',B_2930,relation_inverse_image('#skF_16',B_2930),'#skF_14'),'#skF_15')
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_2930)) ),
inference(demodulation,[status(thm),theory(equality)],[c_86,c_135628]) ).
tff(c_237528,plain,
( ~ in('#skF_14',relation_inverse_image('#skF_16','#skF_15'))
| ~ relation('#skF_16') ),
inference(resolution,[status(thm)],[c_10,c_237437]) ).
tff(c_237578,plain,
$false,
inference(demodulation,[status(thm),theory(equality)],[c_86,c_118546,c_237528]) ).
tff(c_237579,plain,
in('#skF_14',relation_inverse_image('#skF_16','#skF_15')),
inference(splitRight,[status(thm)],[c_94]) ).
tff(c_239188,plain,
! [D_3034,A_3035,B_3036] :
( in(ordered_pair(D_3034,'#skF_4'(A_3035,B_3036,relation_inverse_image(A_3035,B_3036),D_3034)),A_3035)
| ~ in(D_3034,relation_inverse_image(A_3035,B_3036))
| ~ relation(A_3035) ),
inference(cnfTransformation,[status(thm)],[f_50]) ).
tff(c_239257,plain,
! [A_3035,B_3036,D_3034] :
( in('#skF_4'(A_3035,B_3036,relation_inverse_image(A_3035,B_3036),D_3034),relation_rng(A_3035))
| ~ in(D_3034,relation_inverse_image(A_3035,B_3036))
| ~ relation(A_3035) ),
inference(resolution,[status(thm)],[c_239188,c_28]) ).
tff(c_237580,plain,
~ in('#skF_17','#skF_15'),
inference(splitRight,[status(thm)],[c_94]) ).
tff(c_92,plain,
! [D_101] :
( ~ in(D_101,'#skF_15')
| ~ in(ordered_pair('#skF_14',D_101),'#skF_16')
| ~ in(D_101,relation_rng('#skF_16'))
| in('#skF_17','#skF_15') ),
inference(cnfTransformation,[status(thm)],[f_120]) ).
tff(c_237670,plain,
! [D_101] :
( ~ in(D_101,'#skF_15')
| ~ in(ordered_pair('#skF_14',D_101),'#skF_16')
| ~ in(D_101,relation_rng('#skF_16')) ),
inference(negUnitSimplification,[status(thm)],[c_237580,c_92]) ).
tff(c_239229,plain,
! [B_3036] :
( ~ in('#skF_4'('#skF_16',B_3036,relation_inverse_image('#skF_16',B_3036),'#skF_14'),'#skF_15')
| ~ in('#skF_4'('#skF_16',B_3036,relation_inverse_image('#skF_16',B_3036),'#skF_14'),relation_rng('#skF_16'))
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_3036))
| ~ relation('#skF_16') ),
inference(resolution,[status(thm)],[c_239188,c_237670]) ).
tff(c_256032,plain,
! [B_3440] :
( ~ in('#skF_4'('#skF_16',B_3440,relation_inverse_image('#skF_16',B_3440),'#skF_14'),'#skF_15')
| ~ in('#skF_4'('#skF_16',B_3440,relation_inverse_image('#skF_16',B_3440),'#skF_14'),relation_rng('#skF_16'))
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_3440)) ),
inference(demodulation,[status(thm),theory(equality)],[c_86,c_239229]) ).
tff(c_256039,plain,
! [B_3036] :
( ~ in('#skF_4'('#skF_16',B_3036,relation_inverse_image('#skF_16',B_3036),'#skF_14'),'#skF_15')
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_3036))
| ~ relation('#skF_16') ),
inference(resolution,[status(thm)],[c_239257,c_256032]) ).
tff(c_315002,plain,
! [B_4213] :
( ~ in('#skF_4'('#skF_16',B_4213,relation_inverse_image('#skF_16',B_4213),'#skF_14'),'#skF_15')
| ~ in('#skF_14',relation_inverse_image('#skF_16',B_4213)) ),
inference(demodulation,[status(thm),theory(equality)],[c_86,c_256039]) ).
tff(c_315065,plain,
( ~ in('#skF_14',relation_inverse_image('#skF_16','#skF_15'))
| ~ relation('#skF_16') ),
inference(resolution,[status(thm)],[c_10,c_315002]) ).
tff(c_315101,plain,
$false,
inference(demodulation,[status(thm),theory(equality)],[c_86,c_237579,c_315065]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.14 % Problem : SEU208+1 : TPTP v8.1.2. Released v3.3.0.
% 0.00/0.15 % Command : java -Dfile.encoding=UTF-8 -Xms512M -Xmx4G -Xss10M -jar /export/starexec/sandbox2/solver/bin/beagle.jar -auto -q -proof -print tff -smtsolver /export/starexec/sandbox2/solver/bin/cvc4-1.4-x86_64-linux-opt -liasolver cooper -t %d %s
% 0.15/0.36 % Computer : n003.cluster.edu
% 0.15/0.36 % Model : x86_64 x86_64
% 0.15/0.36 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.15/0.36 % Memory : 8042.1875MB
% 0.15/0.36 % OS : Linux 3.10.0-693.el7.x86_64
% 0.15/0.36 % CPULimit : 300
% 0.15/0.36 % WCLimit : 300
% 0.15/0.36 % DateTime : Thu Aug 3 11:59:38 EDT 2023
% 0.15/0.36 % CPUTime :
% 50.13/35.75 % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 50.13/35.76
% 50.13/35.76 % SZS output start CNFRefutation for /export/starexec/sandbox2/benchmark/theBenchmark.p
% See solution above
% 50.13/35.80
% 50.13/35.80 Inference rules
% 50.13/35.80 ----------------------
% 50.13/35.80 #Ref : 0
% 50.13/35.80 #Sup : 84376
% 50.13/35.80 #Fact : 0
% 50.13/35.80 #Define : 0
% 50.13/35.80 #Split : 133
% 50.13/35.80 #Chain : 0
% 50.13/35.80 #Close : 0
% 50.13/35.80
% 50.13/35.80 Ordering : KBO
% 50.13/35.80
% 50.13/35.80 Simplification rules
% 50.13/35.80 ----------------------
% 50.13/35.80 #Subsume : 33742
% 50.13/35.80 #Demod : 36572
% 50.13/35.80 #Tautology : 14938
% 50.13/35.80 #SimpNegUnit : 1861
% 50.13/35.80 #BackRed : 89
% 50.13/35.80
% 50.13/35.80 #Partial instantiations: 0
% 50.13/35.80 #Strategies tried : 1
% 50.13/35.80
% 50.13/35.80 Timing (in seconds)
% 50.13/35.80 ----------------------
% 50.13/35.80 Preprocessing : 0.57
% 50.13/35.80 Parsing : 0.28
% 50.13/35.80 CNF conversion : 0.06
% 50.13/35.80 Main loop : 34.07
% 50.13/35.80 Inferencing : 4.52
% 50.13/35.80 Reduction : 8.51
% 50.13/35.80 Demodulation : 6.24
% 50.13/35.80 BG Simplification : 0.37
% 50.13/35.80 Subsumption : 18.83
% 50.13/35.80 Abstraction : 0.64
% 50.13/35.80 MUC search : 0.00
% 50.13/35.80 Cooper : 0.00
% 50.13/35.80 Total : 34.70
% 50.13/35.80 Index Insertion : 0.00
% 50.13/35.80 Index Deletion : 0.00
% 50.13/35.80 Index Matching : 0.00
% 50.13/35.80 BG Taut test : 0.00
%------------------------------------------------------------------------------