TSTP Solution File: SEU249+1 by Otter---3.3

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Otter---3.3
% Problem  : SEU249+1 : TPTP v8.1.0. Released v3.3.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : otter-tptp-script %s

% Computer : n009.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 : Wed Jul 27 13:15:20 EDT 2022

% Result   : Timeout 299.82s 300.01s
% Output   : None 
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----No solution output by system
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.12  % Problem  : SEU249+1 : TPTP v8.1.0. Released v3.3.0.
% 0.12/0.13  % Command  : otter-tptp-script %s
% 0.12/0.33  % Computer : n009.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 : Wed Jul 27 07:30:36 EDT 2022
% 0.20/0.34  % CPUTime  : 
% 1.84/2.05  ----- Otter 3.3f, August 2004 -----
% 1.84/2.05  The process was started by sandbox2 on n009.cluster.edu,
% 1.84/2.05  Wed Jul 27 07:30:36 2022
% 1.84/2.05  The command was "./otter".  The process ID is 3081.
% 1.84/2.05  
% 1.84/2.05  set(prolog_style_variables).
% 1.84/2.05  set(auto).
% 1.84/2.05     dependent: set(auto1).
% 1.84/2.05     dependent: set(process_input).
% 1.84/2.05     dependent: clear(print_kept).
% 1.84/2.05     dependent: clear(print_new_demod).
% 1.84/2.05     dependent: clear(print_back_demod).
% 1.84/2.05     dependent: clear(print_back_sub).
% 1.84/2.05     dependent: set(control_memory).
% 1.84/2.05     dependent: assign(max_mem, 12000).
% 1.84/2.05     dependent: assign(pick_given_ratio, 4).
% 1.84/2.05     dependent: assign(stats_level, 1).
% 1.84/2.05     dependent: assign(max_seconds, 10800).
% 1.84/2.05  clear(print_given).
% 1.84/2.05  
% 1.84/2.05  formula_list(usable).
% 1.84/2.05  all A (A=A).
% 1.84/2.05  all A B (in(A,B)-> -in(B,A)).
% 1.84/2.05  all A (empty(A)->function(A)).
% 1.84/2.05  all A (relation(A)&empty(A)&function(A)->relation(A)&function(A)&one_to_one(A)).
% 1.84/2.05  all A B (set_union2(A,B)=set_union2(B,A)).
% 1.84/2.05  all A B (set_intersection2(A,B)=set_intersection2(B,A)).
% 1.84/2.05  all A B C (C=set_union2(A,B)<-> (all D (in(D,C)<->in(D,A)|in(D,B)))).
% 1.84/2.05  all A B C (C=set_intersection2(A,B)<-> (all D (in(D,C)<->in(D,A)&in(D,B)))).
% 1.84/2.05  all A (relation(A)->relation_field(A)=set_union2(relation_dom(A),relation_rng(A))).
% 1.84/2.05  all A (relation(A)-> (all B (relation_restriction(A,B)=set_intersection2(A,cartesian_product2(B,B))))).
% 1.84/2.05  $T.
% 1.84/2.05  $T.
% 1.84/2.05  $T.
% 1.84/2.05  $T.
% 1.84/2.05  all A B (relation(A)->relation(relation_restriction(A,B))).
% 1.84/2.05  $T.
% 1.84/2.05  $T.
% 1.84/2.05  $T.
% 1.84/2.05  $T.
% 1.84/2.05  all A B (relation(A)->relation(relation_dom_restriction(A,B))).
% 1.84/2.05  all A B (relation(B)->relation(relation_rng_restriction(A,B))).
% 1.84/2.05  $T.
% 1.84/2.05  all A exists B element(B,A).
% 1.84/2.05  empty(empty_set).
% 1.84/2.05  all A B (-empty(A)-> -empty(set_union2(A,B))).
% 1.84/2.05  all A B (-empty(A)-> -empty(set_union2(B,A))).
% 1.84/2.05  all A B (relation(A)&function(A)->relation(relation_dom_restriction(A,B))&function(relation_dom_restriction(A,B))).
% 1.84/2.05  all A B (relation(B)&function(B)->relation(relation_rng_restriction(A,B))&function(relation_rng_restriction(A,B))).
% 1.84/2.05  all A B (set_union2(A,A)=A).
% 1.84/2.05  all A B (set_intersection2(A,A)=A).
% 1.84/2.05  all A B (relation(B)->subset(relation_dom(relation_rng_restriction(A,B)),relation_dom(B))).
% 1.84/2.05  exists A (relation(A)&function(A)).
% 1.84/2.05  exists A empty(A).
% 1.84/2.05  exists A (relation(A)&empty(A)&function(A)).
% 1.84/2.05  exists A (-empty(A)).
% 1.84/2.05  exists A (relation(A)&function(A)&one_to_one(A)).
% 1.84/2.05  all A B subset(A,A).
% 1.84/2.05  all A B (relation(B)->relation_rng(relation_rng_restriction(A,B))=set_intersection2(relation_rng(B),A)).
% 1.84/2.05  all A B (relation(B)->relation_restriction(B,A)=relation_dom_restriction(relation_rng_restriction(A,B),A)).
% 1.84/2.05  all A B (relation(B)->relation_restriction(B,A)=relation_rng_restriction(A,relation_dom_restriction(B,A))).
% 1.84/2.05  -(all A B C (relation(C)-> (in(A,relation_field(relation_restriction(C,B)))->in(A,relation_field(C))&in(A,B)))).
% 1.84/2.05  all A (set_union2(A,empty_set)=A).
% 1.84/2.05  all A B (in(A,B)->element(A,B)).
% 1.84/2.05  all A (set_intersection2(A,empty_set)=empty_set).
% 1.84/2.05  all A B (element(A,B)->empty(B)|in(A,B)).
% 1.84/2.05  all A B (element(A,powerset(B))<->subset(A,B)).
% 1.84/2.05  all A B C (in(A,B)&element(B,powerset(C))->element(A,C)).
% 1.84/2.05  all A B C (-(in(A,B)&element(B,powerset(C))&empty(C))).
% 1.84/2.05  all A (empty(A)->A=empty_set).
% 1.84/2.05  all A B (-(in(A,B)&empty(B))).
% 1.84/2.05  all A B (-(empty(A)&A!=B&empty(B))).
% 1.84/2.05  all A B (relation(B)->relation_dom(relation_dom_restriction(B,A))=set_intersection2(relation_dom(B),A)).
% 1.84/2.05  all A B (relation(B)->subset(relation_rng(relation_dom_restriction(B,A)),relation_rng(B))).
% 1.84/2.05  end_of_list.
% 1.84/2.05  
% 1.84/2.05  -------> usable clausifies to:
% 1.84/2.05  
% 1.84/2.05  list(usable).
% 1.84/2.05  0 [] A=A.
% 1.84/2.05  0 [] -in(A,B)| -in(B,A).
% 1.84/2.05  0 [] -empty(A)|function(A).
% 1.84/2.05  0 [] -relation(A)| -empty(A)| -function(A)|one_to_one(A).
% 1.84/2.05  0 [] set_union2(A,B)=set_union2(B,A).
% 1.84/2.05  0 [] set_intersection2(A,B)=set_intersection2(B,A).
% 1.84/2.05  0 [] C!=set_union2(A,B)| -in(D,C)|in(D,A)|in(D,B).
% 1.84/2.05  0 [] C!=set_union2(A,B)|in(D,C)| -in(D,A).
% 1.84/2.05  0 [] C!=set_union2(A,B)|in(D,C)| -in(D,B).
% 1.84/2.05  0 [] C=set_union2(A,B)|in($f1(A,B,C),C)|in($f1(A,B,C),A)|in($f1(A,B,C),B).
% 1.84/2.05  0 [] C=set_union2(A,B)| -in($f1(A,B,C),C)| -in($f1(A,B,C),A).
% 1.84/2.05  0 [] C=set_union2(A,B)| -in($f1(A,B,C),C)| -in($f1(A,B,C),B).
% 1.84/2.05  0 [] C!=set_intersection2(A,B)| -in(D,C)|in(D,A).
% 1.84/2.05  0 [] C!=set_intersection2(A,B)| -in(D,C)|in(D,B).
% 1.84/2.05  0 [] C!=set_intersection2(A,B)|in(D,C)| -in(D,A)| -in(D,B).
% 1.84/2.05  0 [] C=set_intersection2(A,B)|in($f2(A,B,C),C)|in($f2(A,B,C),A).
% 1.84/2.05  0 [] C=set_intersection2(A,B)|in($f2(A,B,C),C)|in($f2(A,B,C),B).
% 1.84/2.05  0 [] C=set_intersection2(A,B)| -in($f2(A,B,C),C)| -in($f2(A,B,C),A)| -in($f2(A,B,C),B).
% 1.84/2.05  0 [] -relation(A)|relation_field(A)=set_union2(relation_dom(A),relation_rng(A)).
% 1.84/2.05  0 [] -relation(A)|relation_restriction(A,B)=set_intersection2(A,cartesian_product2(B,B)).
% 1.84/2.05  0 [] $T.
% 1.84/2.05  0 [] $T.
% 1.84/2.05  0 [] $T.
% 1.84/2.05  0 [] $T.
% 1.84/2.05  0 [] -relation(A)|relation(relation_restriction(A,B)).
% 1.84/2.05  0 [] $T.
% 1.84/2.05  0 [] $T.
% 1.84/2.05  0 [] $T.
% 1.84/2.05  0 [] $T.
% 1.84/2.05  0 [] -relation(A)|relation(relation_dom_restriction(A,B)).
% 1.84/2.05  0 [] -relation(B)|relation(relation_rng_restriction(A,B)).
% 1.84/2.05  0 [] $T.
% 1.84/2.05  0 [] element($f3(A),A).
% 1.84/2.05  0 [] empty(empty_set).
% 1.84/2.05  0 [] empty(A)| -empty(set_union2(A,B)).
% 1.84/2.05  0 [] empty(A)| -empty(set_union2(B,A)).
% 1.84/2.05  0 [] -relation(A)| -function(A)|relation(relation_dom_restriction(A,B)).
% 1.84/2.05  0 [] -relation(A)| -function(A)|function(relation_dom_restriction(A,B)).
% 1.84/2.05  0 [] -relation(B)| -function(B)|relation(relation_rng_restriction(A,B)).
% 1.84/2.05  0 [] -relation(B)| -function(B)|function(relation_rng_restriction(A,B)).
% 1.84/2.05  0 [] set_union2(A,A)=A.
% 1.84/2.05  0 [] set_intersection2(A,A)=A.
% 1.84/2.05  0 [] -relation(B)|subset(relation_dom(relation_rng_restriction(A,B)),relation_dom(B)).
% 1.84/2.05  0 [] relation($c1).
% 1.84/2.05  0 [] function($c1).
% 1.84/2.05  0 [] empty($c2).
% 1.84/2.05  0 [] relation($c3).
% 1.84/2.05  0 [] empty($c3).
% 1.84/2.05  0 [] function($c3).
% 1.84/2.05  0 [] -empty($c4).
% 1.84/2.05  0 [] relation($c5).
% 1.84/2.05  0 [] function($c5).
% 1.84/2.05  0 [] one_to_one($c5).
% 1.84/2.05  0 [] subset(A,A).
% 1.84/2.05  0 [] -relation(B)|relation_rng(relation_rng_restriction(A,B))=set_intersection2(relation_rng(B),A).
% 1.84/2.05  0 [] -relation(B)|relation_restriction(B,A)=relation_dom_restriction(relation_rng_restriction(A,B),A).
% 1.84/2.05  0 [] -relation(B)|relation_restriction(B,A)=relation_rng_restriction(A,relation_dom_restriction(B,A)).
% 1.84/2.05  0 [] relation($c6).
% 1.84/2.05  0 [] in($c8,relation_field(relation_restriction($c6,$c7))).
% 1.84/2.05  0 [] -in($c8,relation_field($c6))| -in($c8,$c7).
% 1.84/2.05  0 [] set_union2(A,empty_set)=A.
% 1.84/2.05  0 [] -in(A,B)|element(A,B).
% 1.84/2.05  0 [] set_intersection2(A,empty_set)=empty_set.
% 1.84/2.05  0 [] -element(A,B)|empty(B)|in(A,B).
% 1.84/2.05  0 [] -element(A,powerset(B))|subset(A,B).
% 1.84/2.05  0 [] element(A,powerset(B))| -subset(A,B).
% 1.84/2.05  0 [] -in(A,B)| -element(B,powerset(C))|element(A,C).
% 1.84/2.05  0 [] -in(A,B)| -element(B,powerset(C))| -empty(C).
% 1.84/2.05  0 [] -empty(A)|A=empty_set.
% 1.84/2.05  0 [] -in(A,B)| -empty(B).
% 1.84/2.05  0 [] -empty(A)|A=B| -empty(B).
% 1.84/2.05  0 [] -relation(B)|relation_dom(relation_dom_restriction(B,A))=set_intersection2(relation_dom(B),A).
% 1.84/2.05  0 [] -relation(B)|subset(relation_rng(relation_dom_restriction(B,A)),relation_rng(B)).
% 1.84/2.05  end_of_list.
% 1.84/2.05  
% 1.84/2.05  SCAN INPUT: prop=0, horn=0, equality=1, symmetry=0, max_lits=4.
% 1.84/2.05  
% 1.84/2.05  This ia a non-Horn set with equality.  The strategy will be
% 1.84/2.05  Knuth-Bendix, ordered hyper_res, factoring, and unit
% 1.84/2.05  deletion, with positive clauses in sos and nonpositive
% 1.84/2.05  clauses in usable.
% 1.84/2.05  
% 1.84/2.05     dependent: set(knuth_bendix).
% 1.84/2.05     dependent: set(anl_eq).
% 1.84/2.05     dependent: set(para_from).
% 1.84/2.05     dependent: set(para_into).
% 1.84/2.05     dependent: clear(para_from_right).
% 1.84/2.05     dependent: clear(para_into_right).
% 1.84/2.05     dependent: set(para_from_vars).
% 1.84/2.05     dependent: set(eq_units_both_ways).
% 1.84/2.05     dependent: set(dynamic_demod_all).
% 1.84/2.05     dependent: set(dynamic_demod).
% 1.84/2.05     dependent: set(order_eq).
% 1.84/2.05     dependent: set(back_demod).
% 1.84/2.05     dependent: set(lrpo).
% 1.84/2.05     dependent: set(hyper_res).
% 1.84/2.05     dependent: set(unit_deletion).
% 1.84/2.05     dependent: set(factor).
% 1.84/2.05  
% 1.84/2.05  ------------> process usable:
% 1.84/2.05  ** KEPT (pick-wt=6): 1 [] -in(A,B)| -in(B,A).
% 1.84/2.05  ** KEPT (pick-wt=4): 2 [] -empty(A)|function(A).
% 1.84/2.05  ** KEPT (pick-wt=8): 3 [] -relation(A)| -empty(A)| -function(A)|one_to_one(A).
% 1.84/2.05  ** KEPT (pick-wt=14): 4 [] A!=set_union2(B,C)| -in(D,A)|in(D,B)|in(D,C).
% 1.84/2.05  ** KEPT (pick-wt=11): 5 [] A!=set_union2(B,C)|in(D,A)| -in(D,B).
% 1.84/2.05  ** KEPT (pick-wt=11): 6 [] A!=set_union2(B,C)|in(D,A)| -in(D,C).
% 1.84/2.05  ** KEPT (pick-wt=17): 7 [] A=set_union2(B,C)| -in($f1(B,C,A),A)| -in($f1(B,C,A),B).
% 1.84/2.05  ** KEPT (pick-wt=17): 8 [] A=set_union2(B,C)| -in($f1(B,C,A),A)| -in($f1(B,C,A),C).
% 1.84/2.05  ** KEPT (pick-wt=11): 9 [] A!=set_intersection2(B,C)| -in(D,A)|in(D,B).
% 1.84/2.05  ** KEPT (pick-wt=11): 10 [] A!=set_intersection2(B,C)| -in(D,A)|in(D,C).
% 1.84/2.05  ** KEPT (pick-wt=14): 11 [] A!=set_intersection2(B,C)|in(D,A)| -in(D,B)| -in(D,C).
% 1.84/2.05  ** KEPT (pick-wt=23): 12 [] A=set_intersection2(B,C)| -in($f2(B,C,A),A)| -in($f2(B,C,A),B)| -in($f2(B,C,A),C).
% 1.84/2.05  ** KEPT (pick-wt=10): 14 [copy,13,flip.2] -relation(A)|set_union2(relation_dom(A),relation_rng(A))=relation_field(A).
% 1.84/2.05  ** KEPT (pick-wt=11): 16 [copy,15,flip.2] -relation(A)|set_intersection2(A,cartesian_product2(B,B))=relation_restriction(A,B).
% 1.84/2.05  ** KEPT (pick-wt=6): 17 [] -relation(A)|relation(relation_restriction(A,B)).
% 1.84/2.05  ** KEPT (pick-wt=6): 18 [] -relation(A)|relation(relation_dom_restriction(A,B)).
% 1.84/2.05  ** KEPT (pick-wt=6): 19 [] -relation(A)|relation(relation_rng_restriction(B,A)).
% 1.84/2.05  ** KEPT (pick-wt=6): 20 [] empty(A)| -empty(set_union2(A,B)).
% 1.84/2.05  ** KEPT (pick-wt=6): 21 [] empty(A)| -empty(set_union2(B,A)).
% 1.84/2.05    Following clause subsumed by 18 during input processing: 0 [] -relation(A)| -function(A)|relation(relation_dom_restriction(A,B)).
% 1.84/2.05  ** KEPT (pick-wt=8): 22 [] -relation(A)| -function(A)|function(relation_dom_restriction(A,B)).
% 1.84/2.05    Following clause subsumed by 19 during input processing: 0 [] -relation(A)| -function(A)|relation(relation_rng_restriction(B,A)).
% 1.84/2.05  ** KEPT (pick-wt=8): 23 [] -relation(A)| -function(A)|function(relation_rng_restriction(B,A)).
% 1.84/2.05  ** KEPT (pick-wt=9): 24 [] -relation(A)|subset(relation_dom(relation_rng_restriction(B,A)),relation_dom(A)).
% 1.84/2.05  ** KEPT (pick-wt=2): 25 [] -empty($c4).
% 1.84/2.05  ** KEPT (pick-wt=11): 26 [] -relation(A)|relation_rng(relation_rng_restriction(B,A))=set_intersection2(relation_rng(A),B).
% 1.84/2.05  ** KEPT (pick-wt=11): 28 [copy,27,flip.2] -relation(A)|relation_dom_restriction(relation_rng_restriction(B,A),B)=relation_restriction(A,B).
% 1.84/2.05  ** KEPT (pick-wt=11): 30 [copy,29,flip.2] -relation(A)|relation_rng_restriction(B,relation_dom_restriction(A,B))=relation_restriction(A,B).
% 1.84/2.05  ** KEPT (pick-wt=7): 31 [] -in($c8,relation_field($c6))| -in($c8,$c7).
% 1.84/2.05  ** KEPT (pick-wt=6): 32 [] -in(A,B)|element(A,B).
% 1.84/2.05  ** KEPT (pick-wt=8): 33 [] -element(A,B)|empty(B)|in(A,B).
% 1.84/2.05  ** KEPT (pick-wt=7): 34 [] -element(A,powerset(B))|subset(A,B).
% 1.84/2.05  ** KEPT (pick-wt=7): 35 [] element(A,powerset(B))| -subset(A,B).
% 1.84/2.05  ** KEPT (pick-wt=10): 36 [] -in(A,B)| -element(B,powerset(C))|element(A,C).
% 1.84/2.05  ** KEPT (pick-wt=9): 37 [] -in(A,B)| -element(B,powerset(C))| -empty(C).
% 1.84/2.05  ** KEPT (pick-wt=5): 38 [] -empty(A)|A=empty_set.
% 1.84/2.05  ** KEPT (pick-wt=5): 39 [] -in(A,B)| -empty(B).
% 1.84/2.05  ** KEPT (pick-wt=7): 40 [] -empty(A)|A=B| -empty(B).
% 1.84/2.05  ** KEPT (pick-wt=11): 41 [] -relation(A)|relation_dom(relation_dom_restriction(A,B))=set_intersection2(relation_dom(A),B).
% 1.84/2.05  ** KEPT (pick-wt=9): 42 [] -relation(A)|subset(relation_rng(relation_dom_restriction(A,B)),relation_rng(A)).
% 1.84/2.05  
% 1.84/2.05  ------------> process sos:
% 1.84/2.05  ** KEPT (pick-wt=3): 53 [] A=A.
% 1.84/2.05  ** KEPT (pick-wt=7): 54 [] set_union2(A,B)=set_union2(B,A).
% 1.84/2.05  ** KEPT (pick-wt=7): 55 [] set_intersection2(A,B)=set_intersection2(B,A).
% 1.84/2.05  ** KEPT (pick-wt=23): 56 [] A=set_union2(B,C)|in($f1(B,C,A),A)|in($f1(B,C,A),B)|in($f1(B,C,A),C).
% 1.84/2.05  ** KEPT (pick-wt=17): 57 [] A=set_intersection2(B,C)|in($f2(B,C,A),A)|in($f2(B,C,A),B).
% 1.84/2.05  ** KEPT (pick-wt=17): 58 [] A=set_intersection2(B,C)|in($f2(B,C,A),A)|in($f2(B,C,A),C).
% 1.84/2.05  ** KEPT (pick-wt=4): 59 [] element($f3(A),A).
% 1.84/2.05  ** KEPT (pick-wt=2): 60 [] empty(empty_set).
% 1.84/2.05  ** KEPT (pick-wt=5): 61 [] set_union2(A,A)=A.
% 1.84/2.05  ---> New Demodulator: 62 [new_demod,61] set_union2(A,A)=A.
% 1.84/2.05  ** KEPT (pick-wt=5): 63 [] set_intersection2(A,A)=A.
% 1.84/2.05  ---> New Demodulator: 64 [new_demod,63] set_intersection2(A,A)=A.
% 1.84/2.05  ** KEPT (pick-wt=2): 65 [] relation($c1).
% 1.84/2.05  ** KEPT (pick-wt=2): 66 [] function($c1).
% 1.84/2.05  ** KEPT (pick-wt=2): 67 [] empty($c2).
% 1.84/2.05  ** KEPT (pick-wt=2): 68 [] relation($c3).
% 1.84/2.05  ** KEPT (pick-wt=2): 69 [] empty($c3).
% 1.84/2.05  ** KEPT (pick-wt=2): 70 [] function($c3).
% 1.84/2.05  ** KEPT (pick-wt=2): 71 [] relation($c5).
% 1.84/2.05  ** KEPT (pick-wt=2): 72 [] function($c5).
% 1.84/2.05  ** KEPT (pick-wt=2): 73 [] one_to_one($c5).
% 1.84/2.05  ** KEPT (pick-wt=3): 74 [] subset(A,A).
% 1.84/2.05  ** KEPT (pick-wt=2): 75 [] relation($c6).
% 1.84/2.05  ** KEPT (pick-wt=6): 76 [] in($c8,relation_field(relation_restriction($c6,$c7))).
% 1.84/2.05  ** KEPT (pick-wt=5): 77 [] set_union2(A,empty_set)=A.
% 1.84/2.05  ---> New Demodulator: 78 [new_demod,77] set_union2(A,empty_set)=A.
% 1.84/2.05  ** KEPT (pick-wt=5): 79 [] set_intersection2(A,empty_set)=empty_set.
% 1.84/2.05  ---> New Demodulator: 80 [new_demod,79] set_intersection2(A,empty_set)=empty_set.
% 1.84/2.05    Following clause subsumed by 53 during input processing: 0 [copy,53,fAlarm clock 
% 299.82/300.01  Otter interrupted
% 299.82/300.01  PROOF NOT FOUND
%------------------------------------------------------------------------------