%------------------------------------------------------------------------------
% File : Vampire-SAT---5.0.1
% Problem : SEU534^2 : TPTP v9.3.1. Released v3.7.0.
% Transfm : none
% Format : tptp:raw
% Command : run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 SAT
% Computer : n002.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 : Wed Sep 30 08:32:21 AM UTC 2026
% Result : Theorem 0.20s 0.27s
% Output : Refutation 0.20s
% Verified :
% SZS Type : -
% Comments :
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03 % Problem : SEU534^2 : TPTP v9.3.1. Released v3.7.0.
% 0.00/0.06 % Command : run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 SAT
% 0.08/0.19 % Computer : n002.cluster.edu
% 0.08/0.19 % Model : x86_64 x86_64
% 0.08/0.19 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.08/0.19 % Memory : 8046.5625MB
% 0.08/0.19 % OS : Linux 6.8.0-71-generic
% 0.08/0.20 % CPULimit : 300
% 0.08/0.20 % WCLimit : 300
% 0.08/0.20 % DateTime : Tue Sep 29 13:51:22 UTC 2026
% 0.08/0.20 % CPUTime :
% 0.08/0.20 Running run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 SAT
% 0.08/0.23 Running first-order model finding
% 0.08/0.23 Running: /export/starexec/sandbox2/solver/bin/vampire-ho --input_syntax tptp --output_axiom_names on --mode casc --intent sat -m 16384 --cores 7 -t 300 /export/starexec/sandbox2/benchmark/theBenchmark.p
% 0.20/0.27 % (1315088)Will run a generic schedule for satisfiability detection.
% 0.20/0.27 % (1315102)dis+10_161_sil=256000:plsq=on:plsqr=61199697,1048576:gs=on:alpa=true:sac=on:slsq=on:cn=on:random_seed=3621715944:i=88024:add=on:rawr=on_2999 on theBenchmark for (2999ds/88024Mi)
% 0.20/0.27 % (1315102) found proof, printing to "/export/starexec/sandbox2/tmp/vampire-proof-1315088-1315102"...
% 0.20/0.27 % (1315101)% WARNING: option uhcvi not known.
% 0.20/0.27 % (1315102)...printing done.
% 0.20/0.27 % (1315102)Refutation found. Thanks to Tanya!
% 0.20/0.27 % SZS status Theorem for theBenchmark
% 0.20/0.27 % SZS output start Proof for theBenchmark
% 0.20/0.27 thf(type_def_5, type, sTfun: ($tType * $tType) > $tType).
% 0.20/0.27 thf(func_def_0, type, in: ($i > $i > $o)).
% 0.20/0.27 thf(func_def_2, type, dsetconstr: ($i > ($i > $o) > $i)).
% 0.20/0.27 thf(func_def_3, type, dsetconstrI: $o).
% 0.20/0.27 thf(func_def_5, type, emptysetE: $o).
% 0.20/0.27 thf(func_def_6, type, vPI: !>[X0: $tType]:(((X0 > $o) > $o))).
% 0.20/0.27 thf(func_def_7, type, vIMP: ($o > $o > $o)).
% 0.20/0.27 thf(func_def_8, type, db2: !>[X0: $tType]:(X0)).
% 0.20/0.27 thf(func_def_9, type, db0: !>[X0: $tType]:(X0)).
% 0.20/0.27 thf(func_def_10, type, db1: !>[X0: $tType]:(X0)).
% 0.20/0.27 thf(func_def_11, type, vLAM: !>[X0: $tType, X1: $tType]:((X1) > (X0 > X1))).
% 0.20/0.27 thf(func_def_15, type, sK1: ($i > $o)).
% 0.20/0.27 thf(func_def_17, type, vNOT: ($o > $o)).
% 0.20/0.27 thf(f1,axiom,(
% 0.20/0.27 (dsetconstrI = ! [X0 : $i,X1 : ($i > $o),X2 : $i] : ((in @ X2 @ X0) => ((X1 @ X2) => (in @ X2 @ (dsetconstr @ X0 @ (^[X3 : $i] : ((X1 @ X3))))))))),
% 0.20/0.27 file('/export/starexec/sandbox2/benchmark/theBenchmark.p',dsetconstrI)).
% 0.20/0.27 thf(f2,axiom,(
% 0.20/0.27 (emptysetE = ! [X0 : $i] : ((in @ X0 @ emptyset) => ! [X1 : $o] : X1))),
% 0.20/0.27 file('/export/starexec/sandbox2/benchmark/theBenchmark.p',emptysetE)).
% 0.20/0.27 thf(f3,conjecture,(
% 0.20/0.27 dsetconstrI => (emptysetE => ! [X0 : $i,X1 : ($i > $o)] : (? [X2 : $i] : ((X1 @ X2) & (in @ X2 @ X0)) => ((((dsetconstr @ X0 @ (^[X2 : $i] : ((X1 @ X2))))) = emptyset) => $false)))),
% 0.20/0.27 file('/export/starexec/sandbox2/benchmark/theBenchmark.p',emptyE1)).
% 0.20/0.27 thf(f4,negated_conjecture,(
% 0.20/0.27 ~(dsetconstrI => (emptysetE => ! [X0 : $i,X1 : ($i > $o)] : (? [X2 : $i] : ((X1 @ X2) & (in @ X2 @ X0)) => ((((dsetconstr @ X0 @ (^[X2 : $i] : ((X1 @ X2))))) = emptyset) => $false))))),
% 0.20/0.27 inference(negated_conjecture,[status(cth)],[f3])).
% 0.20/0.27 thf(f5,plain,(
% 0.20/0.27 (dsetconstrI = ! [X0 : $i,X1 : ($i > $o),X2 : $i] : ((in @ X2 @ X0) => ((X1 @ X2) => (in @ X2 @ (dsetconstr @ X0 @ (^[X3 : $i] : ((X1 @ X3))))))))),
% 0.20/0.27 inference(rectify,[],[f1])).
% 0.20/0.27 thf(f6,plain,(
% 0.20/0.27 (dsetconstrI = ((!! @ $i @ (^[Y0 : $i]: (!! @ ($i > $o) @ (^[Y1 : $i > $o]: (!! @ $i @ (^[Y2 : $i]: ((in @ Y0 @ Y2) => ((Y1 @ Y0) => (in @ Y0 @ (dsetconstr @ Y2 @ (^[Y3 : $i]: (Y1 @ Y3))))))))))))))),
% 0.20/0.27 inference(fool_elimination,[],[f5])).
% 0.20/0.27 thf(f7,plain,(
% 0.20/0.27 (emptysetE = ! [X0 : $i] : ((in @ X0 @ emptyset) => ! [X1 : $o] : X1))),
% 0.20/0.27 inference(rectify,[],[f2])).
% 0.20/0.27 thf(f8,plain,(
% 0.20/0.27 (emptysetE = ((!! @ $i @ (^[Y0 : $i]: ((in @ Y0 @ emptyset) => (!! @ $o @ (^[Y1 : $o]: (Y1))))))))),
% 0.20/0.27 inference(fool_elimination,[],[f7])).
% 0.20/0.27 thf(f9,plain,(
% 0.20/0.27 ~(dsetconstrI => (emptysetE => ! [X0 : $i,X1 : ($i > $o)] : (? [X2 : $i] : ((X1 @ X2) & (in @ X2 @ X0)) => ((((dsetconstr @ X0 @ (^[X3 : $i] : ((X1 @ X3))))) = emptyset) => $false))))),
% 0.20/0.27 inference(rectify,[],[f4])).
% 0.20/0.27 thf(f10,plain,(
% 0.20/0.27 ~((dsetconstrI = $true) => ((emptysetE = $true) => ! [X0 : $i,X1 : ($i > $o)] : (? [X2 : $i] : ((((X1 @ X2)) = $true) & (((in @ X2 @ X0)) = $true)) => ((emptyset = ((dsetconstr @ X0 @ (^[Y0 : $i]: (X1 @ Y0))))) => $false))))),
% 0.20/0.27 inference(fool_elimination,[],[f9])).
% 0.20/0.27 thf(f11,plain,(
% 0.20/0.27 ~((dsetconstrI = $true) => ((emptysetE = $true) => ! [X0 : $i,X1 : ($i > $o)] : (? [X2 : $i] : ((((X1 @ X2)) = $true) & (((in @ X2 @ X0)) = $true)) => ~ (emptyset = ((dsetconstr @ X0 @ (^[Y0 : $i]: (X1 @ Y0))))))))),
% 0.20/0.27 inference(true_and_false_elimination,[],[f10])).
% 0.20/0.27 thf(f12,plain,(
% 0.20/0.27 ~((dsetconstrI = $true) => ((emptysetE = $true) => ! [X0 : $i,X1 : ($i > $o)] : (? [X2 : $i] : ((((X1 @ X2)) = $true) & (((in @ X2 @ X0)) = $true)) => (emptyset != ((dsetconstr @ X0 @ (^[Y0 : $i]: (X1 @ Y0))))))))),
% 0.20/0.27 inference(flattening,[],[f11])).
% 0.20/0.27 thf(f13,plain,(
% 0.20/0.27 (? [X0 : $i,X1 : ($i > $o)] : ((emptyset = ((dsetconstr @ X0 @ (^[Y0 : $i]: (X1 @ Y0))))) & ? [X2 : $i] : ((((X1 @ X2)) = $true) & (((in @ X2 @ X0)) = $true))) & (emptysetE = $true)) & (dsetconstrI = $true)),
% 0.20/0.27 inference(ennf_transformation,[],[f12])).
% 0.20/0.27 thf(f14,plain,(
% 0.20/0.27 ? [X0 : $i,X1 : ($i > $o)] : ((emptyset = ((dsetconstr @ X0 @ (^[Y0 : $i]: (X1 @ Y0))))) & ? [X2 : $i] : ((((X1 @ X2)) = $true) & (((in @ X2 @ X0)) = $true))) & (emptysetE = $true) & (dsetconstrI = $true)),
% 0.20/0.27 inference(flattening,[],[f13])).
% 0.20/0.27 thf(f15,plain,(
% 0.20/0.27 ((emptyset = ((dsetconstr @ sK0 @ (^[Y0 : $i]: (sK1 @ Y0))))) & (($true = ((sK1 @ sK2))) & ($true = ((in @ sK2 @ sK0))))) & (emptysetE = $true) & (dsetconstrI = $true)),
% 0.20/0.27 inference(skolemize,[status(esa),new_symbols(skolem,[sK0,sK1,sK2]),skolemize(X0,sK0),skolemize(X1,sK1),skolemize(X2,sK2)],[f14])).
% 0.20/0.27 thf(f16,plain,(
% 0.20/0.27 (dsetconstrI = ((!! @ $i @ (^[Y0 : $i]: (!! @ ($i > $o) @ (^[Y1 : $i > $o]: (!! @ $i @ (^[Y2 : $i]: ((in @ Y0 @ Y2) => ((Y1 @ Y0) => (in @ Y0 @ (dsetconstr @ Y2 @ (^[Y3 : $i]: (Y1 @ Y3))))))))))))))),
% 0.20/0.27 inference(cnf_transformation,[],[f6])).
% 0.20/0.27 thf(f17,plain,(
% 0.20/0.27 (emptysetE = ((!! @ $i @ (^[Y0 : $i]: ((in @ Y0 @ emptyset) => (!! @ $o @ (^[Y1 : $o]: (Y1))))))))),
% 0.20/0.27 inference(cnf_transformation,[],[f8])).
% 0.20/0.27 thf(f18,plain,(
% 0.20/0.27 (dsetconstrI = $true)),
% 0.20/0.27 inference(cnf_transformation,[],[f15])).
% 0.20/0.27 thf(f19,plain,(
% 0.20/0.27 (emptysetE = $true)),
% 0.20/0.27 inference(cnf_transformation,[],[f15])).
% 0.20/0.27 thf(f20,plain,(
% 0.20/0.27 ($true = ((in @ sK2 @ sK0)))),
% 0.20/0.27 inference(cnf_transformation,[],[f15])).
% 0.20/0.27 thf(f21,plain,(
% 0.20/0.27 ($true = ((sK1 @ sK2)))),
% 0.20/0.27 inference(cnf_transformation,[],[f15])).
% 0.20/0.27 thf(f22,plain,(
% 0.20/0.27 (emptyset = ((dsetconstr @ sK0 @ (^[Y0 : $i]: (sK1 @ Y0)))))),
% 0.20/0.27 inference(cnf_transformation,[],[f15])).
% 0.20/0.27 thf(f23,definition,(
% 0.20/0.27 ($true != $false)),
% 0.20/0.27 introduced(theory,[fool_distinctness_axiom])).
% 0.20/0.27 thf(f25,plain,(
% 0.20/0.27 (((!! @ $i @ (^[Y0 : $i]: (!! @ ($i > $o) @ (^[Y1 : $i > $o]: (!! @ $i @ (^[Y2 : $i]: ((in @ Y0 @ Y2) => ((Y1 @ Y0) => (in @ Y0 @ (dsetconstr @ Y2 @ (^[Y3 : $i]: (Y1 @ Y3))))))))))))) = $true)),
% 0.20/0.27 inference(definition_unfolding,[],[f16,f18])).
% 0.20/0.27 thf(f26,plain,(
% 0.20/0.27 (((!! @ $i @ (^[Y0 : $i]: ((in @ Y0 @ emptyset) => (!! @ $o @ (^[Y1 : $o]: (Y1))))))) = $true)),
% 0.20/0.27 inference(definition_unfolding,[],[f17,f19])).
% 0.20/0.27 thf(f27,plain,(
% 0.20/0.27 (emptyset = ((dsetconstr @ sK0 @ sK1)))),
% 0.20/0.27 inference(beta-eta_normalization,[],[f22])).
% 0.20/0.27 thf(f28,plain,(
% 0.20/0.27 ( ! [X1 : $i] : (($true = (((^[Y0 : $i]: ((in @ Y0 @ emptyset) => (!! @ $o @ (^[Y1 : $o]: (Y1))))) @ X1)))) )),
% 0.20/0.27 inference(pi_proxy_clausification,[],[f26])).
% 0.20/0.27 thf(f29,plain,(
% 0.20/0.27 ( ! [X1 : $i] : (($true = (((in @ X1 @ emptyset) => (!! @ $o @ (^[Y0 : $o]: (Y0))))))) )),
% 0.20/0.27 inference(beta-eta_normalization,[],[f28])).
% 0.20/0.27 thf(f30,plain,(
% 0.20/0.27 ( ! [X1 : $i] : (($false = ((in @ X1 @ emptyset))) | (((!! @ $o @ (^[Y0 : $o]: (Y0)))) = $true)) )),
% 0.20/0.27 inference(imp_proxy_clausification,[],[f29])).
% 0.20/0.27 thf(f31,plain,(
% 0.20/0.27 ( ! [X2 : $o,X1 : $i] : (($false = ((in @ X1 @ emptyset))) | ($true = (((^[Y0 : $o]: (Y0)) @ X2)))) )),
% 0.20/0.27 inference(pi_proxy_clausification,[],[f30])).
% 0.20/0.27 thf(f32,plain,(
% 0.20/0.27 ( ! [X2 : $o,X1 : $i] : (($false = ((in @ X1 @ emptyset))) | ($true = X2)) )),
% 0.20/0.27 inference(beta-eta_normalization,[],[f31])).
% 0.20/0.27 thf(f33,plain,(
% 0.20/0.27 ( ! [X1 : $i] : (($true = (((^[Y0 : $i]: (!! @ ($i > $o) @ (^[Y1 : $i > $o]: (!! @ $i @ (^[Y2 : $i]: ((in @ Y0 @ Y2) => ((Y1 @ Y0) => (in @ Y0 @ (dsetconstr @ Y2 @ (^[Y3 : $i]: (Y1 @ Y3))))))))))) @ X1)))) )),
% 0.20/0.27 inference(pi_proxy_clausification,[],[f25])).
% 0.20/0.27 thf(f34,plain,(
% 0.20/0.27 ( ! [X1 : $i] : (($true = ((!! @ ($i > $o) @ (^[Y0 : $i > $o]: (!! @ $i @ (^[Y1 : $i]: ((in @ X1 @ Y1) => ((Y0 @ X1) => (in @ X1 @ (dsetconstr @ Y1 @ Y0))))))))))) )),
% 0.20/0.27 inference(beta-eta_normalization,[],[f33])).
% 0.20/0.27 thf(f35,plain,(
% 0.20/0.27 ( ! [X2 : ($i > $o),X1 : $i] : (($true = (((^[Y0 : $i > $o]: (!! @ $i @ (^[Y1 : $i]: ((in @ X1 @ Y1) => ((Y0 @ X1) => (in @ X1 @ (dsetconstr @ Y1 @ Y0))))))) @ X2)))) )),
% 0.20/0.27 inference(pi_proxy_clausification,[],[f34])).
% 0.20/0.27 thf(f36,plain,(
% 0.20/0.27 ( ! [X2 : ($i > $o),X1 : $i] : (($true = ((!! @ $i @ (^[Y0 : $i]: ((in @ X1 @ Y0) => ((X2 @ X1) => (in @ X1 @ (dsetconstr @ Y0 @ X2))))))))) )),
% 0.20/0.27 inference(beta-eta_normalization,[],[f35])).
% 0.20/0.27 thf(f37,plain,(
% 0.20/0.27 ( ! [X2 : ($i > $o),X3 : $i,X1 : $i] : (($true = (((^[Y0 : $i]: ((in @ X1 @ Y0) => ((X2 @ X1) => (in @ X1 @ (dsetconstr @ Y0 @ X2))))) @ X3)))) )),
% 0.20/0.27 inference(pi_proxy_clausification,[],[f36])).
% 0.20/0.27 thf(f38,plain,(
% 0.20/0.27 ( ! [X2 : ($i > $o),X3 : $i,X1 : $i] : (($true = (((in @ X1 @ X3) => ((X2 @ X1) => (in @ X1 @ (dsetconstr @ X3 @ X2))))))) )),
% 0.20/0.27 inference(beta-eta_normalization,[],[f37])).
% 0.20/0.27 thf(f39,plain,(
% 0.20/0.27 ( ! [X2 : ($i > $o),X3 : $i,X1 : $i] : (($false = ((in @ X1 @ X3))) | ($true = (((X2 @ X1) => (in @ X1 @ (dsetconstr @ X3 @ X2)))))) )),
% 0.20/0.27 inference(imp_proxy_clausification,[],[f38])).
% 0.20/0.27 thf(f40,plain,(
% 0.20/0.27 ( ! [X2 : ($i > $o),X3 : $i,X1 : $i] : (($true = ((in @ X1 @ (dsetconstr @ X3 @ X2)))) | ($false = ((X2 @ X1))) | ($false = ((in @ X1 @ X3)))) )),
% 0.20/0.27 inference(imp_proxy_clausification,[],[f39])).
% 0.20/0.27 thf(f42,definition,(
% 0.20/0.27 spl3_1 <=> ! [X2 : $o] : ($true = X2)),
% 0.20/0.27 introduced(definition,[new_symbols(definition,[spl3_1])],[avatar_definition])).
% 0.20/0.27 thf(f43,plain,(
% 0.20/0.27 ( ! [X2 : $o] : (($true = X2)) ) | ~spl3_1),
% 0.20/0.27 inference(avatar_component_clause,[],[f42])).
% 0.20/0.27 thf(f45,definition,(
% 0.20/0.27 spl3_2 <=> ! [X1 : $i] : ($false = ((in @ X1 @ emptyset)))),
% 0.20/0.27 introduced(definition,[new_symbols(definition,[spl3_2])],[avatar_definition])).
% 0.20/0.27 thf(f46,plain,(
% 0.20/0.27 ( ! [X1 : $i] : (($false = ((in @ X1 @ emptyset)))) ) | ~spl3_2),
% 0.20/0.27 inference(avatar_component_clause,[],[f45])).
% 0.20/0.27 thf(f47,plain,(
% 0.20/0.27 spl3_1 | spl3_2),
% 0.20/0.27 inference(avatar_split_clause,[],[f32,f45,f42])).
% 0.20/0.27 thf(f49,plain,(
% 0.20/0.27 ( ! [X0 : $o] : (($false != X0)) ) | ~spl3_1),
% 0.20/0.27 inference(constrained_superposition,[],[f23,f43])).
% 0.20/0.27 thf(f52,plain,(
% 0.20/0.27 $false | ~spl3_1),
% 0.20/0.27 inference(equality_resolution,[],[f49])).
% 0.20/0.27 thf(f53,plain,(
% 0.20/0.27 ~spl3_1),
% 0.20/0.27 inference(avatar_contradiction_clause,[],[f52])).
% 0.20/0.27 thf(f63,plain,(
% 0.20/0.27 ( ! [X0 : $i] : ((((in @ X0 @ emptyset)) = $true) | ($false = ((sK1 @ X0))) | ($false = ((in @ X0 @ sK0)))) )),
% 0.20/0.27 inference(constrained_superposition,[],[f40,f27])).
% 0.20/0.27 thf(f68,plain,(
% 0.20/0.27 ( ! [X0 : $i] : (($true = $false) | ($false = ((sK1 @ X0))) | ($false = ((in @ X0 @ sK0)))) ) | ~spl3_2),
% 0.20/0.27 inference(forward_demodulation,[],[f63,f46])).
% 0.20/0.27 thf(f69,plain,(
% 0.20/0.27 ( ! [X0 : $i] : (($false = ((in @ X0 @ sK0))) | ($false = ((sK1 @ X0)))) ) | ~spl3_2),
% 0.20/0.27 inference(trivial_inequality_removal,[],[f68])).
% 0.20/0.27 thf(f128,plain,(
% 0.20/0.27 ($true = $false) | (((sK1 @ sK2)) = $false) | ~spl3_2),
% 0.20/0.27 inference(constrained_superposition,[],[f20,f69])).
% 0.20/0.27 thf(f129,plain,(
% 0.20/0.27 (((sK1 @ sK2)) = $false) | ~spl3_2),
% 0.20/0.27 inference(trivial_inequality_removal,[],[f128])).
% 0.20/0.27 thf(f137,plain,(
% 0.20/0.27 ($true = $false) | ~spl3_2),
% 0.20/0.27 inference(constrained_superposition,[],[f129,f21])).
% 0.20/0.27 thf(f141,plain,(
% 0.20/0.27 $false | ~spl3_2),
% 0.20/0.27 inference(trivial_inequality_removal,[],[f137])).
% 0.20/0.27 thf(f142,plain,(
% 0.20/0.27 ~spl3_2),
% 0.20/0.27 inference(avatar_contradiction_clause,[],[f141])).
% 0.20/0.27 cnf(s12, plain, spl3_1 | spl3_2, inference(sat_conversion,[],[f47])).
% 0.20/0.27 cnf(s17, plain, ~spl3_1, inference(sat_conversion,[],[f53])).
% 0.20/0.27 cnf(s51, plain, ~spl3_2, inference(sat_conversion,[],[f142])).
% 0.20/0.27 cnf(s52, plain, $false, inference(rat,[],[s12,s51,s17])).
% 0.20/0.27 thf(f143,plain,(
% 0.20/0.27 $false),
% 0.20/0.27 inference(avatar_sat_refutation,[],[s52])).
% 0.20/0.27 % SZS output end Proof for theBenchmark
% 0.20/0.27 % (1315102)------------------------------
% 0.20/0.27 % (1315102)Version: Vampire 5.0.1 (Release build, commit 5ef7c2677 on 2026-07-16 16:54:09 +0200)
% 0.20/0.27 % (1315102)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 0.20/0.27 % (1315102)CaDiCaL version: 2.1.3
% 0.20/0.27 % (1315102)Termination reason: Refutation
% 0.20/0.27 % (1315102)Time elapsed: 0.004 s
% 0.20/0.27 % (1315102)Peak memory usage: 13 MB
% 0.20/0.27 % (1315102)Instructions burned: 9 (million)
% 0.20/0.27 % (1315088)Success in time 0.032 s
% 0.20/0.27 % Vampire exiting
%------------------------------------------------------------------------------