%------------------------------------------------------------------------------
% File : Drodi-SAT---4.1.1
% Problem : KRS174+1 : TPTP v9.3.1. Released v3.1.0.
% Transfm : none
% Format : tptp:raw
% Command : drodi -satmode(on) -timeout(300) /export/starexec/sandbox2/benchmark/theBenchmark.p
% Computer : n010.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 : Thu Sep 24 01:00:22 PM UTC 2026
% Result : Theorem 0.12s 0.39s
% Output : Assurance 0s
% Verified :
% SZS Type : -
% Comments :
%------------------------------------------------------------------------------
%----No solution output by system
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.02 % Problem : KRS174+1 : TPTP v9.3.1. Released v3.1.0.
% 0.00/0.03 % Command : drodi -satmode(on) -timeout(300) /export/starexec/sandbox2/benchmark/theBenchmark.p
% 0.09/0.35 % Computer : n010.cluster.edu
% 0.09/0.35 % Model : x86_64 x86_64
% 0.09/0.35 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.09/0.35 % Memory : 8046.5625MB
% 0.09/0.35 % OS : Linux 6.8.0-71-generic
% 0.09/0.35 % CPULimit : 300
% 0.09/0.35 % WCLimit : 300
% 0.09/0.35 % DateTime : Sun Sep 20 22:55:39 UTC 2026
% 0.12/0.36 % CPUTime :
% 0.12/0.37 % Drodi V4.1.1
% 0.12/0.39 % Refutation found
% 0.12/0.39 % SZS status Theorem for theBenchmark: Theorem is valid
% 0.12/0.39 % SZS output start CNFRefutation for theBenchmark
% 0.12/0.39 fof(f8,axiom,(
% 0.12/0.39 (! [X] :( cowlThing(X)& ~ cowlNothing(X) ) )),
% 0.12/0.39 file('/export/starexec/sandbox2/benchmark/theBenchmark.p')).
% 0.12/0.39 fof(f9,axiom,(
% 0.12/0.39 (! [X] :( xsd_string(X)<=> ~ xsd_integer(X) ) )),
% 0.12/0.39 file('/export/starexec/sandbox2/benchmark/theBenchmark.p')).
% 0.12/0.39 fof(f10,axiom,(
% 0.12/0.39 (! [X] :( cA(X)<=> X = ia ) )),
% 0.12/0.39 file('/export/starexec/sandbox2/benchmark/theBenchmark.p')).
% 0.12/0.39 fof(f11,axiom,(
% 0.12/0.39 (! [X] :( cA_and_B(X)<=> ( X = ib| X = ia ) ) )),
% 0.12/0.39 file('/export/starexec/sandbox2/benchmark/theBenchmark.p')).
% 0.12/0.39 fof(f12,axiom,(
% 0.12/0.39 (! [X] :( cB(X)<=> X = ib ) )),
% 0.12/0.39 file('/export/starexec/sandbox2/benchmark/theBenchmark.p')).
% 0.12/0.39 fof(f15,conjecture,(
% 0.12/0.39 ( (! [X] :( cowlThing(X)& ~ cowlNothing(X) ))& (! [X] :( xsd_string(X)<=> ~ xsd_integer(X) ))& (! [X] :( cA_and_B(X)<=> ( cB(X)| cA(X) ) ) )) ),
% 0.12/0.39 file('/export/starexec/sandbox2/benchmark/theBenchmark.p')).
% 0.12/0.39 fof(f16,negated_conjecture,(
% 0.12/0.39 ~(( (! [X] :( cowlThing(X)& ~ cowlNothing(X) ))& (! [X] :( xsd_string(X)<=> ~ xsd_integer(X) ))& (! [X] :( cA_and_B(X)<=> ( cB(X)| cA(X) ) ) )) )),
% 0.12/0.39 inference(negated_conjecture,[status(cth)],[f15])).
% 0.12/0.39 fof(f38,plain,(
% 0.12/0.39 (![X]: cowlThing(X))&(![X]: ~cowlNothing(X))),
% 0.12/0.39 inference(miniscoping,[status(thm)],[f8])).
% 0.12/0.39 fof(f39,plain,(
% 0.12/0.39 ![X0]: (cowlThing(X0))),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f38])).
% 0.12/0.39 fof(f40,plain,(
% 0.12/0.39 ![X0]: (~cowlNothing(X0))),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f38])).
% 0.12/0.39 fof(f41,plain,(
% 0.12/0.39 ![X]: ((~xsd_string(X)|~xsd_integer(X))&(xsd_string(X)|xsd_integer(X)))),
% 0.12/0.39 inference(NNF_transformation,[status(thm)],[f9])).
% 0.12/0.39 fof(f42,plain,(
% 0.12/0.39 (![X]: (~xsd_string(X)|~xsd_integer(X)))&(![X]: (xsd_string(X)|xsd_integer(X)))),
% 0.12/0.39 inference(miniscoping,[status(thm)],[f41])).
% 0.12/0.39 fof(f43,plain,(
% 0.12/0.39 ![X0]: (~xsd_string(X0)|~xsd_integer(X0))),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f42])).
% 0.12/0.39 fof(f44,plain,(
% 0.12/0.39 ![X0]: (xsd_string(X0)|xsd_integer(X0))),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f42])).
% 0.12/0.39 fof(f45,plain,(
% 0.12/0.39 ![X]: ((~cA(X)|X=ia)&(cA(X)|~X=ia))),
% 0.12/0.39 inference(NNF_transformation,[status(thm)],[f10])).
% 0.12/0.39 fof(f46,plain,(
% 0.12/0.39 (![X]: (~cA(X)|X=ia))&(![X]: (cA(X)|~X=ia))),
% 0.12/0.39 inference(miniscoping,[status(thm)],[f45])).
% 0.12/0.39 fof(f47,plain,(
% 0.12/0.39 ![X0]: (~cA(X0)|X0=ia)),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f46])).
% 0.12/0.39 fof(f48,plain,(
% 0.12/0.39 ![X0]: (cA(X0)|~X0=ia)),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f46])).
% 0.12/0.39 fof(f49,plain,(
% 0.12/0.39 ![X]: ((~cA_and_B(X)|(X=ib|X=ia))&(cA_and_B(X)|(~X=ib&~X=ia)))),
% 0.12/0.39 inference(NNF_transformation,[status(thm)],[f11])).
% 0.12/0.39 fof(f50,plain,(
% 0.12/0.39 (![X]: (~cA_and_B(X)|(X=ib|X=ia)))&(![X]: (cA_and_B(X)|(~X=ib&~X=ia)))),
% 0.12/0.39 inference(miniscoping,[status(thm)],[f49])).
% 0.12/0.39 fof(f51,plain,(
% 0.12/0.39 ![X0]: (~cA_and_B(X0)|X0=ib|X0=ia)),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f50])).
% 0.12/0.39 fof(f52,plain,(
% 0.12/0.39 ![X0]: (cA_and_B(X0)|~X0=ib)),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f50])).
% 0.12/0.39 fof(f53,plain,(
% 0.12/0.39 ![X0]: (cA_and_B(X0)|~X0=ia)),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f50])).
% 0.12/0.39 fof(f54,plain,(
% 0.12/0.39 ![X]: ((~cB(X)|X=ib)&(cB(X)|~X=ib))),
% 0.12/0.39 inference(NNF_transformation,[status(thm)],[f12])).
% 0.12/0.39 fof(f55,plain,(
% 0.12/0.39 (![X]: (~cB(X)|X=ib))&(![X]: (cB(X)|~X=ib))),
% 0.12/0.39 inference(miniscoping,[status(thm)],[f54])).
% 0.12/0.39 fof(f56,plain,(
% 0.12/0.39 ![X0]: (~cB(X0)|X0=ib)),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f55])).
% 0.12/0.39 fof(f57,plain,(
% 0.12/0.39 ![X0]: (cB(X0)|~X0=ib)),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f55])).
% 0.12/0.39 fof(f60,plain,(
% 0.12/0.39 (((?[X]: (~cowlThing(X)|cowlNothing(X)))|(?[X]: (xsd_string(X)<~>~xsd_integer(X))))|(?[X]: (cA_and_B(X)<~>(cB(X)|cA(X)))))),
% 0.12/0.39 inference(pre_NNF_transformation,[status(thm)],[f16])).
% 0.12/0.39 fof(f61,definition,(
% 0.12/0.39 ![X]: (sP0_prd(X)<=>(xsd_string(X)<~>~xsd_integer(X)))),
% 0.12/0.39 introduced(definition,[new_symbols(definition,[sP0_prd])],[])).
% 0.12/0.39 fof(f62,plain,(
% 0.12/0.39 ((?[X]: (~cowlThing(X)|cowlNothing(X)))|(?[X]: sP0_prd(X)))|(?[X]: (cA_and_B(X)<~>(cB(X)|cA(X))))),
% 0.12/0.39 inference(formula_renaming,[status(thm)],[f60,f61])).
% 0.12/0.39 fof(f63,plain,(
% 0.12/0.39 ((?[X]: (~cowlThing(X)|cowlNothing(X)))|(?[X]: sP0_prd(X)))|(?[X]: ((cA_and_B(X)|(cB(X)|cA(X)))&(~cA_and_B(X)|(~cB(X)&~cA(X)))))),
% 0.12/0.39 inference(NNF_transformation,[status(thm)],[f62])).
% 0.12/0.39 fof(f64,plain,(
% 0.12/0.39 (((?[X]: ~cowlThing(X))|(?[X]: cowlNothing(X)))|(?[X]: sP0_prd(X)))|(?[X]: ((cA_and_B(X)|(cB(X)|cA(X)))&(~cA_and_B(X)|(~cB(X)&~cA(X)))))),
% 0.12/0.39 inference(miniscoping,[status(thm)],[f63])).
% 0.12/0.39 fof(f65,plain,(
% 0.12/0.39 ((~cowlThing(sK0_skl)|cowlNothing(sK1_skl))|sP0_prd(sK2_skl))|((cA_and_B(sK3_skl)|(cB(sK3_skl)|cA(sK3_skl)))&(~cA_and_B(sK3_skl)|(~cB(sK3_skl)&~cA(sK3_skl))))),
% 0.12/0.39 inference(skolemize,[status(esa),new_symbols(skolem,[sK0_skl,sK1_skl,sK2_skl,sK3_skl]),skolemize(X,sK0_skl),skolemize(X,sK1_skl),skolemize(X,sK2_skl),skolemize(X,sK3_skl)],[f64])).
% 0.12/0.39 fof(f66,plain,(
% 0.12/0.39 ~cowlThing(sK0_skl)|cowlNothing(sK1_skl)|sP0_prd(sK2_skl)|cA_and_B(sK3_skl)|cB(sK3_skl)|cA(sK3_skl)),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f65])).
% 0.12/0.39 fof(f67,plain,(
% 0.12/0.39 ~cowlThing(sK0_skl)|cowlNothing(sK1_skl)|sP0_prd(sK2_skl)|~cA_and_B(sK3_skl)|~cB(sK3_skl)),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f65])).
% 0.12/0.39 fof(f68,plain,(
% 0.12/0.39 ~cowlThing(sK0_skl)|cowlNothing(sK1_skl)|sP0_prd(sK2_skl)|~cA_and_B(sK3_skl)|~cA(sK3_skl)),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f65])).
% 0.12/0.39 fof(f69,plain,(
% 0.12/0.39 ![X]: ((~sP0_prd(X)|((xsd_string(X)|~xsd_integer(X))&(~xsd_string(X)|xsd_integer(X))))&(sP0_prd(X)|((~xsd_string(X)|~xsd_integer(X))&(xsd_string(X)|xsd_integer(X)))))),
% 0.12/0.39 inference(NNF_transformation,[status(thm)],[f61])).
% 0.12/0.39 fof(f70,plain,(
% 0.12/0.39 (![X]: (~sP0_prd(X)|((xsd_string(X)|~xsd_integer(X))&(~xsd_string(X)|xsd_integer(X)))))&(![X]: (sP0_prd(X)|((~xsd_string(X)|~xsd_integer(X))&(xsd_string(X)|xsd_integer(X)))))),
% 0.12/0.39 inference(miniscoping,[status(thm)],[f69])).
% 0.12/0.39 fof(f71,plain,(
% 0.12/0.39 ![X0]: (~sP0_prd(X0)|xsd_string(X0)|~xsd_integer(X0))),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f70])).
% 0.12/0.39 fof(f72,plain,(
% 0.12/0.39 ![X0]: (~sP0_prd(X0)|~xsd_string(X0)|xsd_integer(X0))),
% 0.12/0.39 inference(cnf_transformation,[status(thm)],[f70])).
% 0.12/0.39 fof(f75,definition,(
% 0.12/0.39 sQ0_spl <=> (cowlThing(sK0_skl))),
% 0.12/0.39 introduced(definition,[new_symbols(definition,[sQ0_spl])],[split_symbol_definition])).
% 0.12/0.39 fof(f77,plain,(
% 0.12/0.39 ~cowlThing(sK0_skl)|sQ0_spl),
% 0.12/0.39 inference(component_clause,[status(thm)],[f75])).
% 0.12/0.39 fof(f78,definition,(
% 0.12/0.39 sQ1_spl <=> (cowlNothing(sK1_skl))),
% 0.12/0.39 introduced(definition,[new_symbols(definition,[sQ1_spl])],[split_symbol_definition])).
% 0.12/0.39 fof(f79,plain,(
% 0.12/0.39 cowlNothing(sK1_skl)|~sQ1_spl),
% 0.12/0.39 inference(component_clause,[status(thm)],[f78])).
% 0.12/0.39 fof(f81,definition,(
% 0.12/0.39 sQ2_spl <=> (sP0_prd(sK2_skl))),
% 0.12/0.39 introduced(definition,[new_symbols(definition,[sQ2_spl])],[split_symbol_definition])).
% 0.12/0.39 fof(f82,plain,(
% 0.12/0.39 sP0_prd(sK2_skl)|~sQ2_spl),
% 0.12/0.39 inference(component_clause,[status(thm)],[f81])).
% 0.12/0.39 fof(f84,definition,(
% 0.12/0.39 sQ3_spl <=> (cA_and_B(sK3_skl))),
% 0.12/0.39 introduced(definition,[new_symbols(definition,[sQ3_spl])],[split_symbol_definition])).
% 0.12/0.39 fof(f85,plain,(
% 0.12/0.39 cA_and_B(sK3_skl)|~sQ3_spl),
% 0.12/0.39 inference(component_clause,[status(thm)],[f84])).
% 0.12/0.39 fof(f86,plain,(
% 0.12/0.39 ~cA_and_B(sK3_skl)|sQ3_spl),
% 0.12/0.39 inference(component_clause,[status(thm)],[f84])).
% 0.12/0.39 fof(f87,definition,(
% 0.12/0.39 sQ4_spl <=> (cB(sK3_skl))),
% 0.12/0.39 introduced(definition,[new_symbols(definition,[sQ4_spl])],[split_symbol_definition])).
% 0.12/0.39 fof(f88,plain,(
% 0.12/0.39 cB(sK3_skl)|~sQ4_spl),
% 0.12/0.39 inference(component_clause,[status(thm)],[f87])).
% 0.12/0.39 fof(f90,definition,(
% 0.12/0.39 sQ5_spl <=> (cA(sK3_skl))),
% 0.12/0.39 introduced(definition,[new_symbols(definition,[sQ5_spl])],[split_symbol_definition])).
% 0.12/0.39 fof(f91,plain,(
% 0.12/0.39 cA(sK3_skl)|~sQ5_spl),
% 0.12/0.39 inference(component_clause,[status(thm)],[f90])).
% 0.12/0.39 fof(f93,plain,(
% 0.12/0.39 ~sQ0_spl|sQ1_spl|sQ2_spl|sQ3_spl|sQ4_spl|sQ5_spl),
% 0.12/0.39 inference(split_clause,[status(thm)],[f66,f75,f78,f81,f84,f87,f90])).
% 0.12/0.39 fof(f94,plain,(
% 0.12/0.39 ~sQ0_spl|sQ1_spl|sQ2_spl|~sQ3_spl|~sQ4_spl),
% 0.12/0.39 inference(split_clause,[status(thm)],[f67,f75,f78,f81,f84,f87])).
% 0.12/0.39 fof(f95,plain,(
% 0.12/0.39 ~sQ0_spl|sQ1_spl|sQ2_spl|~sQ3_spl|~sQ5_spl),
% 0.12/0.39 inference(split_clause,[status(thm)],[f68,f75,f78,f81,f84,f90])).
% 0.12/0.39 fof(f96,plain,(
% 0.12/0.39 cA(ia)),
% 0.12/0.39 inference(destructive_equality_resolution,[status(thm)],[f48])).
% 0.12/0.39 fof(f97,plain,(
% 0.12/0.39 cA_and_B(ib)),
% 0.12/0.39 inference(destructive_equality_resolution,[status(thm)],[f52])).
% 0.12/0.39 fof(f98,plain,(
% 0.12/0.39 cA_and_B(ia)),
% 0.12/0.39 inference(destructive_equality_resolution,[status(thm)],[f53])).
% 0.12/0.40 fof(f99,plain,(
% 0.12/0.40 cB(ib)),
% 0.12/0.40 inference(destructive_equality_resolution,[status(thm)],[f57])).
% 0.12/0.40 fof(f100,plain,(
% 0.12/0.40 ![X0]: (~sP0_prd(X0)|~xsd_integer(X0))),
% 0.12/0.40 inference(forward_subsumption_resolution,[status(thm)],[f71,f43])).
% 0.12/0.40 fof(f101,plain,(
% 0.12/0.40 ![X0]: (~sP0_prd(X0))),
% 0.12/0.40 inference(backward_subsumption_resolution,[status(thm)],[f100,f102])).
% 0.12/0.40 fof(f102,plain,(
% 0.12/0.40 ![X0]: (~sP0_prd(X0)|xsd_integer(X0))),
% 0.12/0.40 inference(forward_subsumption_resolution,[status(thm)],[f72,f44])).
% 0.12/0.40 fof(f103,plain,(
% 0.12/0.40 $false|~sQ2_spl),
% 0.12/0.40 inference(backward_subsumption_resolution,[status(thm)],[f82,f101])).
% 0.12/0.40 fof(f104,plain,(
% 0.12/0.40 ~sQ2_spl),
% 0.12/0.40 inference(contradiction_clause,[status(thm)],[f103])).
% 0.12/0.40 fof(f105,plain,(
% 0.12/0.40 $false|~sQ1_spl),
% 0.12/0.40 inference(forward_subsumption_resolution,[status(thm)],[f79,f40])).
% 0.12/0.40 fof(f106,plain,(
% 0.12/0.40 ~sQ1_spl),
% 0.12/0.40 inference(contradiction_clause,[status(thm)],[f105])).
% 0.12/0.40 fof(f107,plain,(
% 0.12/0.40 $false|sQ0_spl),
% 0.12/0.40 inference(forward_subsumption_resolution,[status(thm)],[f77,f39])).
% 0.12/0.40 fof(f108,plain,(
% 0.12/0.40 sQ0_spl),
% 0.12/0.40 inference(contradiction_clause,[status(thm)],[f107])).
% 0.12/0.40 fof(f110,plain,(
% 0.12/0.40 sK3_skl=ib|~sQ4_spl),
% 0.12/0.40 inference(resolution,[status(thm)],[f56,f88])).
% 0.12/0.40 fof(f112,plain,(
% 0.12/0.40 cA_and_B(sK3_skl)|~sQ4_spl),
% 0.12/0.40 inference(backward_demodulation,[status(thm)],[f110,f97])).
% 0.12/0.40 fof(f115,plain,(
% 0.12/0.40 $false|sQ3_spl|~sQ4_spl),
% 0.12/0.40 inference(forward_subsumption_resolution,[status(thm)],[f112,f86])).
% 0.12/0.40 fof(f116,plain,(
% 0.12/0.40 sQ3_spl|~sQ4_spl),
% 0.12/0.40 inference(contradiction_clause,[status(thm)],[f115])).
% 0.12/0.40 fof(f153,plain,(
% 0.12/0.40 sK3_skl=ia|~sQ5_spl),
% 0.12/0.40 inference(resolution,[status(thm)],[f47,f91])).
% 0.12/0.40 fof(f158,plain,(
% 0.12/0.40 cA_and_B(sK3_skl)|~sQ5_spl),
% 0.12/0.40 inference(backward_demodulation,[status(thm)],[f153,f98])).
% 0.12/0.40 fof(f162,plain,(
% 0.12/0.40 sQ3_spl|~sQ5_spl),
% 0.12/0.40 inference(split_clause,[status(thm)],[f158,f84,f90])).
% 0.12/0.40 fof(f163,plain,(
% 0.12/0.40 sK3_skl=ib|sK3_skl=ia|~sQ3_spl),
% 0.12/0.40 inference(resolution,[status(thm)],[f85,f51])).
% 0.12/0.40 fof(f164,definition,(
% 0.12/0.40 sQ9_spl <=> (sK3_skl=ib)),
% 0.12/0.40 introduced(definition,[new_symbols(definition,[sQ9_spl])],[split_symbol_definition])).
% 0.12/0.40 fof(f165,plain,(
% 0.12/0.40 sK3_skl=ib|~sQ9_spl),
% 0.12/0.40 inference(component_clause,[status(thm)],[f164])).
% 0.12/0.40 fof(f167,definition,(
% 0.12/0.40 sQ10_spl <=> (sK3_skl=ia)),
% 0.12/0.40 introduced(definition,[new_symbols(definition,[sQ10_spl])],[split_symbol_definition])).
% 0.12/0.40 fof(f168,plain,(
% 0.12/0.40 sK3_skl=ia|~sQ10_spl),
% 0.12/0.40 inference(component_clause,[status(thm)],[f167])).
% 0.12/0.40 fof(f170,plain,(
% 0.12/0.40 sQ9_spl|sQ10_spl|~sQ3_spl),
% 0.12/0.40 inference(split_clause,[status(thm)],[f163,f164,f167,f84])).
% 0.12/0.40 fof(f174,plain,(
% 0.12/0.40 cB(sK3_skl)|~sQ9_spl),
% 0.12/0.40 inference(backward_demodulation,[status(thm)],[f165,f99])).
% 0.12/0.40 fof(f176,plain,(
% 0.12/0.40 sQ4_spl|~sQ9_spl),
% 0.12/0.40 inference(split_clause,[status(thm)],[f174,f87,f164])).
% 0.12/0.40 fof(f178,plain,(
% 0.12/0.40 cA(sK3_skl)|~sQ10_spl),
% 0.12/0.40 inference(backward_demodulation,[status(thm)],[f168,f96])).
% 0.12/0.40 fof(f182,plain,(
% 0.12/0.40 sQ5_spl|~sQ10_spl),
% 0.12/0.40 inference(split_clause,[status(thm)],[f178,f90,f167])).
% 0.12/0.40 fof(f183,plain,(
% 0.12/0.40 $false),
% 0.12/0.40 inference(sat_refutation,[status(thm)],[f93,f94,f95,f104,f106,f108,f116,f162,f170,f176,f182])).
% 0.12/0.40 % SZS output end CNFRefutation for theBenchmark.p
% 0.12/0.42 % Elapsed time: 0.059796 seconds
% 0.12/0.42 % CPU time: 0.162110 seconds
% 0.12/0.42 % Total memory used: 80.431 MB
% 0.12/0.42 % Net memory used: 80.176 MB
%------------------------------------------------------------------------------