TSTP Solution File: SWV275-2 by Zipperpin---2.1.9999
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : Zipperpin---2.1.9999
% Problem : SWV275-2 : TPTP v8.1.2. Released v3.2.0.
% Transfm : NO INFORMATION
% Format : NO INFORMATION
% Command : python3 /export/starexec/sandbox/solver/bin/portfolio.lams.parallel.py %s %d /export/starexec/sandbox/tmp/tmp.ulDGTQEr5H true
% Computer : n010.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 00:08:44 EDT 2023
% Result : Unsatisfiable 1.30s 0.90s
% Output : Refutation 1.30s
% Verified :
% SZS Type : -
% Comments :
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.13 % Problem : SWV275-2 : TPTP v8.1.2. Released v3.2.0.
% 0.00/0.14 % Command : python3 /export/starexec/sandbox/solver/bin/portfolio.lams.parallel.py %s %d /export/starexec/sandbox/tmp/tmp.ulDGTQEr5H true
% 0.13/0.35 % Computer : n010.cluster.edu
% 0.13/0.35 % Model : x86_64 x86_64
% 0.13/0.35 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.35 % Memory : 8042.1875MB
% 0.13/0.35 % OS : Linux 3.10.0-693.el7.x86_64
% 0.13/0.35 % CPULimit : 300
% 0.13/0.35 % WCLimit : 300
% 0.13/0.35 % DateTime : Tue Aug 29 04:37:34 EDT 2023
% 0.13/0.35 % CPUTime :
% 0.13/0.35 % Running portfolio for 300 s
% 0.13/0.35 % File : /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.13/0.35 % Number of cores: 8
% 0.13/0.35 % Python version: Python 3.6.8
% 0.13/0.36 % Running in FO mode
% 0.20/0.65 % Total configuration time : 435
% 0.20/0.65 % Estimated wc time : 1092
% 0.20/0.65 % Estimated cpu time (7 cpus) : 156.0
% 0.20/0.72 % /export/starexec/sandbox/solver/bin/fo/fo6_bce.sh running for 75s
% 0.20/0.72 % /export/starexec/sandbox/solver/bin/fo/fo3_bce.sh running for 75s
% 0.20/0.72 % /export/starexec/sandbox/solver/bin/fo/fo7.sh running for 63s
% 0.20/0.73 % /export/starexec/sandbox/solver/bin/fo/fo1_av.sh running for 75s
% 0.20/0.75 % /export/starexec/sandbox/solver/bin/fo/fo13.sh running for 50s
% 0.20/0.75 % /export/starexec/sandbox/solver/bin/fo/fo5.sh running for 50s
% 0.20/0.77 % /export/starexec/sandbox/solver/bin/fo/fo4.sh running for 50s
% 1.30/0.90 % Solved by fo/fo6_bce.sh.
% 1.30/0.90 % BCE start: 9
% 1.30/0.90 % BCE eliminated: 0
% 1.30/0.90 % PE start: 9
% 1.30/0.90 logic: eq
% 1.30/0.90 % PE eliminated: 0
% 1.30/0.90 % done 120 iterations in 0.162s
% 1.30/0.90 % SZS status Theorem for '/export/starexec/sandbox/benchmark/theBenchmark.p'
% 1.30/0.90 % SZS output start Refutation
% 1.30/0.90 thf(c_Message_Osynth_type, type, c_Message_Osynth: $i > $i).
% 1.30/0.90 thf(c_in_type, type, c_in: $i > $i > $i > $o).
% 1.30/0.90 thf(v_H_type, type, v_H: $i).
% 1.30/0.90 thf(v_X_type, type, v_X: $i).
% 1.30/0.90 thf(c_lessequals_type, type, c_lessequals: $i > $i > $i > $o).
% 1.30/0.90 thf(c_insert_type, type, c_insert: $i > $i > $i > $i).
% 1.30/0.90 thf(c_Main_OsubsetI__1_type, type, c_Main_OsubsetI__1: $i > $i > $i > $i).
% 1.30/0.90 thf(tc_Message_Omsg_type, type, tc_Message_Omsg: $i).
% 1.30/0.90 thf(tc_set_type, type, tc_set: $i > $i).
% 1.30/0.90 thf(cls_Message_Osynth_OInj_0, axiom,
% 1.30/0.90 (( ~( c_in @ V_X @ V_H @ tc_Message_Omsg ) ) |
% 1.30/0.90 ( c_in @ V_X @ ( c_Message_Osynth @ V_H ) @ tc_Message_Omsg ))).
% 1.30/0.90 thf(zip_derived_cl0, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i]:
% 1.30/0.90 (~ (c_in @ X0 @ X1 @ tc_Message_Omsg)
% 1.30/0.90 | (c_in @ X0 @ (c_Message_Osynth @ X1) @ tc_Message_Omsg))),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Message_Osynth_OInj_0])).
% 1.30/0.90 thf(cls_Set_OsubsetI_0, axiom,
% 1.30/0.90 (( c_in @ ( c_Main_OsubsetI__1 @ V_A @ V_B @ T_a ) @ V_A @ T_a ) |
% 1.30/0.90 ( c_lessequals @ V_A @ V_B @ ( tc_set @ T_a ) ))).
% 1.30/0.90 thf(zip_derived_cl6, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 ( (c_in @ (c_Main_OsubsetI__1 @ X0 @ X1 @ X2) @ X0 @ X2)
% 1.30/0.90 | (c_lessequals @ X0 @ X1 @ (tc_set @ X2)))),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Set_OsubsetI_0])).
% 1.30/0.90 thf(cls_Set_OinsertE_0, axiom,
% 1.30/0.90 (( ~( c_in @ V_a @ ( c_insert @ V_b @ V_A @ T_a ) @ T_a ) ) |
% 1.30/0.90 ( c_in @ V_a @ V_A @ T_a ) | ( ( V_a ) = ( V_b ) ))).
% 1.30/0.90 thf(zip_derived_cl4, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i, X3 : $i]:
% 1.30/0.90 (~ (c_in @ X0 @ (c_insert @ X1 @ X2 @ X3) @ X3)
% 1.30/0.90 | (c_in @ X0 @ X2 @ X3)
% 1.30/0.90 | ((X0) = (X1)))),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Set_OinsertE_0])).
% 1.30/0.90 thf(zip_derived_cl63, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i, X3 : $i]:
% 1.30/0.90 ( (c_lessequals @ (c_insert @ X2 @ X1 @ X0) @ X3 @ (tc_set @ X0))
% 1.30/0.90 | (c_in @
% 1.30/0.90 (c_Main_OsubsetI__1 @ (c_insert @ X2 @ X1 @ X0) @ X3 @ X0) @
% 1.30/0.90 X1 @ X0)
% 1.30/0.90 | ((c_Main_OsubsetI__1 @ (c_insert @ X2 @ X1 @ X0) @ X3 @ X0) = (X2)))),
% 1.30/0.90 inference('s_sup-', [status(thm)], [zip_derived_cl6, zip_derived_cl4])).
% 1.30/0.90 thf(zip_derived_cl6, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 ( (c_in @ (c_Main_OsubsetI__1 @ X0 @ X1 @ X2) @ X0 @ X2)
% 1.30/0.90 | (c_lessequals @ X0 @ X1 @ (tc_set @ X2)))),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Set_OsubsetI_0])).
% 1.30/0.90 thf(cls_Set_OinsertCI_0, axiom,
% 1.30/0.90 (( ~( c_in @ V_a @ V_B @ T_a ) ) |
% 1.30/0.90 ( c_in @ V_a @ ( c_insert @ V_b @ V_B @ T_a ) @ T_a ))).
% 1.30/0.90 thf(zip_derived_cl2, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i, X3 : $i]:
% 1.30/0.90 (~ (c_in @ X0 @ X1 @ X2)
% 1.30/0.90 | (c_in @ X0 @ (c_insert @ X3 @ X1 @ X2) @ X2))),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Set_OinsertCI_0])).
% 1.30/0.90 thf(cls_Set_OsubsetI_1, axiom,
% 1.30/0.90 (( ~( c_in @ ( c_Main_OsubsetI__1 @ V_A @ V_B @ T_a ) @ V_B @ T_a ) ) |
% 1.30/0.90 ( c_lessequals @ V_A @ V_B @ ( tc_set @ T_a ) ))).
% 1.30/0.90 thf(zip_derived_cl7, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 (~ (c_in @ (c_Main_OsubsetI__1 @ X0 @ X1 @ X2) @ X1 @ X2)
% 1.30/0.90 | (c_lessequals @ X0 @ X1 @ (tc_set @ X2)))),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Set_OsubsetI_1])).
% 1.30/0.90 thf(zip_derived_cl47, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i, X3 : $i]:
% 1.30/0.90 (~ (c_in @
% 1.30/0.90 (c_Main_OsubsetI__1 @ X3 @ (c_insert @ X2 @ X1 @ X0) @ X0) @ X1 @
% 1.30/0.90 X0)
% 1.30/0.90 | (c_lessequals @ X3 @ (c_insert @ X2 @ X1 @ X0) @ (tc_set @ X0)))),
% 1.30/0.90 inference('s_sup-', [status(thm)], [zip_derived_cl2, zip_derived_cl7])).
% 1.30/0.90 thf(zip_derived_cl92, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 ( (c_lessequals @ X1 @ (c_insert @ X2 @ X1 @ X0) @ (tc_set @ X0))
% 1.30/0.90 | (c_lessequals @ X1 @ (c_insert @ X2 @ X1 @ X0) @ (tc_set @ X0)))),
% 1.30/0.90 inference('s_sup-', [status(thm)], [zip_derived_cl6, zip_derived_cl47])).
% 1.30/0.90 thf(zip_derived_cl93, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 (c_lessequals @ X1 @ (c_insert @ X2 @ X1 @ X0) @ (tc_set @ X0))),
% 1.30/0.90 inference('simplify', [status(thm)], [zip_derived_cl92])).
% 1.30/0.90 thf(cls_Message_Osynth__mono_0, axiom,
% 1.30/0.90 (( ~( c_lessequals @ V_G @ V_H @ ( tc_set @ tc_Message_Omsg ) ) ) |
% 1.30/0.90 ( c_lessequals @
% 1.30/0.90 ( c_Message_Osynth @ V_G ) @ ( c_Message_Osynth @ V_H ) @
% 1.30/0.90 ( tc_set @ tc_Message_Omsg ) ))).
% 1.30/0.90 thf(zip_derived_cl1, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i]:
% 1.30/0.90 (~ (c_lessequals @ X0 @ X1 @ (tc_set @ tc_Message_Omsg))
% 1.30/0.90 | (c_lessequals @ (c_Message_Osynth @ X0) @
% 1.30/0.90 (c_Message_Osynth @ X1) @ (tc_set @ tc_Message_Omsg)))),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Message_Osynth__mono_0])).
% 1.30/0.90 thf(cls_Set_OsubsetD_0, axiom,
% 1.30/0.90 (( ~( c_in @ V_c @ V_A @ T_a ) ) |
% 1.30/0.90 ( ~( c_lessequals @ V_A @ V_B @ ( tc_set @ T_a ) ) ) |
% 1.30/0.90 ( c_in @ V_c @ V_B @ T_a ))).
% 1.30/0.90 thf(zip_derived_cl5, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i, X3 : $i]:
% 1.30/0.90 (~ (c_in @ X0 @ X1 @ X2)
% 1.30/0.90 | ~ (c_lessequals @ X1 @ X3 @ (tc_set @ X2))
% 1.30/0.90 | (c_in @ X0 @ X3 @ X2))),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Set_OsubsetD_0])).
% 1.30/0.90 thf(zip_derived_cl51, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 (~ (c_lessequals @ X1 @ X0 @ (tc_set @ tc_Message_Omsg))
% 1.30/0.90 | ~ (c_in @ X2 @ (c_Message_Osynth @ X1) @ tc_Message_Omsg)
% 1.30/0.90 | (c_in @ X2 @ (c_Message_Osynth @ X0) @ tc_Message_Omsg))),
% 1.30/0.90 inference('s_sup-', [status(thm)], [zip_derived_cl1, zip_derived_cl5])).
% 1.30/0.90 thf(zip_derived_cl115, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 (~ (c_in @ X2 @ (c_Message_Osynth @ X0) @ tc_Message_Omsg)
% 1.30/0.90 | (c_in @ X2 @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ X1 @ X0 @ tc_Message_Omsg)) @
% 1.30/0.90 tc_Message_Omsg))),
% 1.30/0.90 inference('s_sup-', [status(thm)], [zip_derived_cl93, zip_derived_cl51])).
% 1.30/0.90 thf(zip_derived_cl7, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 (~ (c_in @ (c_Main_OsubsetI__1 @ X0 @ X1 @ X2) @ X1 @ X2)
% 1.30/0.90 | (c_lessequals @ X0 @ X1 @ (tc_set @ X2)))),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Set_OsubsetI_1])).
% 1.30/0.90 thf(zip_derived_cl487, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 (~ (c_in @
% 1.30/0.90 (c_Main_OsubsetI__1 @ X2 @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ X1 @ X0 @ tc_Message_Omsg)) @
% 1.30/0.90 tc_Message_Omsg) @
% 1.30/0.90 (c_Message_Osynth @ X0) @ tc_Message_Omsg)
% 1.30/0.90 | (c_lessequals @ X2 @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ X1 @ X0 @ tc_Message_Omsg)) @
% 1.30/0.90 (tc_set @ tc_Message_Omsg)))),
% 1.30/0.90 inference('s_sup-', [status(thm)], [zip_derived_cl115, zip_derived_cl7])).
% 1.30/0.90 thf(zip_derived_cl539, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 (((c_Main_OsubsetI__1 @
% 1.30/0.90 (c_insert @ X2 @ (c_Message_Osynth @ X0) @ tc_Message_Omsg) @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ X1 @ X0 @ tc_Message_Omsg)) @
% 1.30/0.90 tc_Message_Omsg) = (X2))
% 1.30/0.90 | (c_lessequals @
% 1.30/0.90 (c_insert @ X2 @ (c_Message_Osynth @ X0) @ tc_Message_Omsg) @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ X1 @ X0 @ tc_Message_Omsg)) @
% 1.30/0.90 (tc_set @ tc_Message_Omsg))
% 1.30/0.90 | (c_lessequals @
% 1.30/0.90 (c_insert @ X2 @ (c_Message_Osynth @ X0) @ tc_Message_Omsg) @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ X1 @ X0 @ tc_Message_Omsg)) @
% 1.30/0.90 (tc_set @ tc_Message_Omsg)))),
% 1.30/0.90 inference('s_sup-', [status(thm)], [zip_derived_cl63, zip_derived_cl487])).
% 1.30/0.90 thf(zip_derived_cl541, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 ( (c_lessequals @
% 1.30/0.90 (c_insert @ X2 @ (c_Message_Osynth @ X0) @ tc_Message_Omsg) @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ X1 @ X0 @ tc_Message_Omsg)) @
% 1.30/0.90 (tc_set @ tc_Message_Omsg))
% 1.30/0.90 | ((c_Main_OsubsetI__1 @
% 1.30/0.90 (c_insert @ X2 @ (c_Message_Osynth @ X0) @ tc_Message_Omsg) @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ X1 @ X0 @ tc_Message_Omsg)) @
% 1.30/0.90 tc_Message_Omsg) = (X2)))),
% 1.30/0.90 inference('simplify', [status(thm)], [zip_derived_cl539])).
% 1.30/0.90 thf(cls_conjecture_0, conjecture,
% 1.30/0.90 (c_lessequals @
% 1.30/0.90 ( c_insert @ v_X @ ( c_Message_Osynth @ v_H ) @ tc_Message_Omsg ) @
% 1.30/0.90 ( c_Message_Osynth @ ( c_insert @ v_X @ v_H @ tc_Message_Omsg ) ) @
% 1.30/0.90 ( tc_set @ tc_Message_Omsg ))).
% 1.30/0.90 thf(zf_stmt_0, negated_conjecture,
% 1.30/0.90 (~( c_lessequals @
% 1.30/0.90 ( c_insert @ v_X @ ( c_Message_Osynth @ v_H ) @ tc_Message_Omsg ) @
% 1.30/0.90 ( c_Message_Osynth @ ( c_insert @ v_X @ v_H @ tc_Message_Omsg ) ) @
% 1.30/0.90 ( tc_set @ tc_Message_Omsg ) )),
% 1.30/0.90 inference('cnf.neg', [status(esa)], [cls_conjecture_0])).
% 1.30/0.90 thf(zip_derived_cl8, plain,
% 1.30/0.90 (~ (c_lessequals @
% 1.30/0.90 (c_insert @ v_X @ (c_Message_Osynth @ v_H) @ tc_Message_Omsg) @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ v_X @ v_H @ tc_Message_Omsg)) @
% 1.30/0.90 (tc_set @ tc_Message_Omsg))),
% 1.30/0.90 inference('cnf', [status(esa)], [zf_stmt_0])).
% 1.30/0.90 thf(zip_derived_cl617, plain,
% 1.30/0.90 (((c_Main_OsubsetI__1 @
% 1.30/0.90 (c_insert @ v_X @ (c_Message_Osynth @ v_H) @ tc_Message_Omsg) @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ v_X @ v_H @ tc_Message_Omsg)) @
% 1.30/0.90 tc_Message_Omsg) = (v_X))),
% 1.30/0.90 inference('s_sup-', [status(thm)], [zip_derived_cl541, zip_derived_cl8])).
% 1.30/0.90 thf(zip_derived_cl7, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 (~ (c_in @ (c_Main_OsubsetI__1 @ X0 @ X1 @ X2) @ X1 @ X2)
% 1.30/0.90 | (c_lessequals @ X0 @ X1 @ (tc_set @ X2)))),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Set_OsubsetI_1])).
% 1.30/0.90 thf(zip_derived_cl619, plain,
% 1.30/0.90 ((~ (c_in @ v_X @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ v_X @ v_H @ tc_Message_Omsg)) @
% 1.30/0.90 tc_Message_Omsg)
% 1.30/0.90 | (c_lessequals @
% 1.30/0.90 (c_insert @ v_X @ (c_Message_Osynth @ v_H) @ tc_Message_Omsg) @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ v_X @ v_H @ tc_Message_Omsg)) @
% 1.30/0.90 (tc_set @ tc_Message_Omsg)))),
% 1.30/0.90 inference('s_sup-', [status(thm)], [zip_derived_cl617, zip_derived_cl7])).
% 1.30/0.90 thf(zip_derived_cl8, plain,
% 1.30/0.90 (~ (c_lessequals @
% 1.30/0.90 (c_insert @ v_X @ (c_Message_Osynth @ v_H) @ tc_Message_Omsg) @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ v_X @ v_H @ tc_Message_Omsg)) @
% 1.30/0.90 (tc_set @ tc_Message_Omsg))),
% 1.30/0.90 inference('cnf', [status(esa)], [zf_stmt_0])).
% 1.30/0.90 thf(zip_derived_cl626, plain,
% 1.30/0.90 (~ (c_in @ v_X @
% 1.30/0.90 (c_Message_Osynth @ (c_insert @ v_X @ v_H @ tc_Message_Omsg)) @
% 1.30/0.90 tc_Message_Omsg)),
% 1.30/0.90 inference('clc', [status(thm)], [zip_derived_cl619, zip_derived_cl8])).
% 1.30/0.90 thf(zip_derived_cl627, plain,
% 1.30/0.90 (~ (c_in @ v_X @ (c_insert @ v_X @ v_H @ tc_Message_Omsg) @
% 1.30/0.90 tc_Message_Omsg)),
% 1.30/0.90 inference('s_sup-', [status(thm)], [zip_derived_cl0, zip_derived_cl626])).
% 1.30/0.90 thf(cls_Set_OinsertCI_1, axiom,
% 1.30/0.90 (c_in @ V_x @ ( c_insert @ V_x @ V_B @ T_a ) @ T_a)).
% 1.30/0.90 thf(zip_derived_cl3, plain,
% 1.30/0.90 (![X0 : $i, X1 : $i, X2 : $i]:
% 1.30/0.90 (c_in @ X0 @ (c_insert @ X0 @ X1 @ X2) @ X2)),
% 1.30/0.90 inference('cnf', [status(esa)], [cls_Set_OinsertCI_1])).
% 1.30/0.90 thf(zip_derived_cl630, plain, ($false),
% 1.30/0.90 inference('demod', [status(thm)], [zip_derived_cl627, zip_derived_cl3])).
% 1.30/0.90
% 1.30/0.90 % SZS output end Refutation
% 1.30/0.90
% 1.30/0.90
% 1.30/0.90 % Terminating...
% 1.30/0.95 % Runner terminated.
% 1.76/0.96 % Zipperpin 1.5 exiting
%------------------------------------------------------------------------------