%------------------------------------------------------------------------------
% File : FindProof---0.1
% Problem : SWV904-1 : TPTP v9.3.1. Released v4.1.0.
% Transfm : none
% Format : tptp:raw
% Command : run_findproof /export/starexec/sandbox/benchmark/theBenchmark.p 300
% Computer : n016.cluster.edu
% Model : x86_64 x86_64
% CPU : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory : 8046.5625MB
% OS : Linux 6.8.0-71-generic
% CPULimit : 300s
% WCLimit : 300s
% DateTime : Fri Sep 25 03:14:29 PM UTC 2026
% Result : Unsatisfiable 5.80s 1.26s
% Output : Proof 5.80s
% Verified :
% SZS Type : Refutation
% Derivation depth : 14
% Number of leaves : 18
% Syntax : Number of formulae : 90 ( 78 unt; 0 def)
% Number of atoms : 102 ( 76 equ)
% Maximal formula atoms : 2 ( 1 avg)
% Number of connectives : 88 ( 76 ~; 12 |; 0 &)
% ( 0 <=>; 0 =>; 0 <=; 0 <~>)
% Maximal formula depth : 5 ( 2 avg)
% Maximal term depth : 4 ( 1 avg)
% Number of predicates : 4 ( 2 usr; 2 prp; 0-2 aty)
% Number of functors : 14 ( 14 usr; 8 con; 0-4 aty)
% Number of variables : 90 ( 34 sgn 42 !; 0 ?)
% Comments :
%------------------------------------------------------------------------------
cnf(f24,axiom,
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1 != v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2 ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_state__not__singleton__def_0) ).
fof(f24_nnf,plain,
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1 != v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2 ),
inference(nnf_transformation,[status(thm)],[f24]) ).
fof(f24_sk,plain,
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1 != v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2 ),
inference(skolemisation,[status(esa)],[f24_nnf]) ).
cnf(c24,plain,
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1 != v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2 ),
inference(cnf_transformation,[status(esa)],[f24_sk]) ).
cnf(t46,plain,
ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2,ifeq(c_Hoare__Mirabelle_Ostate__not__singleton,true,false,true),true) = true,
inference(equality_encoding,[status(esa)],[c24]) ).
cnf(f28,negated_conjecture,
~ c_Hoare__Mirabelle_Ostate__not__singleton,
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_conjecture_3) ).
fof(f28_nnf,plain,
~ c_Hoare__Mirabelle_Ostate__not__singleton,
inference(nnf_transformation,[status(thm)],[f28]) ).
fof(f28_sk,plain,
~ c_Hoare__Mirabelle_Ostate__not__singleton,
inference(skolemisation,[status(esa)],[f28_nnf]) ).
cnf(c28,plain,
~ c_Hoare__Mirabelle_Ostate__not__singleton,
inference(cnf_transformation,[status(esa)],[f28_sk]) ).
cnf(t17,plain,
ifeq(c_Hoare__Mirabelle_Ostate__not__singleton,true,false,true) = true,
inference(equality_encoding,[status(esa)],[c28]) ).
cnf(t69,plain,
ifeq(c_Hoare__Mirabelle_Ostate__not__singleton,true,false,true) = true,
inference(orient,[status(thm)],[t17]) ).
cnf(t92,plain,
ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2,true,true) = true,
inference(step,[status(thm)],[t46,t69]) ).
cnf(t74,plain,
ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2,true,true) = true,
inference(orient,[status(thm)],[t92]) ).
cnf(f20,axiom,
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1 != v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2 ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_state__not__singleton__def__raw_0) ).
fof(f20_nnf,plain,
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1 != v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2 ),
inference(nnf_transformation,[status(thm)],[f20]) ).
fof(f20_sk,plain,
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1 != v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2 ),
inference(skolemisation,[status(esa)],[f20_nnf]) ).
cnf(c20,plain,
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1 != v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2 ),
inference(cnf_transformation,[status(esa)],[f20_sk]) ).
cnf(t47,plain,
ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2,ifeq(c_Hoare__Mirabelle_Ostate__not__singleton,true,false,true),true) = true,
inference(equality_encoding,[status(esa)],[c20]) ).
cnf(t93,plain,
ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2,true,true) = true,
inference(step,[status(thm)],[t47,t69]) ).
cnf(t75,plain,
ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2,true,true) = true,
inference(orient,[status(thm)],[t93]) ).
cnf(f23,axiom,
c_Com_OWT(c_Com_Ocom_OSKIP),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_WT_OSkip_0) ).
fof(f23_nnf,plain,
c_Com_OWT(c_Com_Ocom_OSKIP),
inference(nnf_transformation,[status(thm)],[f23]) ).
cnf(c23,plain,
c_Com_OWT(c_Com_Ocom_OSKIP),
inference(cnf_transformation,[status(esa)],[f23_nnf]) ).
cnf(t3,plain,
c_Com_OWT(c_Com_Ocom_OSKIP) = true,
inference(equality_encoding,[status(esa)],[c23]) ).
cnf(t78,plain,
c_Com_OWT(c_Com_Ocom_OSKIP) = true,
inference(orient,[status(thm)],[t3]) ).
cnf(f27,negated_conjecture,
c_Com_OWT(v_c),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_conjecture_2) ).
fof(f27_nnf,plain,
c_Com_OWT(v_c),
inference(nnf_transformation,[status(thm)],[f27]) ).
cnf(c27,plain,
c_Com_OWT(v_c),
inference(cnf_transformation,[status(esa)],[f27_nnf]) ).
cnf(t4,plain,
c_Com_OWT(v_c) = true,
inference(equality_encoding,[status(esa)],[c27]) ).
cnf(t84,plain,
c_Com_OWT(v_c) = true,
inference(orient,[status(thm)],[t4]) ).
cnf(f25,negated_conjecture,
c_Hoare__Mirabelle_Ostate__not__singleton,
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_conjecture_0) ).
fof(f25_nnf,plain,
c_Hoare__Mirabelle_Ostate__not__singleton,
inference(nnf_transformation,[status(thm)],[f25]) ).
cnf(c25,plain,
c_Hoare__Mirabelle_Ostate__not__singleton,
inference(cnf_transformation,[status(esa)],[f25_nnf]) ).
cnf(t2,plain,
true = c_Hoare__Mirabelle_Ostate__not__singleton,
inference(equality_encoding,[status(esa)],[c25]) ).
cnf(t90,plain,
c_Hoare__Mirabelle_Ostate__not__singleton = true,
inference(orient,[status(thm)],[t2]) ).
cnf(t16,plain,
ifeq(X1,X1,X2,X3) = X2,
introduced(definition) ).
cnf(t53,plain,
ifeq(X1,X1,X2,X3) = X2,
inference(orient,[status(thm)],[t16]) ).
cnf(f0,axiom,
c_Option_Ooption_ONone(T_a) != c_Option_Ooption_OSome(V_a_H,T_a),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_option_Osimps_I2_J_0) ).
fof(f0_nnf,plain,
! [T_a,V_a_H] : c_Option_Ooption_ONone(T_a) != c_Option_Ooption_OSome(V_a_H,T_a),
inference(nnf_transformation,[status(thm)],[f0]) ).
fof(f0_sk,plain,
! [T_a,V_a_H] : c_Option_Ooption_ONone(T_a) != c_Option_Ooption_OSome(V_a_H,T_a),
inference(skolemisation,[status(esa)],[f0_nnf]) ).
cnf(c0,plain,
c_Option_Ooption_ONone(X0) != c_Option_Ooption_OSome(X1,X0),
inference(cnf_transformation,[status(esa)],[f0_sk]) ).
cnf(f1,axiom,
c_Option_Ooption_ONone(T_a) != c_Option_Ooption_OSome(V_y,T_a),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_not__Some__eq_1) ).
fof(f1_nnf,plain,
! [T_a,V_y] : c_Option_Ooption_ONone(T_a) != c_Option_Ooption_OSome(V_y,T_a),
inference(nnf_transformation,[status(thm)],[f1]) ).
fof(f1_sk,plain,
! [T_a,V_y] : c_Option_Ooption_ONone(T_a) != c_Option_Ooption_OSome(V_y,T_a),
inference(skolemisation,[status(esa)],[f1_nnf]) ).
cnf(c1,plain,
c_Option_Ooption_ONone(X0) != c_Option_Ooption_OSome(X1,X0),
inference(cnf_transformation,[status(esa)],[f1_sk]) ).
cnf(f2,axiom,
c_Option_Ooption_OSome(V_a_H,T_a) != c_Option_Ooption_ONone(T_a),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_option_Osimps_I3_J_0) ).
fof(f2_nnf,plain,
! [V_a_H,T_a] : c_Option_Ooption_OSome(V_a_H,T_a) != c_Option_Ooption_ONone(T_a),
inference(nnf_transformation,[status(thm)],[f2]) ).
fof(f2_sk,plain,
! [V_a_H,T_a] : c_Option_Ooption_OSome(V_a_H,T_a) != c_Option_Ooption_ONone(T_a),
inference(skolemisation,[status(esa)],[f2_nnf]) ).
cnf(c2,plain,
c_Option_Ooption_OSome(X0,X1) != c_Option_Ooption_ONone(X1),
inference(cnf_transformation,[status(esa)],[f2_sk]) ).
cnf(f3,axiom,
c_Option_Ooption_OSome(V_xa,T_a) != c_Option_Ooption_ONone(T_a),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_not__None__eq_1) ).
fof(f3_nnf,plain,
! [V_xa,T_a] : c_Option_Ooption_OSome(V_xa,T_a) != c_Option_Ooption_ONone(T_a),
inference(nnf_transformation,[status(thm)],[f3]) ).
fof(f3_sk,plain,
! [V_xa,T_a] : c_Option_Ooption_OSome(V_xa,T_a) != c_Option_Ooption_ONone(T_a),
inference(skolemisation,[status(esa)],[f3_nnf]) ).
cnf(c3,plain,
c_Option_Ooption_OSome(X0,X1) != c_Option_Ooption_ONone(X1),
inference(cnf_transformation,[status(esa)],[f3_sk]) ).
cnf(f5,axiom,
c_Com_Ocom_OBODY(V_pname_H) != c_Com_Ocom_OSKIP,
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_com_Osimps_I19_J_0) ).
fof(f5_nnf,plain,
! [V_pname_H] : c_Com_Ocom_OBODY(V_pname_H) != c_Com_Ocom_OSKIP,
inference(nnf_transformation,[status(thm)],[f5]) ).
fof(f5_sk,plain,
! [V_pname_H] : c_Com_Ocom_OBODY(V_pname_H) != c_Com_Ocom_OSKIP,
inference(skolemisation,[status(esa)],[f5_nnf]) ).
cnf(c5,plain,
c_Com_Ocom_OBODY(X0) != c_Com_Ocom_OSKIP,
inference(cnf_transformation,[status(esa)],[f5_sk]) ).
cnf(f6,axiom,
c_Com_Ocom_OBODY(V_pname_H) != c_Com_Ocom_OSemi(V_com1,V_com2),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_com_Osimps_I49_J_0) ).
fof(f6_nnf,plain,
! [V_pname_H,V_com1,V_com2] : c_Com_Ocom_OBODY(V_pname_H) != c_Com_Ocom_OSemi(V_com1,V_com2),
inference(nnf_transformation,[status(thm)],[f6]) ).
fof(f6_sk,plain,
! [V_pname_H,V_com1,V_com2] : c_Com_Ocom_OBODY(V_pname_H) != c_Com_Ocom_OSemi(V_com1,V_com2),
inference(skolemisation,[status(esa)],[f6_nnf]) ).
cnf(c6,plain,
c_Com_Ocom_OBODY(X0) != c_Com_Ocom_OSemi(X1,X2),
inference(cnf_transformation,[status(esa)],[f6_sk]) ).
cnf(f7,axiom,
c_Com_Ocom_OSemi(V_com1,V_com2) != c_Com_Ocom_OBODY(V_pname_H),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_com_Osimps_I48_J_0) ).
fof(f7_nnf,plain,
! [V_com1,V_com2,V_pname_H] : c_Com_Ocom_OSemi(V_com1,V_com2) != c_Com_Ocom_OBODY(V_pname_H),
inference(nnf_transformation,[status(thm)],[f7]) ).
fof(f7_sk,plain,
! [V_com1,V_com2,V_pname_H] : c_Com_Ocom_OSemi(V_com1,V_com2) != c_Com_Ocom_OBODY(V_pname_H),
inference(skolemisation,[status(esa)],[f7_nnf]) ).
cnf(c7,plain,
c_Com_Ocom_OSemi(X0,X1) != c_Com_Ocom_OBODY(X2),
inference(cnf_transformation,[status(esa)],[f7_sk]) ).
cnf(f9,axiom,
c_Com_Ocom_OSKIP != c_Com_Ocom_OBODY(V_pname_H),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_com_Osimps_I18_J_0) ).
fof(f9_nnf,plain,
! [V_pname_H] : c_Com_Ocom_OSKIP != c_Com_Ocom_OBODY(V_pname_H),
inference(nnf_transformation,[status(thm)],[f9]) ).
fof(f9_sk,plain,
! [V_pname_H] : c_Com_Ocom_OSKIP != c_Com_Ocom_OBODY(V_pname_H),
inference(skolemisation,[status(esa)],[f9_nnf]) ).
cnf(c9,plain,
c_Com_Ocom_OSKIP != c_Com_Ocom_OBODY(X0),
inference(cnf_transformation,[status(esa)],[f9_sk]) ).
cnf(f14,axiom,
c_Com_Ocom_OSemi(V_com1_H,V_com2_H) != c_Com_Ocom_OSKIP,
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_com_Osimps_I13_J_0) ).
fof(f14_nnf,plain,
! [V_com1_H,V_com2_H] : c_Com_Ocom_OSemi(V_com1_H,V_com2_H) != c_Com_Ocom_OSKIP,
inference(nnf_transformation,[status(thm)],[f14]) ).
fof(f14_sk,plain,
! [V_com1_H,V_com2_H] : c_Com_Ocom_OSemi(V_com1_H,V_com2_H) != c_Com_Ocom_OSKIP,
inference(skolemisation,[status(esa)],[f14_nnf]) ).
cnf(c14,plain,
c_Com_Ocom_OSemi(X0,X1) != c_Com_Ocom_OSKIP,
inference(cnf_transformation,[status(esa)],[f14_sk]) ).
cnf(f15,axiom,
c_Com_Ocom_OSKIP != c_Com_Ocom_OSemi(V_com1_H,V_com2_H),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_com_Osimps_I12_J_0) ).
fof(f15_nnf,plain,
! [V_com1_H,V_com2_H] : c_Com_Ocom_OSKIP != c_Com_Ocom_OSemi(V_com1_H,V_com2_H),
inference(nnf_transformation,[status(thm)],[f15]) ).
fof(f15_sk,plain,
! [V_com1_H,V_com2_H] : c_Com_Ocom_OSKIP != c_Com_Ocom_OSemi(V_com1_H,V_com2_H),
inference(skolemisation,[status(esa)],[f15_nnf]) ).
cnf(c15,plain,
c_Com_Ocom_OSKIP != c_Com_Ocom_OSemi(X0,X1),
inference(cnf_transformation,[status(esa)],[f15_sk]) ).
cnf(f22,axiom,
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xsingle__stateE__1(V_t) != V_t ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',cls_single__stateE_0) ).
fof(f22_nnf,plain,
! [V_t] :
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xsingle__stateE__1(V_t) != V_t ),
inference(nnf_transformation,[status(thm)],[f22]) ).
fof(f22_sk,plain,
! [V_t] :
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xsingle__stateE__1(V_t) != V_t ),
inference(skolemisation,[status(esa)],[f22_nnf]) ).
cnf(c22,plain,
( ~ c_Hoare__Mirabelle_Ostate__not__singleton
| v_sko__Hoare__Mirabelle__Xsingle__stateE__1(X0) != X0 ),
inference(cnf_transformation,[status(esa)],[f22_sk]) ).
cnf(goal_0,negated_conjecture,
true != false,
inference(equality_encoding,[status(esa)],[c0,c1,c2,c3,c5,c6,c7,c9,c14,c15,c20,c22,c24,c28]) ).
cnf(g0_0,plain,
true != ifeq(c_Hoare__Mirabelle_Ostate__not__singleton,true,false,true),
inference(rw,[status(thm)],[goal_0]) ).
cnf(g0_1,plain,
true != ifeq(c_Hoare__Mirabelle_Ostate__not__singleton,true,false,ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2,true,true)),
inference(rw,[status(thm)],[g0_0,t74]) ).
cnf(g0_2,plain,
true != ifeq(c_Hoare__Mirabelle_Ostate__not__singleton,true,false,ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2,true,ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2,true,true))),
inference(rw,[status(thm)],[g0_1,t75]) ).
cnf(g0_3,plain,
true != ifeq(c_Hoare__Mirabelle_Ostate__not__singleton,true,false,ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2,true,ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2,true,c_Com_OWT(c_Com_Ocom_OSKIP)))),
inference(rw,[status(thm)],[g0_2,t78]) ).
cnf(g0_4,plain,
true != ifeq(c_Hoare__Mirabelle_Ostate__not__singleton,true,false,ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2,true,ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2,c_Com_OWT(v_c),c_Com_OWT(c_Com_Ocom_OSKIP)))),
inference(rw,[status(thm)],[g0_3,t84]) ).
cnf(g0_5,plain,
true != ifeq(true,true,false,ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__2,true,ifeq(v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__1,v_sko__Hoare__Mirabelle__Xstate__not__singleton__def__raw__2,c_Com_OWT(v_c),c_Com_OWT(c_Com_Ocom_OSKIP)))),
inference(rw,[status(thm)],[g0_4,t90]) ).
cnf(g0_6,plain,
true != false,
inference(rw,[status(thm)],[g0_5,t53]) ).
cnf(contradiction_0,plain,
$false,
inference(trivial_inequality_removal,[status(thm)],[g0_6]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.02 % Problem : SWV904-1 : TPTP v9.3.1. Released v4.1.0.
% 0.00/0.04 % Command : run_findproof /export/starexec/sandbox/benchmark/theBenchmark.p 300
% 0.08/0.35 % Computer : n016.cluster.edu
% 0.08/0.35 % Model : x86_64 x86_64
% 0.08/0.35 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.08/0.35 % Memory : 8046.5625MB
% 0.08/0.35 % OS : Linux 6.8.0-71-generic
% 0.08/0.36 % CPULimit : 300
% 0.08/0.36 % WCLimit : 300
% 0.08/0.36 % DateTime : Thu Sep 24 21:21:12 UTC 2026
% 0.08/0.36 % CPUTime :
% 0.08/0.36 Running run_findproof /export/starexec/sandbox/benchmark/theBenchmark.p 300
% 5.80/1.26 % SZS status Unsatisfiable for /export/starexec/sandbox/benchmark/theBenchmark.p
% 5.80/1.26 % SZS output start Proof for /export/starexec/sandbox/benchmark/theBenchmark.p
% See solution above
%------------------------------------------------------------------------------