TSTP Solution File: SWV959-1 by iProver---3.8
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : iProver---3.8
% Problem : SWV959-1 : TPTP v8.1.2. Released v4.1.0.
% Transfm : none
% Format : tptp:raw
% Command : run_iprover %s %d THM
% Computer : n031.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 : Thu Aug 31 22:43:13 EDT 2023
% Result : Unsatisfiable 32.59s 5.23s
% Output : CNFRefutation 32.59s
% Verified :
% SZS Type : Refutation
% Derivation depth : 5
% Number of leaves : 10
% Syntax : Number of clauses : 26 ( 5 unt; 10 nHn; 26 RR)
% Number of literals : 64 ( 0 equ; 33 neg)
% Maximal clause size : 5 ( 2 avg)
% Maximal term depth : 7 ( 2 avg)
% Number of predicates : 5 ( 4 usr; 1 prp; 0-6 aty)
% Number of functors : 23 ( 23 usr; 12 con; 0-8 aty)
% Number of variables : 49 ( 4 sgn)
% Comments :
%------------------------------------------------------------------------------
cnf(c_49,plain,
( ~ c_WellTypeRT_OWTrt(X0,X1,X2,c_Expr_Oexp_OFAss(X3,X4,X5,X6,tc_List_Olist(tc_String_Ochar)),X7)
| c_WellTypeRT_OWTrt(X0,X1,X2,X3,c_Type_Oty_OClass(c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__1(X5,X2,X4,X0,X3,X1,X6)))
| c_WellTypeRT_OWTrt(X0,X1,X2,X3,c_Type_Oty_ONT) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_WTrt__elim__cases_I8_J_4) ).
cnf(c_54,plain,
( ~ c_WellTypeRT_OWTrt(X0,X1,X2,c_Expr_Oexp_OFAss(X3,X4,X5,X6,tc_List_Olist(tc_String_Ochar)),X7)
| c_TypeRel_Ohas__field(X0,c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__1(X5,X2,X4,X0,X3,X1,X6),X4,c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__2(X5,X2,X4,X0,X3,X1,X6),X5,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar))))
| c_WellTypeRT_OWTrt(X0,X1,X2,X3,c_Type_Oty_ONT) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_WTrt__elim__cases_I8_J_7) ).
cnf(c_371,plain,
( ~ c_WellTypeRT_OWTrt(X0,X1,X2,c_Expr_Oexp_OFAss(X3,X4,X5,X6,tc_List_Olist(tc_String_Ochar)),X7)
| hBOOL(hAPP(hAPP(c_TypeRel_Owiden(X0,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__3(X5,X2,X4,X0,X3,X1,X6)),c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__2(X5,X2,X4,X0,X3,X1,X6)))
| c_WellTypeRT_OWTrt(X0,X1,X2,X3,c_Type_Oty_ONT) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_WTrt__elim__cases_I8_J_13) ).
cnf(c_404,plain,
( ~ c_WellTypeRT_OWTrt(X0,X1,X2,c_Expr_Oexp_OFAss(X3,X4,X5,X6,tc_List_Olist(tc_String_Ochar)),X7)
| c_WellTypeRT_OWTrt(X0,X1,X2,X6,c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__3(X5,X2,X4,X0,X3,X1,X6))
| c_WellTypeRT_OWTrt(X0,X1,X2,X3,c_Type_Oty_ONT) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_WTrt__elim__cases_I8_J_10) ).
cnf(c_427,plain,
c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,c_Expr_Oexp_OFAss(v_ea____,v_F____,v_D____,v_e_092_060_094isub_0622____,tc_List_Olist(tc_String_Ochar)),v_T____),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_CHAINED_0) ).
cnf(c_428,plain,
( ~ hBOOL(hAPP(hAPP(c_TypeRel_Owiden(v_P,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),X0),X1))
| ~ c_TypeRel_Ohas__field(v_P,X2,v_F____,X1,v_D____,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar))))
| ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_OClass(X2))
| ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_e_092_060_094isub_0622____,X0)
| hBOOL(hAPP(hAPP(c_TypeRel_Owiden(v_P,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),v_sko__CHAINED__1(v_D____,v_E____,v_F____,v_P,v_T____,v_e_Ha____,v_e_092_060_094isub_0622____,v_h_Ha____)),v_T____)) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_CHAINED_1) ).
cnf(c_429,plain,
( ~ hBOOL(hAPP(hAPP(c_TypeRel_Owiden(v_P,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),X0),X1))
| ~ c_TypeRel_Ohas__field(v_P,X2,v_F____,X1,v_D____,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar))))
| ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_OClass(X2))
| ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_e_092_060_094isub_0622____,X0)
| c_WellTypeRT_OWTrt(v_P,v_h_Ha____,v_E____,c_Expr_Oexp_OFAss(v_e_Ha____,v_F____,v_D____,v_e_092_060_094isub_0622____,tc_List_Olist(tc_String_Ochar)),v_sko__CHAINED__1(v_D____,v_E____,v_F____,v_P,v_T____,v_e_Ha____,v_e_092_060_094isub_0622____,v_h_Ha____)) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_CHAINED_0_01) ).
cnf(c_430,plain,
( ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_ONT)
| hBOOL(hAPP(hAPP(c_TypeRel_Owiden(v_P,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),v_sko__CHAINED__1(v_D____,v_E____,v_F____,v_P,v_T____,v_e_Ha____,v_e_092_060_094isub_0622____,v_h_Ha____)),v_T____)) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_CHAINED_1_02) ).
cnf(c_431,plain,
( ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_ONT)
| c_WellTypeRT_OWTrt(v_P,v_h_Ha____,v_E____,c_Expr_Oexp_OFAss(v_e_Ha____,v_F____,v_D____,v_e_092_060_094isub_0622____,tc_List_Olist(tc_String_Ochar)),v_sko__CHAINED__1(v_D____,v_E____,v_F____,v_P,v_T____,v_e_Ha____,v_e_092_060_094isub_0622____,v_h_Ha____)) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_CHAINED_0_03) ).
cnf(c_432,negated_conjecture,
( ~ hBOOL(hAPP(hAPP(c_TypeRel_Owiden(v_P,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),X0),v_T____))
| ~ c_WellTypeRT_OWTrt(v_P,v_h_Ha____,v_E____,c_Expr_Oexp_OFAss(v_e_Ha____,v_F____,v_D____,v_e_092_060_094isub_0622____,tc_List_Olist(tc_String_Ochar)),X0) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_conjecture_0) ).
cnf(c_2560,plain,
( ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_e_092_060_094isub_0622____,X0)
| ~ hBOOL(hAPP(hAPP(c_TypeRel_Owiden(v_P,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),X0),X1))
| ~ sP9_iProver_split(X1) ),
inference(splitting,[splitting(split),new_symbols(definition,[sP9_iProver_split])],[c_428]) ).
cnf(c_2561,plain,
( ~ c_TypeRel_Ohas__field(v_P,X0,v_F____,X1,v_D____,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar))))
| ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_OClass(X0))
| hBOOL(hAPP(hAPP(c_TypeRel_Owiden(v_P,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),v_sko__CHAINED__1(v_D____,v_E____,v_F____,v_P,v_T____,v_e_Ha____,v_e_092_060_094isub_0622____,v_h_Ha____)),v_T____))
| sP9_iProver_split(X1) ),
inference(splitting,[splitting(split),new_symbols(definition,[])],[c_428]) ).
cnf(c_2564,plain,
( ~ c_TypeRel_Ohas__field(v_P,X0,v_F____,X1,v_D____,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar))))
| ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_OClass(X0))
| c_WellTypeRT_OWTrt(v_P,v_h_Ha____,v_E____,c_Expr_Oexp_OFAss(v_e_Ha____,v_F____,v_D____,v_e_092_060_094isub_0622____,tc_List_Olist(tc_String_Ochar)),v_sko__CHAINED__1(v_D____,v_E____,v_F____,v_P,v_T____,v_e_Ha____,v_e_092_060_094isub_0622____,v_h_Ha____))
| sP9_iProver_split(X1) ),
inference(splitting,[splitting(split),new_symbols(definition,[])],[c_429]) ).
cnf(c_3820,plain,
( ~ hBOOL(hAPP(hAPP(c_TypeRel_Owiden(v_P,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),v_sko__CHAINED__1(v_D____,v_E____,v_F____,v_P,v_T____,v_e_Ha____,v_e_092_060_094isub_0622____,v_h_Ha____)),v_T____))
| ~ c_WellTypeRT_OWTrt(v_P,v_h_Ha____,v_E____,c_Expr_Oexp_OFAss(v_e_Ha____,v_F____,v_D____,v_e_092_060_094isub_0622____,tc_List_Olist(tc_String_Ochar)),v_sko__CHAINED__1(v_D____,v_E____,v_F____,v_P,v_T____,v_e_Ha____,v_e_092_060_094isub_0622____,v_h_Ha____)) ),
inference(instantiation,[status(thm)],[c_432]) ).
cnf(c_4396,plain,
~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_ONT),
inference(global_subsumption_just,[status(thm)],[c_431,c_431,c_430,c_3820]) ).
cnf(c_4831,plain,
( c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_e_092_060_094isub_0622____,c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__3(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____))
| c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_ONT) ),
inference(superposition,[status(thm)],[c_427,c_404]) ).
cnf(c_4955,plain,
( c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_OClass(c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__1(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____)))
| c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_ONT) ),
inference(superposition,[status(thm)],[c_427,c_49]) ).
cnf(c_5450,plain,
( ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_OClass(X0))
| ~ c_TypeRel_Ohas__field(v_P,X0,v_F____,X1,v_D____,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar))))
| sP9_iProver_split(X1) ),
inference(global_subsumption_just,[status(thm)],[c_2564,c_2561,c_2564,c_3820]) ).
cnf(c_5451,plain,
( ~ c_TypeRel_Ohas__field(v_P,X0,v_F____,X1,v_D____,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar))))
| ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_OClass(X0))
| sP9_iProver_split(X1) ),
inference(renaming,[status(thm)],[c_5450]) ).
cnf(c_5483,plain,
( c_TypeRel_Ohas__field(v_P,c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__1(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____),v_F____,c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__2(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____),v_D____,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar))))
| c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_ONT) ),
inference(superposition,[status(thm)],[c_427,c_54]) ).
cnf(c_5485,plain,
c_TypeRel_Ohas__field(v_P,c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__1(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____),v_F____,c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__2(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____),v_D____,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),
inference(global_subsumption_just,[status(thm)],[c_5483,c_431,c_430,c_3820,c_5483]) ).
cnf(c_5593,plain,
( hBOOL(hAPP(hAPP(c_TypeRel_Owiden(v_P,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__3(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____)),c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__2(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____)))
| c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_ONT) ),
inference(superposition,[status(thm)],[c_427,c_371]) ).
cnf(c_5595,plain,
hBOOL(hAPP(hAPP(c_TypeRel_Owiden(v_P,tc_prod(tc_List_Olist(tc_List_Olist(tc_String_Ochar)),tc_Expr_Oexp(tc_List_Olist(tc_String_Ochar)))),c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__3(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____)),c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__2(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____))),
inference(global_subsumption_just,[status(thm)],[c_5593,c_4396,c_5593]) ).
cnf(c_18565,plain,
( ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_ea____,c_Type_Oty_OClass(c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__1(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____)))
| sP9_iProver_split(c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__2(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____)) ),
inference(superposition,[status(thm)],[c_5485,c_5451]) ).
cnf(c_18748,plain,
( ~ c_WellTypeRT_OWTrt(v_P,v_ha____,v_E____,v_e_092_060_094isub_0622____,c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__3(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____))
| ~ sP9_iProver_split(c_WellTypeRT_Osko__WellTypeRT__XWTrt__elim__cases__8__2(v_D____,v_E____,v_F____,v_P,v_ea____,v_ha____,v_e_092_060_094isub_0622____)) ),
inference(superposition,[status(thm)],[c_5595,c_2560]) ).
cnf(c_18751,plain,
$false,
inference(prop_impl_just,[status(thm)],[c_18748,c_18565,c_4955,c_4831,c_4396]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.13 % Problem : SWV959-1 : TPTP v8.1.2. Released v4.1.0.
% 0.13/0.14 % Command : run_iprover %s %d THM
% 0.14/0.35 % Computer : n031.cluster.edu
% 0.14/0.35 % Model : x86_64 x86_64
% 0.14/0.35 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.35 % Memory : 8042.1875MB
% 0.14/0.35 % OS : Linux 3.10.0-693.el7.x86_64
% 0.14/0.35 % CPULimit : 300
% 0.14/0.35 % WCLimit : 300
% 0.14/0.35 % DateTime : Tue Aug 29 11:06:41 EDT 2023
% 0.14/0.35 % CPUTime :
% 0.21/0.48 Running first-order theorem proving
% 0.21/0.48 Running: /export/starexec/sandbox/solver/bin/run_problem --schedule fof_schedule --no_cores 8 /export/starexec/sandbox/benchmark/theBenchmark.p 300
% 32.59/5.23 % SZS status Started for theBenchmark.p
% 32.59/5.23 % SZS status Unsatisfiable for theBenchmark.p
% 32.59/5.23
% 32.59/5.23 %---------------- iProver v3.8 (pre SMT-COMP 2023/CASC 2023) ----------------%
% 32.59/5.23
% 32.59/5.23 ------ iProver source info
% 32.59/5.23
% 32.59/5.23 git: date: 2023-05-31 18:12:56 +0000
% 32.59/5.23 git: sha1: 8abddc1f627fd3ce0bcb8b4cbf113b3cc443d7b6
% 32.59/5.23 git: non_committed_changes: false
% 32.59/5.23 git: last_make_outside_of_git: false
% 32.59/5.23
% 32.59/5.23 ------ Parsing...successful
% 32.59/5.23
% 32.59/5.23
% 32.59/5.23
% 32.59/5.23 ------ Preprocessing... sf_s rm: 36 0s sf_e pe_s pe:1:0s pe_e sf_s rm: 5 0s sf_e pe_s pe_e
% 32.59/5.23
% 32.59/5.23 ------ Preprocessing... gs_s sp: 0 0s gs_e scvd_s sp: 14 0s scvd_e snvd_s sp: 0 0s snvd_e
% 32.59/5.23
% 32.59/5.23 ------ Preprocessing... sf_s rm: 1 0s sf_e sf_s rm: 0 0s sf_e
% 32.59/5.23 ------ Proving...
% 32.59/5.23 ------ Problem Properties
% 32.59/5.23
% 32.59/5.23
% 32.59/5.23 clauses 245
% 32.59/5.23 conjectures 1
% 32.59/5.23 EPR 13
% 32.59/5.23 Horn 225
% 32.59/5.23 unary 151
% 32.59/5.23 binary 56
% 32.59/5.23 lits 391
% 32.59/5.23 lits eq 223
% 32.59/5.23 fd_pure 0
% 32.59/5.23 fd_pseudo 0
% 32.59/5.23 fd_cond 1
% 32.59/5.23 fd_pseudo_cond 41
% 32.59/5.23 AC symbols 0
% 32.59/5.23
% 32.59/5.23 ------ Input Options Time Limit: Unbounded
% 32.59/5.23
% 32.59/5.23
% 32.59/5.23 ------
% 32.59/5.23 Current options:
% 32.59/5.23 ------
% 32.59/5.23
% 32.59/5.23
% 32.59/5.23
% 32.59/5.23
% 32.59/5.23 ------ Proving...
% 32.59/5.23
% 32.59/5.23
% 32.59/5.23 % SZS status Unsatisfiable for theBenchmark.p
% 32.59/5.23
% 32.59/5.23 % SZS output start CNFRefutation for theBenchmark.p
% See solution above
% 32.59/5.23
% 32.59/5.23
%------------------------------------------------------------------------------