TSTP Solution File: SET754+4 by SInE---0.4
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : SInE---0.4
% Problem : SET754+4 : TPTP v5.0.0. Bugfixed v2.2.1.
% Transfm : none
% Format : tptp:raw
% Command : Source/sine.py -e eprover -t %d %s
% Computer : art05.cs.miami.edu
% Model : i686 i686
% CPU : Intel(R) Pentium(R) 4 CPU 2.80GHz @ 2793MHz
% Memory : 2018MB
% OS : Linux 2.6.26.8-57.fc8
% CPULimit : 300s
% DateTime : Sun Dec 26 03:31:31 EST 2010
% Result : Theorem 0.50s
% Output : CNFRefutation 0.50s
% Verified :
% SZS Type : Refutation
% Derivation depth : 19
% Number of leaves : 5
% Syntax : Number of formulae : 57 ( 7 unt; 0 def)
% Number of atoms : 324 ( 12 equ)
% Maximal formula atoms : 55 ( 5 avg)
% Number of connectives : 416 ( 149 ~; 162 |; 95 &)
% ( 4 <=>; 6 =>; 0 <=; 0 <~>)
% Maximal formula depth : 29 ( 7 avg)
% Maximal term depth : 4 ( 1 avg)
% Number of predicates : 6 ( 4 usr; 1 prp; 0-3 aty)
% Number of functors : 14 ( 14 usr; 4 con; 0-4 aty)
% Number of variables : 203 ( 1 sgn 119 !; 27 ?)
% Comments :
%------------------------------------------------------------------------------
fof(1,axiom,
! [X1,X2] :
( subset(X1,X2)
<=> ! [X3] :
( member(X3,X1)
=> member(X3,X2) ) ),
file('/tmp/tmp0DCfaC/sel_SET754+4.p_1',subset) ).
fof(2,axiom,
! [X4,X1,X2] :
( maps(X4,X1,X2)
<=> ( ! [X3] :
( member(X3,X1)
=> ? [X5] :
( member(X5,X2)
& apply(X4,X3,X5) ) )
& ! [X3,X6,X7] :
( ( member(X3,X1)
& member(X6,X2)
& member(X7,X2) )
=> ( ( apply(X4,X3,X6)
& apply(X4,X3,X7) )
=> X6 = X7 ) ) ) ),
file('/tmp/tmp0DCfaC/sel_SET754+4.p_1',maps) ).
fof(3,axiom,
! [X4,X2,X3] :
( member(X3,inverse_image2(X4,X2))
<=> ? [X5] :
( member(X5,X2)
& apply(X4,X3,X5) ) ),
file('/tmp/tmp0DCfaC/sel_SET754+4.p_1',inverse_image2) ).
fof(4,axiom,
! [X4,X1,X5] :
( member(X5,image2(X4,X1))
<=> ? [X3] :
( member(X3,X1)
& apply(X4,X3,X5) ) ),
file('/tmp/tmp0DCfaC/sel_SET754+4.p_1',image2) ).
fof(5,conjecture,
! [X4,X1,X2,X8] :
( ( maps(X4,X1,X2)
& subset(X8,X1) )
=> subset(X8,inverse_image2(X4,image2(X4,X8))) ),
file('/tmp/tmp0DCfaC/sel_SET754+4.p_1',thIIa04) ).
fof(6,negated_conjecture,
~ ! [X4,X1,X2,X8] :
( ( maps(X4,X1,X2)
& subset(X8,X1) )
=> subset(X8,inverse_image2(X4,image2(X4,X8))) ),
inference(assume_negation,[status(cth)],[5]) ).
fof(7,plain,
! [X1,X2] :
( ( ~ subset(X1,X2)
| ! [X3] :
( ~ member(X3,X1)
| member(X3,X2) ) )
& ( ? [X3] :
( member(X3,X1)
& ~ member(X3,X2) )
| subset(X1,X2) ) ),
inference(fof_nnf,[status(thm)],[1]) ).
fof(8,plain,
! [X4,X5] :
( ( ~ subset(X4,X5)
| ! [X6] :
( ~ member(X6,X4)
| member(X6,X5) ) )
& ( ? [X7] :
( member(X7,X4)
& ~ member(X7,X5) )
| subset(X4,X5) ) ),
inference(variable_rename,[status(thm)],[7]) ).
fof(9,plain,
! [X4,X5] :
( ( ~ subset(X4,X5)
| ! [X6] :
( ~ member(X6,X4)
| member(X6,X5) ) )
& ( ( member(esk1_2(X4,X5),X4)
& ~ member(esk1_2(X4,X5),X5) )
| subset(X4,X5) ) ),
inference(skolemize,[status(esa)],[8]) ).
fof(10,plain,
! [X4,X5,X6] :
( ( ~ member(X6,X4)
| member(X6,X5)
| ~ subset(X4,X5) )
& ( ( member(esk1_2(X4,X5),X4)
& ~ member(esk1_2(X4,X5),X5) )
| subset(X4,X5) ) ),
inference(shift_quantors,[status(thm)],[9]) ).
fof(11,plain,
! [X4,X5,X6] :
( ( ~ member(X6,X4)
| member(X6,X5)
| ~ subset(X4,X5) )
& ( member(esk1_2(X4,X5),X4)
| subset(X4,X5) )
& ( ~ member(esk1_2(X4,X5),X5)
| subset(X4,X5) ) ),
inference(distribute,[status(thm)],[10]) ).
cnf(12,plain,
( subset(X1,X2)
| ~ member(esk1_2(X1,X2),X2) ),
inference(split_conjunct,[status(thm)],[11]) ).
cnf(13,plain,
( subset(X1,X2)
| member(esk1_2(X1,X2),X1) ),
inference(split_conjunct,[status(thm)],[11]) ).
cnf(14,plain,
( member(X3,X2)
| ~ subset(X1,X2)
| ~ member(X3,X1) ),
inference(split_conjunct,[status(thm)],[11]) ).
fof(15,plain,
! [X4,X1,X2] :
( ( ~ maps(X4,X1,X2)
| ( ! [X3] :
( ~ member(X3,X1)
| ? [X5] :
( member(X5,X2)
& apply(X4,X3,X5) ) )
& ! [X3,X6,X7] :
( ~ member(X3,X1)
| ~ member(X6,X2)
| ~ member(X7,X2)
| ~ apply(X4,X3,X6)
| ~ apply(X4,X3,X7)
| X6 = X7 ) ) )
& ( ? [X3] :
( member(X3,X1)
& ! [X5] :
( ~ member(X5,X2)
| ~ apply(X4,X3,X5) ) )
| ? [X3,X6,X7] :
( member(X3,X1)
& member(X6,X2)
& member(X7,X2)
& apply(X4,X3,X6)
& apply(X4,X3,X7)
& X6 != X7 )
| maps(X4,X1,X2) ) ),
inference(fof_nnf,[status(thm)],[2]) ).
fof(16,plain,
! [X8,X9,X10] :
( ( ~ maps(X8,X9,X10)
| ( ! [X11] :
( ~ member(X11,X9)
| ? [X12] :
( member(X12,X10)
& apply(X8,X11,X12) ) )
& ! [X13,X14,X15] :
( ~ member(X13,X9)
| ~ member(X14,X10)
| ~ member(X15,X10)
| ~ apply(X8,X13,X14)
| ~ apply(X8,X13,X15)
| X14 = X15 ) ) )
& ( ? [X16] :
( member(X16,X9)
& ! [X17] :
( ~ member(X17,X10)
| ~ apply(X8,X16,X17) ) )
| ? [X18,X19,X20] :
( member(X18,X9)
& member(X19,X10)
& member(X20,X10)
& apply(X8,X18,X19)
& apply(X8,X18,X20)
& X19 != X20 )
| maps(X8,X9,X10) ) ),
inference(variable_rename,[status(thm)],[15]) ).
fof(17,plain,
! [X8,X9,X10] :
( ( ~ maps(X8,X9,X10)
| ( ! [X11] :
( ~ member(X11,X9)
| ( member(esk2_4(X8,X9,X10,X11),X10)
& apply(X8,X11,esk2_4(X8,X9,X10,X11)) ) )
& ! [X13,X14,X15] :
( ~ member(X13,X9)
| ~ member(X14,X10)
| ~ member(X15,X10)
| ~ apply(X8,X13,X14)
| ~ apply(X8,X13,X15)
| X14 = X15 ) ) )
& ( ( member(esk3_3(X8,X9,X10),X9)
& ! [X17] :
( ~ member(X17,X10)
| ~ apply(X8,esk3_3(X8,X9,X10),X17) ) )
| ( member(esk4_3(X8,X9,X10),X9)
& member(esk5_3(X8,X9,X10),X10)
& member(esk6_3(X8,X9,X10),X10)
& apply(X8,esk4_3(X8,X9,X10),esk5_3(X8,X9,X10))
& apply(X8,esk4_3(X8,X9,X10),esk6_3(X8,X9,X10))
& esk5_3(X8,X9,X10) != esk6_3(X8,X9,X10) )
| maps(X8,X9,X10) ) ),
inference(skolemize,[status(esa)],[16]) ).
fof(18,plain,
! [X8,X9,X10,X11,X13,X14,X15,X17] :
( ( ( ( ~ member(X17,X10)
| ~ apply(X8,esk3_3(X8,X9,X10),X17) )
& member(esk3_3(X8,X9,X10),X9) )
| ( member(esk4_3(X8,X9,X10),X9)
& member(esk5_3(X8,X9,X10),X10)
& member(esk6_3(X8,X9,X10),X10)
& apply(X8,esk4_3(X8,X9,X10),esk5_3(X8,X9,X10))
& apply(X8,esk4_3(X8,X9,X10),esk6_3(X8,X9,X10))
& esk5_3(X8,X9,X10) != esk6_3(X8,X9,X10) )
| maps(X8,X9,X10) )
& ( ( ( ~ member(X13,X9)
| ~ member(X14,X10)
| ~ member(X15,X10)
| ~ apply(X8,X13,X14)
| ~ apply(X8,X13,X15)
| X14 = X15 )
& ( ~ member(X11,X9)
| ( member(esk2_4(X8,X9,X10,X11),X10)
& apply(X8,X11,esk2_4(X8,X9,X10,X11)) ) ) )
| ~ maps(X8,X9,X10) ) ),
inference(shift_quantors,[status(thm)],[17]) ).
fof(19,plain,
! [X8,X9,X10,X11,X13,X14,X15,X17] :
( ( member(esk4_3(X8,X9,X10),X9)
| ~ member(X17,X10)
| ~ apply(X8,esk3_3(X8,X9,X10),X17)
| maps(X8,X9,X10) )
& ( member(esk5_3(X8,X9,X10),X10)
| ~ member(X17,X10)
| ~ apply(X8,esk3_3(X8,X9,X10),X17)
| maps(X8,X9,X10) )
& ( member(esk6_3(X8,X9,X10),X10)
| ~ member(X17,X10)
| ~ apply(X8,esk3_3(X8,X9,X10),X17)
| maps(X8,X9,X10) )
& ( apply(X8,esk4_3(X8,X9,X10),esk5_3(X8,X9,X10))
| ~ member(X17,X10)
| ~ apply(X8,esk3_3(X8,X9,X10),X17)
| maps(X8,X9,X10) )
& ( apply(X8,esk4_3(X8,X9,X10),esk6_3(X8,X9,X10))
| ~ member(X17,X10)
| ~ apply(X8,esk3_3(X8,X9,X10),X17)
| maps(X8,X9,X10) )
& ( esk5_3(X8,X9,X10) != esk6_3(X8,X9,X10)
| ~ member(X17,X10)
| ~ apply(X8,esk3_3(X8,X9,X10),X17)
| maps(X8,X9,X10) )
& ( member(esk4_3(X8,X9,X10),X9)
| member(esk3_3(X8,X9,X10),X9)
| maps(X8,X9,X10) )
& ( member(esk5_3(X8,X9,X10),X10)
| member(esk3_3(X8,X9,X10),X9)
| maps(X8,X9,X10) )
& ( member(esk6_3(X8,X9,X10),X10)
| member(esk3_3(X8,X9,X10),X9)
| maps(X8,X9,X10) )
& ( apply(X8,esk4_3(X8,X9,X10),esk5_3(X8,X9,X10))
| member(esk3_3(X8,X9,X10),X9)
| maps(X8,X9,X10) )
& ( apply(X8,esk4_3(X8,X9,X10),esk6_3(X8,X9,X10))
| member(esk3_3(X8,X9,X10),X9)
| maps(X8,X9,X10) )
& ( esk5_3(X8,X9,X10) != esk6_3(X8,X9,X10)
| member(esk3_3(X8,X9,X10),X9)
| maps(X8,X9,X10) )
& ( ~ member(X13,X9)
| ~ member(X14,X10)
| ~ member(X15,X10)
| ~ apply(X8,X13,X14)
| ~ apply(X8,X13,X15)
| X14 = X15
| ~ maps(X8,X9,X10) )
& ( member(esk2_4(X8,X9,X10,X11),X10)
| ~ member(X11,X9)
| ~ maps(X8,X9,X10) )
& ( apply(X8,X11,esk2_4(X8,X9,X10,X11))
| ~ member(X11,X9)
| ~ maps(X8,X9,X10) ) ),
inference(distribute,[status(thm)],[18]) ).
cnf(20,plain,
( apply(X1,X4,esk2_4(X1,X2,X3,X4))
| ~ maps(X1,X2,X3)
| ~ member(X4,X2) ),
inference(split_conjunct,[status(thm)],[19]) ).
cnf(21,plain,
( member(esk2_4(X1,X2,X3,X4),X3)
| ~ maps(X1,X2,X3)
| ~ member(X4,X2) ),
inference(split_conjunct,[status(thm)],[19]) ).
fof(35,plain,
! [X4,X2,X3] :
( ( ~ member(X3,inverse_image2(X4,X2))
| ? [X5] :
( member(X5,X2)
& apply(X4,X3,X5) ) )
& ( ! [X5] :
( ~ member(X5,X2)
| ~ apply(X4,X3,X5) )
| member(X3,inverse_image2(X4,X2)) ) ),
inference(fof_nnf,[status(thm)],[3]) ).
fof(36,plain,
! [X6,X7,X8] :
( ( ~ member(X8,inverse_image2(X6,X7))
| ? [X9] :
( member(X9,X7)
& apply(X6,X8,X9) ) )
& ( ! [X10] :
( ~ member(X10,X7)
| ~ apply(X6,X8,X10) )
| member(X8,inverse_image2(X6,X7)) ) ),
inference(variable_rename,[status(thm)],[35]) ).
fof(37,plain,
! [X6,X7,X8] :
( ( ~ member(X8,inverse_image2(X6,X7))
| ( member(esk7_3(X6,X7,X8),X7)
& apply(X6,X8,esk7_3(X6,X7,X8)) ) )
& ( ! [X10] :
( ~ member(X10,X7)
| ~ apply(X6,X8,X10) )
| member(X8,inverse_image2(X6,X7)) ) ),
inference(skolemize,[status(esa)],[36]) ).
fof(38,plain,
! [X6,X7,X8,X10] :
( ( ~ member(X10,X7)
| ~ apply(X6,X8,X10)
| member(X8,inverse_image2(X6,X7)) )
& ( ~ member(X8,inverse_image2(X6,X7))
| ( member(esk7_3(X6,X7,X8),X7)
& apply(X6,X8,esk7_3(X6,X7,X8)) ) ) ),
inference(shift_quantors,[status(thm)],[37]) ).
fof(39,plain,
! [X6,X7,X8,X10] :
( ( ~ member(X10,X7)
| ~ apply(X6,X8,X10)
| member(X8,inverse_image2(X6,X7)) )
& ( member(esk7_3(X6,X7,X8),X7)
| ~ member(X8,inverse_image2(X6,X7)) )
& ( apply(X6,X8,esk7_3(X6,X7,X8))
| ~ member(X8,inverse_image2(X6,X7)) ) ),
inference(distribute,[status(thm)],[38]) ).
cnf(40,plain,
( apply(X2,X1,esk7_3(X2,X3,X1))
| ~ member(X1,inverse_image2(X2,X3)) ),
inference(split_conjunct,[status(thm)],[39]) ).
cnf(42,plain,
( member(X1,inverse_image2(X2,X3))
| ~ apply(X2,X1,X4)
| ~ member(X4,X3) ),
inference(split_conjunct,[status(thm)],[39]) ).
fof(43,plain,
! [X4,X1,X5] :
( ( ~ member(X5,image2(X4,X1))
| ? [X3] :
( member(X3,X1)
& apply(X4,X3,X5) ) )
& ( ! [X3] :
( ~ member(X3,X1)
| ~ apply(X4,X3,X5) )
| member(X5,image2(X4,X1)) ) ),
inference(fof_nnf,[status(thm)],[4]) ).
fof(44,plain,
! [X6,X7,X8] :
( ( ~ member(X8,image2(X6,X7))
| ? [X9] :
( member(X9,X7)
& apply(X6,X9,X8) ) )
& ( ! [X10] :
( ~ member(X10,X7)
| ~ apply(X6,X10,X8) )
| member(X8,image2(X6,X7)) ) ),
inference(variable_rename,[status(thm)],[43]) ).
fof(45,plain,
! [X6,X7,X8] :
( ( ~ member(X8,image2(X6,X7))
| ( member(esk8_3(X6,X7,X8),X7)
& apply(X6,esk8_3(X6,X7,X8),X8) ) )
& ( ! [X10] :
( ~ member(X10,X7)
| ~ apply(X6,X10,X8) )
| member(X8,image2(X6,X7)) ) ),
inference(skolemize,[status(esa)],[44]) ).
fof(46,plain,
! [X6,X7,X8,X10] :
( ( ~ member(X10,X7)
| ~ apply(X6,X10,X8)
| member(X8,image2(X6,X7)) )
& ( ~ member(X8,image2(X6,X7))
| ( member(esk8_3(X6,X7,X8),X7)
& apply(X6,esk8_3(X6,X7,X8),X8) ) ) ),
inference(shift_quantors,[status(thm)],[45]) ).
fof(47,plain,
! [X6,X7,X8,X10] :
( ( ~ member(X10,X7)
| ~ apply(X6,X10,X8)
| member(X8,image2(X6,X7)) )
& ( member(esk8_3(X6,X7,X8),X7)
| ~ member(X8,image2(X6,X7)) )
& ( apply(X6,esk8_3(X6,X7,X8),X8)
| ~ member(X8,image2(X6,X7)) ) ),
inference(distribute,[status(thm)],[46]) ).
cnf(50,plain,
( member(X1,image2(X2,X3))
| ~ apply(X2,X4,X1)
| ~ member(X4,X3) ),
inference(split_conjunct,[status(thm)],[47]) ).
fof(51,negated_conjecture,
? [X4,X1,X2,X8] :
( maps(X4,X1,X2)
& subset(X8,X1)
& ~ subset(X8,inverse_image2(X4,image2(X4,X8))) ),
inference(fof_nnf,[status(thm)],[6]) ).
fof(52,negated_conjecture,
? [X9,X10,X11,X12] :
( maps(X9,X10,X11)
& subset(X12,X10)
& ~ subset(X12,inverse_image2(X9,image2(X9,X12))) ),
inference(variable_rename,[status(thm)],[51]) ).
fof(53,negated_conjecture,
( maps(esk9_0,esk10_0,esk11_0)
& subset(esk12_0,esk10_0)
& ~ subset(esk12_0,inverse_image2(esk9_0,image2(esk9_0,esk12_0))) ),
inference(skolemize,[status(esa)],[52]) ).
cnf(54,negated_conjecture,
~ subset(esk12_0,inverse_image2(esk9_0,image2(esk9_0,esk12_0))),
inference(split_conjunct,[status(thm)],[53]) ).
cnf(55,negated_conjecture,
subset(esk12_0,esk10_0),
inference(split_conjunct,[status(thm)],[53]) ).
cnf(56,negated_conjecture,
maps(esk9_0,esk10_0,esk11_0),
inference(split_conjunct,[status(thm)],[53]) ).
cnf(58,negated_conjecture,
( member(X1,esk10_0)
| ~ member(X1,esk12_0) ),
inference(spm,[status(thm)],[14,55,theory(equality)]) ).
cnf(59,plain,
( member(X1,inverse_image2(X2,X3))
| ~ member(esk7_3(X2,X4,X1),X3)
| ~ member(X1,inverse_image2(X2,X4)) ),
inference(spm,[status(thm)],[42,40,theory(equality)]) ).
cnf(61,plain,
( member(esk7_3(X1,X2,X3),image2(X1,X4))
| ~ member(X3,X4)
| ~ member(X3,inverse_image2(X1,X2)) ),
inference(spm,[status(thm)],[50,40,theory(equality)]) ).
cnf(63,plain,
( member(X1,inverse_image2(X2,X3))
| ~ member(esk2_4(X2,X4,X5,X1),X3)
| ~ maps(X2,X4,X5)
| ~ member(X1,X4) ),
inference(spm,[status(thm)],[42,20,theory(equality)]) ).
cnf(118,plain,
( member(X1,inverse_image2(X2,image2(X2,X3)))
| ~ member(X1,inverse_image2(X2,X4))
| ~ member(X1,X3) ),
inference(spm,[status(thm)],[59,61,theory(equality)]) ).
cnf(132,plain,
( member(X1,inverse_image2(X2,X3))
| ~ maps(X2,X4,X3)
| ~ member(X1,X4) ),
inference(spm,[status(thm)],[63,21,theory(equality)]) ).
cnf(136,negated_conjecture,
( member(X1,inverse_image2(esk9_0,esk11_0))
| ~ member(X1,esk10_0) ),
inference(spm,[status(thm)],[132,56,theory(equality)]) ).
cnf(137,negated_conjecture,
( subset(X1,inverse_image2(esk9_0,esk11_0))
| ~ member(esk1_2(X1,inverse_image2(esk9_0,esk11_0)),esk10_0) ),
inference(spm,[status(thm)],[12,136,theory(equality)]) ).
cnf(143,negated_conjecture,
( subset(X1,inverse_image2(esk9_0,esk11_0))
| ~ member(esk1_2(X1,inverse_image2(esk9_0,esk11_0)),esk12_0) ),
inference(spm,[status(thm)],[137,58,theory(equality)]) ).
cnf(147,negated_conjecture,
subset(esk12_0,inverse_image2(esk9_0,esk11_0)),
inference(spm,[status(thm)],[143,13,theory(equality)]) ).
cnf(148,negated_conjecture,
( member(X1,inverse_image2(esk9_0,esk11_0))
| ~ member(X1,esk12_0) ),
inference(spm,[status(thm)],[14,147,theory(equality)]) ).
cnf(152,negated_conjecture,
( member(X1,inverse_image2(esk9_0,image2(esk9_0,X2)))
| ~ member(X1,X2)
| ~ member(X1,esk12_0) ),
inference(spm,[status(thm)],[118,148,theory(equality)]) ).
cnf(159,negated_conjecture,
( subset(X1,inverse_image2(esk9_0,image2(esk9_0,X2)))
| ~ member(esk1_2(X1,inverse_image2(esk9_0,image2(esk9_0,X2))),esk12_0)
| ~ member(esk1_2(X1,inverse_image2(esk9_0,image2(esk9_0,X2))),X2) ),
inference(spm,[status(thm)],[12,152,theory(equality)]) ).
cnf(3361,negated_conjecture,
( subset(esk12_0,inverse_image2(esk9_0,image2(esk9_0,X1)))
| ~ member(esk1_2(esk12_0,inverse_image2(esk9_0,image2(esk9_0,X1))),X1) ),
inference(spm,[status(thm)],[159,13,theory(equality)]) ).
cnf(3409,negated_conjecture,
subset(esk12_0,inverse_image2(esk9_0,image2(esk9_0,esk12_0))),
inference(spm,[status(thm)],[3361,13,theory(equality)]) ).
cnf(3451,negated_conjecture,
$false,
inference(sr,[status(thm)],[3409,54,theory(equality)]) ).
cnf(3452,negated_conjecture,
$false,
3451,
[proof] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% % SZS status Started for /home/graph/tptp/TPTP/Problems/SET/SET754+4.p
% --creating new selector for [SET006+0.ax, SET006+1.ax]
% -running prover on /tmp/tmp0DCfaC/sel_SET754+4.p_1 with time limit 29
% -prover status Theorem
% Problem SET754+4.p solved in phase 0.
% % SZS status Theorem for /home/graph/tptp/TPTP/Problems/SET/SET754+4.p
% % SZS status Ended for /home/graph/tptp/TPTP/Problems/SET/SET754+4.p
% Solved 1 out of 1.
% # Problem is unsatisfiable (or provable), constructing proof object
% # SZS status Theorem
% # SZS output start CNFRefutation.
% See solution above
% # SZS output end CNFRefutation
%
%------------------------------------------------------------------------------