TSTP Solution File: SYO776+1 by iProver---3.8

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : iProver---3.8
% Problem  : SYO776+1 : TPTP v8.1.2. Released v7.4.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_iprover %s %d THM

% Computer : n008.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 : Fri Sep  1 04:41:20 EDT 2023

% Result   : Satisfiable 232.01s 30.82s
% Output   : Saturation 232.01s
% Verified : 
% SZS Type : ERROR: Analysing output (MakeTreeStats fails)

% Comments : 
%------------------------------------------------------------------------------
fof(f1,axiom,
    ? [X0] :
      ( ! [X3] :
          ( ~ f(X3,X0)
          | f(X3,X3) )
      & ? [X1] :
          ( f(X1,X0)
          & ? [X2] : ~ f(X1,X2) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_1) ).

fof(f2,axiom,
    ? [X0] :
      ( ~ f(X0,X0)
      & ? [X2] :
          ( ~ f(X2,X2)
          & f(X0,X2) )
      & ? [X1] :
          ( ~ f(X1,X1)
          & ? [X6] :
              ( f(X6,X0)
              & ? [X7] :
                  ( f(X7,X6)
                  & f(X1,X7) ) )
          & ? [X4] :
              ( f(X4,X1)
              & ? [X5] : ~ f(X4,X5) ) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_2) ).

fof(f3,axiom,
    ? [X0] :
    ! [X3] :
      ( ~ f(X3,X0)
      | ! [X8] : f(X3,X8) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_3) ).

fof(f4,axiom,
    ! [X3] :
    ? [X0] :
      ( f(X3,X0)
      & ? [X1] : ~ f(X1,X0) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_4) ).

fof(f5,axiom,
    ! [X3] :
    ? [X0] :
      ( f(X3,X0)
      & ~ f(X0,X0) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_5) ).

fof(f6,axiom,
    ! [X3,X8,X9] :
      ( f(X3,X9)
      | ~ f(X8,X9)
      | ~ f(X3,X8) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_6) ).

fof(f7,axiom,
    ! [X3,X8] :
      ( ! [X9] :
          ( ~ f(X3,X9)
          | f(X8,X9) )
      | f(X3,X8) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_7) ).

fof(f8,axiom,
    ! [X3] :
      ( ~ f(X3,X3)
      | ! [X9] :
          ( f(X9,X9)
          | ~ f(X3,X9) )
      | ! [X8] :
          ( f(X8,X8)
          | ~ f(X8,X3) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_8) ).

fof(f9,plain,
    ? [X0] :
      ( ! [X1] :
          ( ~ f(X1,X0)
          | f(X1,X1) )
      & ? [X2] :
          ( f(X2,X0)
          & ? [X3] : ~ f(X2,X3) ) ),
    inference(rectify,[],[f1]) ).

fof(f10,plain,
    ? [X0] :
      ( ~ f(X0,X0)
      & ? [X1] :
          ( ~ f(X1,X1)
          & f(X0,X1) )
      & ? [X2] :
          ( ~ f(X2,X2)
          & ? [X3] :
              ( f(X3,X0)
              & ? [X4] :
                  ( f(X4,X3)
                  & f(X2,X4) ) )
          & ? [X5] :
              ( f(X5,X2)
              & ? [X6] : ~ f(X5,X6) ) ) ),
    inference(rectify,[],[f2]) ).

fof(f11,plain,
    ? [X0] :
    ! [X1] :
      ( ~ f(X1,X0)
      | ! [X2] : f(X1,X2) ),
    inference(rectify,[],[f3]) ).

fof(f12,plain,
    ! [X0] :
    ? [X1] :
      ( f(X0,X1)
      & ? [X2] : ~ f(X2,X1) ),
    inference(rectify,[],[f4]) ).

fof(f13,plain,
    ! [X0] :
    ? [X1] :
      ( f(X0,X1)
      & ~ f(X1,X1) ),
    inference(rectify,[],[f5]) ).

fof(f14,plain,
    ! [X0,X1,X2] :
      ( f(X0,X2)
      | ~ f(X1,X2)
      | ~ f(X0,X1) ),
    inference(rectify,[],[f6]) ).

fof(f15,plain,
    ! [X0,X1] :
      ( ! [X2] :
          ( ~ f(X0,X2)
          | f(X1,X2) )
      | f(X0,X1) ),
    inference(rectify,[],[f7]) ).

fof(f16,plain,
    ! [X0] :
      ( ~ f(X0,X0)
      | ! [X1] :
          ( f(X1,X1)
          | ~ f(X0,X1) )
      | ! [X2] :
          ( f(X2,X2)
          | ~ f(X2,X0) ) ),
    inference(rectify,[],[f8]) ).

fof(f17,plain,
    ( ? [X0] :
        ( ! [X1] :
            ( ~ f(X1,X0)
            | f(X1,X1) )
        & ? [X2] :
            ( f(X2,X0)
            & ? [X3] : ~ f(X2,X3) ) )
   => ( ! [X1] :
          ( ~ f(X1,sK0)
          | f(X1,X1) )
      & ? [X2] :
          ( f(X2,sK0)
          & ? [X3] : ~ f(X2,X3) ) ) ),
    introduced(choice_axiom,[]) ).

fof(f18,plain,
    ( ? [X2] :
        ( f(X2,sK0)
        & ? [X3] : ~ f(X2,X3) )
   => ( f(sK1,sK0)
      & ? [X3] : ~ f(sK1,X3) ) ),
    introduced(choice_axiom,[]) ).

fof(f19,plain,
    ( ? [X3] : ~ f(sK1,X3)
   => ~ f(sK1,sK2) ),
    introduced(choice_axiom,[]) ).

fof(f20,plain,
    ( ! [X1] :
        ( ~ f(X1,sK0)
        | f(X1,X1) )
    & f(sK1,sK0)
    & ~ f(sK1,sK2) ),
    inference(skolemisation,[status(esa),new_symbols(skolem,[sK0,sK1,sK2])],[f9,f19,f18,f17]) ).

fof(f21,plain,
    ( ? [X0] :
        ( ~ f(X0,X0)
        & ? [X1] :
            ( ~ f(X1,X1)
            & f(X0,X1) )
        & ? [X2] :
            ( ~ f(X2,X2)
            & ? [X3] :
                ( f(X3,X0)
                & ? [X4] :
                    ( f(X4,X3)
                    & f(X2,X4) ) )
            & ? [X5] :
                ( f(X5,X2)
                & ? [X6] : ~ f(X5,X6) ) ) )
   => ( ~ f(sK3,sK3)
      & ? [X1] :
          ( ~ f(X1,X1)
          & f(sK3,X1) )
      & ? [X2] :
          ( ~ f(X2,X2)
          & ? [X3] :
              ( f(X3,sK3)
              & ? [X4] :
                  ( f(X4,X3)
                  & f(X2,X4) ) )
          & ? [X5] :
              ( f(X5,X2)
              & ? [X6] : ~ f(X5,X6) ) ) ) ),
    introduced(choice_axiom,[]) ).

fof(f22,plain,
    ( ? [X1] :
        ( ~ f(X1,X1)
        & f(sK3,X1) )
   => ( ~ f(sK4,sK4)
      & f(sK3,sK4) ) ),
    introduced(choice_axiom,[]) ).

fof(f23,plain,
    ( ? [X2] :
        ( ~ f(X2,X2)
        & ? [X3] :
            ( f(X3,sK3)
            & ? [X4] :
                ( f(X4,X3)
                & f(X2,X4) ) )
        & ? [X5] :
            ( f(X5,X2)
            & ? [X6] : ~ f(X5,X6) ) )
   => ( ~ f(sK5,sK5)
      & ? [X3] :
          ( f(X3,sK3)
          & ? [X4] :
              ( f(X4,X3)
              & f(sK5,X4) ) )
      & ? [X5] :
          ( f(X5,sK5)
          & ? [X6] : ~ f(X5,X6) ) ) ),
    introduced(choice_axiom,[]) ).

fof(f24,plain,
    ( ? [X3] :
        ( f(X3,sK3)
        & ? [X4] :
            ( f(X4,X3)
            & f(sK5,X4) ) )
   => ( f(sK6,sK3)
      & ? [X4] :
          ( f(X4,sK6)
          & f(sK5,X4) ) ) ),
    introduced(choice_axiom,[]) ).

fof(f25,plain,
    ( ? [X4] :
        ( f(X4,sK6)
        & f(sK5,X4) )
   => ( f(sK7,sK6)
      & f(sK5,sK7) ) ),
    introduced(choice_axiom,[]) ).

fof(f26,plain,
    ( ? [X5] :
        ( f(X5,sK5)
        & ? [X6] : ~ f(X5,X6) )
   => ( f(sK8,sK5)
      & ? [X6] : ~ f(sK8,X6) ) ),
    introduced(choice_axiom,[]) ).

fof(f27,plain,
    ( ? [X6] : ~ f(sK8,X6)
   => ~ f(sK8,sK9) ),
    introduced(choice_axiom,[]) ).

fof(f28,plain,
    ( ~ f(sK3,sK3)
    & ~ f(sK4,sK4)
    & f(sK3,sK4)
    & ~ f(sK5,sK5)
    & f(sK6,sK3)
    & f(sK7,sK6)
    & f(sK5,sK7)
    & f(sK8,sK5)
    & ~ f(sK8,sK9) ),
    inference(skolemisation,[status(esa),new_symbols(skolem,[sK3,sK4,sK5,sK6,sK7,sK8,sK9])],[f10,f27,f26,f25,f24,f23,f22,f21]) ).

fof(f29,plain,
    ( ? [X0] :
      ! [X1] :
        ( ~ f(X1,X0)
        | ! [X2] : f(X1,X2) )
   => ! [X1] :
        ( ~ f(X1,sK10)
        | ! [X2] : f(X1,X2) ) ),
    introduced(choice_axiom,[]) ).

fof(f30,plain,
    ! [X1] :
      ( ~ f(X1,sK10)
      | ! [X2] : f(X1,X2) ),
    inference(skolemisation,[status(esa),new_symbols(skolem,[sK10])],[f11,f29]) ).

fof(f31,plain,
    ! [X0] :
      ( ? [X1] :
          ( f(X0,X1)
          & ? [X2] : ~ f(X2,X1) )
     => ( f(X0,sK11(X0))
        & ? [X2] : ~ f(X2,sK11(X0)) ) ),
    introduced(choice_axiom,[]) ).

fof(f32,plain,
    ! [X0] :
      ( ? [X2] : ~ f(X2,sK11(X0))
     => ~ f(sK12(X0),sK11(X0)) ),
    introduced(choice_axiom,[]) ).

fof(f33,plain,
    ! [X0] :
      ( f(X0,sK11(X0))
      & ~ f(sK12(X0),sK11(X0)) ),
    inference(skolemisation,[status(esa),new_symbols(skolem,[sK11,sK12])],[f12,f32,f31]) ).

fof(f34,plain,
    ! [X0] :
      ( ? [X1] :
          ( f(X0,X1)
          & ~ f(X1,X1) )
     => ( f(X0,sK13(X0))
        & ~ f(sK13(X0),sK13(X0)) ) ),
    introduced(choice_axiom,[]) ).

fof(f35,plain,
    ! [X0] :
      ( f(X0,sK13(X0))
      & ~ f(sK13(X0),sK13(X0)) ),
    inference(skolemisation,[status(esa),new_symbols(skolem,[sK13])],[f13,f34]) ).

fof(f36,plain,
    ~ f(sK1,sK2),
    inference(cnf_transformation,[],[f20]) ).

fof(f37,plain,
    f(sK1,sK0),
    inference(cnf_transformation,[],[f20]) ).

fof(f38,plain,
    ! [X1] :
      ( ~ f(X1,sK0)
      | f(X1,X1) ),
    inference(cnf_transformation,[],[f20]) ).

fof(f39,plain,
    ~ f(sK8,sK9),
    inference(cnf_transformation,[],[f28]) ).

fof(f40,plain,
    f(sK8,sK5),
    inference(cnf_transformation,[],[f28]) ).

fof(f41,plain,
    f(sK5,sK7),
    inference(cnf_transformation,[],[f28]) ).

fof(f42,plain,
    f(sK7,sK6),
    inference(cnf_transformation,[],[f28]) ).

fof(f43,plain,
    f(sK6,sK3),
    inference(cnf_transformation,[],[f28]) ).

fof(f44,plain,
    ~ f(sK5,sK5),
    inference(cnf_transformation,[],[f28]) ).

fof(f45,plain,
    f(sK3,sK4),
    inference(cnf_transformation,[],[f28]) ).

fof(f46,plain,
    ~ f(sK4,sK4),
    inference(cnf_transformation,[],[f28]) ).

fof(f47,plain,
    ~ f(sK3,sK3),
    inference(cnf_transformation,[],[f28]) ).

fof(f48,plain,
    ! [X2,X1] :
      ( ~ f(X1,sK10)
      | f(X1,X2) ),
    inference(cnf_transformation,[],[f30]) ).

fof(f49,plain,
    ! [X0] : ~ f(sK12(X0),sK11(X0)),
    inference(cnf_transformation,[],[f33]) ).

fof(f50,plain,
    ! [X0] : f(X0,sK11(X0)),
    inference(cnf_transformation,[],[f33]) ).

fof(f51,plain,
    ! [X0] : ~ f(sK13(X0),sK13(X0)),
    inference(cnf_transformation,[],[f35]) ).

fof(f52,plain,
    ! [X0] : f(X0,sK13(X0)),
    inference(cnf_transformation,[],[f35]) ).

fof(f53,plain,
    ! [X2,X0,X1] :
      ( f(X0,X2)
      | ~ f(X1,X2)
      | ~ f(X0,X1) ),
    inference(cnf_transformation,[],[f14]) ).

fof(f54,plain,
    ! [X2,X0,X1] :
      ( ~ f(X0,X2)
      | f(X1,X2)
      | f(X0,X1) ),
    inference(cnf_transformation,[],[f15]) ).

fof(f55,plain,
    ! [X2,X0,X1] :
      ( ~ f(X0,X0)
      | f(X1,X1)
      | ~ f(X0,X1)
      | f(X2,X2)
      | ~ f(X2,X0) ),
    inference(cnf_transformation,[],[f16]) ).

cnf(c_49,plain,
    ( ~ f(X0,sK0)
    | f(X0,X0) ),
    inference(cnf_transformation,[],[f38]) ).

cnf(c_50,plain,
    f(sK1,sK0),
    inference(cnf_transformation,[],[f37]) ).

cnf(c_51,plain,
    ~ f(sK1,sK2),
    inference(cnf_transformation,[],[f36]) ).

cnf(c_52,plain,
    ~ f(sK3,sK3),
    inference(cnf_transformation,[],[f47]) ).

cnf(c_53,plain,
    ~ f(sK4,sK4),
    inference(cnf_transformation,[],[f46]) ).

cnf(c_54,plain,
    f(sK3,sK4),
    inference(cnf_transformation,[],[f45]) ).

cnf(c_55,plain,
    ~ f(sK5,sK5),
    inference(cnf_transformation,[],[f44]) ).

cnf(c_56,plain,
    f(sK6,sK3),
    inference(cnf_transformation,[],[f43]) ).

cnf(c_57,plain,
    f(sK7,sK6),
    inference(cnf_transformation,[],[f42]) ).

cnf(c_58,plain,
    f(sK5,sK7),
    inference(cnf_transformation,[],[f41]) ).

cnf(c_59,plain,
    f(sK8,sK5),
    inference(cnf_transformation,[],[f40]) ).

cnf(c_60,plain,
    ~ f(sK8,sK9),
    inference(cnf_transformation,[],[f39]) ).

cnf(c_61,plain,
    ( ~ f(X0,sK10)
    | f(X0,X1) ),
    inference(cnf_transformation,[],[f48]) ).

cnf(c_62,plain,
    f(X0,sK11(X0)),
    inference(cnf_transformation,[],[f50]) ).

cnf(c_63,plain,
    ~ f(sK12(X0),sK11(X0)),
    inference(cnf_transformation,[],[f49]) ).

cnf(c_64,plain,
    f(X0,sK13(X0)),
    inference(cnf_transformation,[],[f52]) ).

cnf(c_65,plain,
    ~ f(sK13(X0),sK13(X0)),
    inference(cnf_transformation,[],[f51]) ).

cnf(c_66,plain,
    ( ~ f(X0,X1)
    | ~ f(X2,X0)
    | f(X2,X1) ),
    inference(cnf_transformation,[],[f53]) ).

cnf(c_67,plain,
    ( ~ f(X0,X1)
    | f(X0,X2)
    | f(X2,X1) ),
    inference(cnf_transformation,[],[f54]) ).

cnf(c_68,plain,
    ( ~ f(X0,X1)
    | ~ f(X1,X1)
    | ~ f(X1,X2)
    | f(X0,X0)
    | f(X2,X2) ),
    inference(cnf_transformation,[],[f55]) ).

cnf(c_142,plain,
    ( ~ f(sK6,X0)
    | ~ f(sK7,sK6)
    | f(sK7,X0) ),
    inference(instantiation,[status(thm)],[c_66]) ).

cnf(c_143,plain,
    ( ~ f(sK6,sK3)
    | ~ f(sK7,sK6)
    | f(sK7,sK3) ),
    inference(instantiation,[status(thm)],[c_142]) ).

cnf(c_607,plain,
    ( ~ f(sK6,X0)
    | ~ f(sK6,sK6)
    | f(X0,X0)
    | f(sK7,sK7) ),
    inference(superposition,[status(thm)],[c_57,c_68]) ).

cnf(c_608,plain,
    ( ~ f(sK7,X0)
    | ~ f(sK7,sK7)
    | f(X0,X0)
    | f(sK5,sK5) ),
    inference(superposition,[status(thm)],[c_58,c_68]) ).

cnf(c_640,plain,
    ( ~ f(sK7,sK3)
    | ~ f(sK7,sK7)
    | f(sK3,sK3)
    | f(sK5,sK5) ),
    inference(instantiation,[status(thm)],[c_608]) ).

cnf(c_641,plain,
    ( ~ f(sK6,sK3)
    | ~ f(sK6,sK6)
    | f(sK3,sK3)
    | f(sK7,sK7) ),
    inference(instantiation,[status(thm)],[c_607]) ).

cnf(c_692,plain,
    ( ~ f(X0,X1)
    | ~ f(X1,X1)
    | f(sK13(X1),sK13(X1))
    | f(X0,X0) ),
    inference(resolution,[status(thm)],[c_68,c_64]) ).

cnf(c_20569,plain,
    ( ~ f(X0,X1)
    | ~ f(X1,X1)
    | f(X0,X0) ),
    inference(forward_subsumption_resolution,[status(thm)],[c_692,c_65]) ).

cnf(c_382057,plain,
    ( f(X0,X0)
    | ~ f(X0,X1)
    | ~ f(X1,X1) ),
    inference(global_subsumption_just,[status(thm)],[c_68,c_20569]) ).

cnf(c_382058,plain,
    ( ~ f(X0,X1)
    | ~ f(X1,X1)
    | f(X0,X0) ),
    inference(renaming,[status(thm)],[c_382057]) ).

cnf(c_382062,plain,
    ( ~ f(sK6,sK6)
    | f(sK7,sK7) ),
    inference(superposition,[status(thm)],[c_57,c_382058]) ).

cnf(c_382063,plain,
    ( ~ f(sK7,sK7)
    | f(sK5,sK5) ),
    inference(superposition,[status(thm)],[c_58,c_382058]) ).

cnf(c_382065,plain,
    ( ~ f(sK11(X0),sK11(X0))
    | f(X0,X0) ),
    inference(superposition,[status(thm)],[c_62,c_382058]) ).

cnf(c_420174,plain,
    ~ f(sK6,sK6),
    inference(global_subsumption_just,[status(thm)],[c_382062,c_57,c_56,c_55,c_52,c_143,c_640,c_641]) ).

cnf(c_500320,plain,
    ~ f(sK7,sK7),
    inference(global_subsumption_just,[status(thm)],[c_382063,c_57,c_56,c_55,c_52,c_143,c_640]) ).


%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.13  % Problem  : SYO776+1 : TPTP v8.1.2. Released v7.4.0.
% 0.00/0.14  % Command  : run_iprover %s %d THM
% 0.15/0.36  % Computer : n008.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 : Sat Aug 26 04:44:32 EDT 2023
% 0.15/0.36  % CPUTime  : 
% 0.22/0.49  Running first-order theorem proving
% 0.22/0.49  Running: /export/starexec/sandbox/solver/bin/run_problem --schedule fof_schedule --no_cores 8 /export/starexec/sandbox/benchmark/theBenchmark.p 300
% 232.01/30.82  % SZS status Started for theBenchmark.p
% 232.01/30.82  % SZS status Satisfiable for theBenchmark.p
% 232.01/30.82  
% 232.01/30.82  %---------------- iProver v3.8 (pre SMT-COMP 2023/CASC 2023) ----------------%
% 232.01/30.82  
% 232.01/30.82  ------  iProver source info
% 232.01/30.82  
% 232.01/30.82  git: date: 2023-05-31 18:12:56 +0000
% 232.01/30.82  git: sha1: 8abddc1f627fd3ce0bcb8b4cbf113b3cc443d7b6
% 232.01/30.82  git: non_committed_changes: false
% 232.01/30.82  git: last_make_outside_of_git: false
% 232.01/30.82  
% 232.01/30.82  ------ Parsing...
% 232.01/30.82  ------ Clausification by vclausify_rel  & Parsing by iProver...
% 232.01/30.82  
% 232.01/30.82  ------ Preprocessing... sf_s  rm: 0 0s  sf_e  pe_s  pe_e 
% 232.01/30.82  
% 232.01/30.82  ------ Preprocessing... gs_s  sp: 0 0s  gs_e  snvd_s sp: 0 0s snvd_e 
% 232.01/30.82  ------ Proving...
% 232.01/30.82  ------ Problem Properties 
% 232.01/30.82  
% 232.01/30.82  
% 232.01/30.82  clauses                                 20
% 232.01/30.82  conjectures                             0
% 232.01/30.82  EPR                                     16
% 232.01/30.82  Horn                                    18
% 232.01/30.82  unary                                   15
% 232.01/30.82  binary                                  2
% 232.01/30.82  lits                                    30
% 232.01/30.82  lits eq                                 0
% 232.01/30.82  fd_pure                                 0
% 232.01/30.82  fd_pseudo                               0
% 232.01/30.82  fd_cond                                 0
% 232.01/30.82  fd_pseudo_cond                          0
% 232.01/30.82  AC symbols                              0
% 232.01/30.82  
% 232.01/30.82  ------ Input Options Time Limit: Unbounded
% 232.01/30.82  
% 232.01/30.82  
% 232.01/30.82  ------ 
% 232.01/30.82  Current options:
% 232.01/30.82  ------ 
% 232.01/30.82  
% 232.01/30.82  
% 232.01/30.82  
% 232.01/30.82  
% 232.01/30.82  ------ Proving...
% 232.01/30.82  
% 232.01/30.82  
% 232.01/30.82  % SZS status Satisfiable for theBenchmark.p
% 232.01/30.82  
% 232.01/30.82  % SZS output start Saturation for theBenchmark.p
% See solution above
% 232.01/30.82  
% 232.01/30.82  
%------------------------------------------------------------------------------