%------------------------------------------------------------------------------
% File : Zipperpin---2.1.9999
% Problem : ALG372-1 : TPTP v9.2.0. Released v4.1.0.
% Transfm : none
% Format : tptp:raw
% Command : python3 /export/starexec/sandbox/solver/bin/portfolio.lams.parallel.py %s %d /export/starexec/sandbox/tmp/tmp.i5FgObqX8G true
% Computer : n017.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 Oct 2 04:28:41 PM UTC 2025
% Result : Unsatisfiable 3.92s 1.16s
% Output : Refutation 3.92s
% Verified :
% SZS Type : -
% Comments :
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.03/0.12 % Problem : ALG372-1 : TPTP v9.2.0. Released v4.1.0.
% 0.03/0.14 % Command : python3 /export/starexec/sandbox/solver/bin/portfolio.lams.parallel.py %s %d /export/starexec/sandbox/tmp/tmp.i5FgObqX8G true
% 0.14/0.35 % Computer : n017.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 : Wed Oct 1 17:03:53 EDT 2025
% 0.14/0.35 % CPUTime :
% 0.14/0.35 % Running portfolio for 300 s
% 0.14/0.35 % File : /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.14/0.35 % Number of cores: 8
% 0.14/0.36 % Python version: Python 3.6.8
% 0.14/0.36 % Running in FO mode
% 0.50/0.64 % Total configuration time : 435
% 0.50/0.64 % Estimated wc time : 1092
% 0.50/0.64 % Estimated cpu time (7 cpus) : 156.0
% 0.56/0.69 % /export/starexec/sandbox/solver/bin/fo/fo6_bce.sh running for 75s
% 0.57/0.72 % /export/starexec/sandbox/solver/bin/fo/fo3_bce.sh running for 75s
% 0.57/0.76 % /export/starexec/sandbox/solver/bin/fo/fo7.sh running for 63s
% 0.57/0.76 % /export/starexec/sandbox/solver/bin/fo/fo1_av.sh running for 75s
% 0.57/0.76 % /export/starexec/sandbox/solver/bin/fo/fo13.sh running for 50s
% 0.57/0.77 % /export/starexec/sandbox/solver/bin/fo/fo5.sh running for 50s
% 0.57/0.80 % /export/starexec/sandbox/solver/bin/fo/fo4.sh running for 50s
% 3.92/1.16 % Solved by fo/fo1_av.sh.
% 3.92/1.16 % done 354 iterations in 0.373s
% 3.92/1.16 % SZS status Theorem for '/export/starexec/sandbox/benchmark/theBenchmark.p'
% 3.92/1.16 % SZS output start Refutation
% 3.92/1.16 thf(v_p_type, type, v_p: $i).
% 3.92/1.16 thf(v_r_type, type, v_r: $i).
% 3.92/1.16 thf(class_OrderedGroup_Ogroup__add_type, type, class_OrderedGroup_Ogroup__add:
% 3.92/1.16 $i > $o).
% 3.92/1.16 thf(c_RealVector_Onorm__class_Onorm_type, type, c_RealVector_Onorm__class_Onorm:
% 3.92/1.16 $i > $i > $i).
% 3.92/1.16 thf(c_HOL_Ozero__class_Ozero_type, type, c_HOL_Ozero__class_Ozero: $i > $i).
% 3.92/1.16 thf(c_lessequals_type, type, c_lessequals: $i > $i > $i > $o).
% 3.92/1.16 thf(tc_Complex_Ocomplex_type, type, tc_Complex_Ocomplex: $i).
% 3.92/1.16 thf(class_RealVector_Oreal__normed__vector_type, type, class_RealVector_Oreal__normed__vector:
% 3.92/1.16 $i > $o).
% 3.92/1.16 thf(c_Polynomial_Opoly_type, type, c_Polynomial_Opoly: $i > $i > $i > $i).
% 3.92/1.16 thf(c_HOL_Ouminus__class_Ouminus_type, type, c_HOL_Ouminus__class_Ouminus:
% 3.92/1.16 $i > $i > $i).
% 3.92/1.16 thf(tc_RealDef_Oreal_type, type, tc_RealDef_Oreal: $i).
% 3.92/1.16 thf(cls_conjecture_0, conjecture,
% 3.92/1.16 (~( ( ~( c_lessequals @
% 3.92/1.16 ( c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 ( c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_Complex_Ocomplex ) @
% 3.92/1.16 v_r @ tc_RealDef_Oreal ) ) |
% 3.92/1.16 ( ( c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 ( c_Polynomial_Opoly @
% 3.92/1.16 v_p @ ( c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_Complex_Ocomplex ) !=
% 3.92/1.16 ( c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 ( c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 ( c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 ( c_Polynomial_Opoly @
% 3.92/1.16 v_p @ ( c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_RealDef_Oreal ) @
% 3.92/1.16 tc_RealDef_Oreal ) ) ))).
% 3.92/1.16 thf(zf_stmt_0, negated_conjecture,
% 3.92/1.16 (( ~( c_lessequals @
% 3.92/1.16 ( c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 ( c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_Complex_Ocomplex ) @
% 3.92/1.16 v_r @ tc_RealDef_Oreal ) ) |
% 3.92/1.16 ( ( c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 ( c_Polynomial_Opoly @
% 3.92/1.16 v_p @ ( c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_Complex_Ocomplex ) !=
% 3.92/1.16 ( c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 ( c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 ( c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 ( c_Polynomial_Opoly @
% 3.92/1.16 v_p @ ( c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_Complex_Ocomplex ) @
% 3.92/1.16 tc_RealDef_Oreal ) @
% 3.92/1.16 tc_RealDef_Oreal ) )),
% 3.92/1.16 inference('cnf.neg', [status(esa)], [cls_conjecture_0])).
% 3.92/1.16 thf(zip_derived_cl753, plain,
% 3.92/1.16 ((~ (c_lessequals @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 v_r @ tc_RealDef_Oreal)
% 3.92/1.16 | ((c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex)
% 3.92/1.16 != (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_RealDef_Oreal) @
% 3.92/1.16 tc_RealDef_Oreal)))),
% 3.92/1.16 inference('cnf', [status(esa)], [zf_stmt_0])).
% 3.92/1.16 thf(zip_derived_cl954, plain,
% 3.92/1.16 ((((c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex)
% 3.92/1.16 != (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_RealDef_Oreal) @
% 3.92/1.16 tc_RealDef_Oreal)))
% 3.92/1.16 <= (~
% 3.92/1.16 (((c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex)
% 3.92/1.16 = (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_RealDef_Oreal) @
% 3.92/1.16 tc_RealDef_Oreal))))),
% 3.92/1.16 inference('split', [status(esa)], [zip_derived_cl753])).
% 3.92/1.16 thf(clsarity_Complex__Ocomplex__RealVector_Oreal__normed__vector, axiom,
% 3.92/1.16 (class_RealVector_Oreal__normed__vector @ tc_Complex_Ocomplex)).
% 3.92/1.16 thf(zip_derived_cl879, plain,
% 3.92/1.16 ( (class_RealVector_Oreal__normed__vector @ tc_Complex_Ocomplex)),
% 3.92/1.16 inference('cnf', [status(esa)],
% 3.92/1.16 [clsarity_Complex__Ocomplex__RealVector_Oreal__normed__vector])).
% 3.92/1.16 thf(cls_norm__zero_0, axiom,
% 3.92/1.16 (( ~( class_RealVector_Oreal__normed__vector @ T_a ) ) |
% 3.92/1.16 ( ( c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 ( c_HOL_Ozero__class_Ozero @ T_a ) @ T_a ) =
% 3.92/1.16 ( c_HOL_Ozero__class_Ozero @ tc_RealDef_Oreal ) ))).
% 3.92/1.16 thf(zip_derived_cl683, plain,
% 3.92/1.16 (![X0 : $i]:
% 3.92/1.16 (~ (class_RealVector_Oreal__normed__vector @ X0)
% 3.92/1.16 | ((c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ X0) @ X0)
% 3.92/1.16 = (c_HOL_Ozero__class_Ozero @ tc_RealDef_Oreal)))),
% 3.92/1.16 inference('cnf', [status(esa)], [cls_norm__zero_0])).
% 3.92/1.16 thf(zip_derived_cl1039, plain,
% 3.92/1.16 (((c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @ tc_Complex_Ocomplex)
% 3.92/1.16 = (c_HOL_Ozero__class_Ozero @ tc_RealDef_Oreal))),
% 3.92/1.16 inference('s_sup-', [status(thm)], [zip_derived_cl879, zip_derived_cl683])).
% 3.92/1.16 thf(zip_derived_cl955, plain,
% 3.92/1.16 ((~ (c_lessequals @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 v_r @ tc_RealDef_Oreal))
% 3.92/1.16 <= (~
% 3.92/1.16 ( (c_lessequals @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 v_r @ tc_RealDef_Oreal)))),
% 3.92/1.16 inference('split', [status(esa)], [zip_derived_cl753])).
% 3.92/1.16 thf(zip_derived_cl1046, plain,
% 3.92/1.16 ((~ (c_lessequals @ (c_HOL_Ozero__class_Ozero @ tc_RealDef_Oreal) @
% 3.92/1.16 v_r @ tc_RealDef_Oreal))
% 3.92/1.16 <= (~
% 3.92/1.16 ( (c_lessequals @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 v_r @ tc_RealDef_Oreal)))),
% 3.92/1.16 inference('s_sup-', [status(thm)],
% 3.92/1.16 [zip_derived_cl1039, zip_derived_cl955])).
% 3.92/1.16 thf(cls_rp_0, axiom,
% 3.92/1.16 (c_lessequals @
% 3.92/1.16 ( c_HOL_Ozero__class_Ozero @ tc_RealDef_Oreal ) @ v_r @ tc_RealDef_Oreal)).
% 3.92/1.16 thf(zip_derived_cl698, plain,
% 3.92/1.16 ( (c_lessequals @ (c_HOL_Ozero__class_Ozero @ tc_RealDef_Oreal) @ v_r @
% 3.92/1.16 tc_RealDef_Oreal)),
% 3.92/1.16 inference('cnf', [status(esa)], [cls_rp_0])).
% 3.92/1.16 thf('0', plain,
% 3.92/1.16 (( (c_lessequals @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 v_r @ tc_RealDef_Oreal))),
% 3.92/1.16 inference('demod', [status(thm)], [zip_derived_cl1046, zip_derived_cl698])).
% 3.92/1.16 thf('1', plain,
% 3.92/1.16 (~
% 3.92/1.16 (((c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex)
% 3.92/1.16 = (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_RealDef_Oreal) @
% 3.92/1.16 tc_RealDef_Oreal))) |
% 3.92/1.16 ~
% 3.92/1.16 ( (c_lessequals @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 v_r @ tc_RealDef_Oreal))),
% 3.92/1.16 inference('split', [status(esa)], [zip_derived_cl753])).
% 3.92/1.16 thf('2', plain,
% 3.92/1.16 (~
% 3.92/1.16 (((c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex)
% 3.92/1.16 = (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_RealDef_Oreal) @
% 3.92/1.16 tc_RealDef_Oreal)))),
% 3.92/1.16 inference('sat_resolution*', [status(thm)], ['0', '1'])).
% 3.92/1.16 thf(zip_derived_cl1048, plain,
% 3.92/1.16 (((c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex)
% 3.92/1.16 != (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_RealDef_Oreal) @
% 3.92/1.16 tc_RealDef_Oreal))),
% 3.92/1.16 inference('simpl_trail', [status(thm)], [zip_derived_cl954, '2'])).
% 3.92/1.16 thf(clsarity_RealDef__Oreal__OrderedGroup_Ogroup__add, axiom,
% 3.92/1.16 (class_OrderedGroup_Ogroup__add @ tc_RealDef_Oreal)).
% 3.92/1.16 thf(zip_derived_cl854, plain,
% 3.92/1.16 ( (class_OrderedGroup_Ogroup__add @ tc_RealDef_Oreal)),
% 3.92/1.16 inference('cnf', [status(esa)],
% 3.92/1.16 [clsarity_RealDef__Oreal__OrderedGroup_Ogroup__add])).
% 3.92/1.16 thf(cls_minus__equation__iff_1, axiom,
% 3.92/1.16 (( ~( class_OrderedGroup_Ogroup__add @ T_a ) ) |
% 3.92/1.16 ( ( c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 ( c_HOL_Ouminus__class_Ouminus @ V_b @ T_a ) @ T_a ) =
% 3.92/1.16 ( V_b ) ))).
% 3.92/1.16 thf(zip_derived_cl743, plain,
% 3.92/1.16 (![X0 : $i, X1 : $i]:
% 3.92/1.16 (~ (class_OrderedGroup_Ogroup__add @ X0)
% 3.92/1.16 | ((c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_HOL_Ouminus__class_Ouminus @ X1 @ X0) @ X0) = (X1)))),
% 3.92/1.16 inference('cnf', [status(esa)], [cls_minus__equation__iff_1])).
% 3.92/1.16 thf(zip_derived_cl1244, plain,
% 3.92/1.16 (![X0 : $i]:
% 3.92/1.16 ((c_HOL_Ouminus__class_Ouminus @
% 3.92/1.16 (c_HOL_Ouminus__class_Ouminus @ X0 @ tc_RealDef_Oreal) @
% 3.92/1.16 tc_RealDef_Oreal) = (X0))),
% 3.92/1.16 inference('s_sup-', [status(thm)], [zip_derived_cl854, zip_derived_cl743])).
% 3.92/1.16 thf(zip_derived_cl1247, plain,
% 3.92/1.16 (((c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex)
% 3.92/1.16 != (c_RealVector_Onorm__class_Onorm @
% 3.92/1.16 (c_Polynomial_Opoly @ v_p @
% 3.92/1.16 (c_HOL_Ozero__class_Ozero @ tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex) @
% 3.92/1.16 tc_Complex_Ocomplex))),
% 3.92/1.16 inference('demod', [status(thm)],
% 3.92/1.16 [zip_derived_cl1048, zip_derived_cl1244])).
% 3.92/1.16 thf(zip_derived_cl1248, plain, ($false),
% 3.92/1.16 inference('simplify', [status(thm)], [zip_derived_cl1247])).
% 3.92/1.16
% 3.92/1.16 % SZS output end Refutation
% 3.92/1.16
% 3.92/1.16
% 3.92/1.16 % Terminating...
% 4.23/1.28 % Runner terminated.
% 4.23/1.30 % Zipperpin 1.5 exiting
%------------------------------------------------------------------------------