TSTP Solution File: SWW209+1 by Metis---2.4
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : Metis---2.4
% Problem : SWW209+1 : TPTP v8.1.0. Released v5.2.0.
% Transfm : none
% Format : tptp:raw
% Command : metis --show proof --show saturation %s
% Computer : n026.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 : 600s
% DateTime : Thu Jul 21 00:59:20 EDT 2022
% Result : Theorem 255.64s 255.85s
% Output : CNFRefutation 255.64s
% Verified :
% SZS Type : Refutation
% Derivation depth : 9
% Number of leaves : 6
% Syntax : Number of formulae : 34 ( 14 unt; 0 def)
% Number of atoms : 56 ( 8 equ)
% Maximal formula atoms : 3 ( 1 avg)
% Number of connectives : 43 ( 21 ~; 15 |; 2 &)
% ( 0 <=>; 5 =>; 0 <=; 0 <~>)
% Maximal formula depth : 7 ( 3 avg)
% Maximal term depth : 4 ( 2 avg)
% Number of predicates : 4 ( 1 usr; 1 prp; 0-3 aty)
% Number of functors : 7 ( 7 usr; 5 con; 0-4 aty)
% Number of variables : 48 ( 3 sgn 36 !; 2 ?)
% Comments :
%------------------------------------------------------------------------------
fof(fact__096ALL_Am_An_O_Am_A_060_An_A_N_N_062_Af_Am_A_060_Af_An_096,axiom,
! [B_m,B_n] :
( c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
=> c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,B_m),hAPP(v_f____,B_n)) ) ).
fof(fact__096ALL_Am_An_O_Am_A_060_An_A_N_N_062_Ag_Am_A_060_Ag_An_096,axiom,
! [B_m,B_n] :
( c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
=> c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_ga____,B_m),hAPP(v_ga____,B_n)) ) ).
fof(fact_o__apply,axiom,
! [V_xa_2,V_gb_2,V_fa_2,T_c,T_a,T_b] : hAPP(hAPP(c_Fun_Ocomp(T_b,T_a,T_c,V_fa_2),V_gb_2),V_xa_2) = hAPP(V_fa_2,hAPP(V_gb_2,V_xa_2)) ).
fof(conj_0,conjecture,
! [B_m,B_n] :
( c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
=> c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),B_m),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),B_n)) ) ).
fof(subgoal_0,plain,
! [B_m,B_n] :
( c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
=> c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),B_m),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),B_n)) ),
inference(strip,[],[conj_0]) ).
fof(negate_0_0,plain,
~ ! [B_m,B_n] :
( c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
=> c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),B_m),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),B_n)) ),
inference(negate,[],[subgoal_0]) ).
fof(normalize_0_0,plain,
! [B_m,B_n] :
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,B_m),hAPP(v_f____,B_n)) ),
inference(canonicalize,[],[fact__096ALL_Am_An_O_Am_A_060_An_A_N_N_062_Af_Am_A_060_Af_An_096]) ).
fof(normalize_0_1,plain,
! [B_m,B_n] :
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,B_m),hAPP(v_f____,B_n)) ),
inference(specialize,[],[normalize_0_0]) ).
fof(normalize_0_2,plain,
? [B_m,B_n] :
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),B_m),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),B_n))
& c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n) ),
inference(canonicalize,[],[negate_0_0]) ).
fof(normalize_0_3,plain,
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16))
& c_Orderings_Oord__class_Oless(tc_Nat_Onat,skolemFOFtoCNF_B_m_5,skolemFOFtoCNF_B_n_16) ),
inference(skolemize,[],[normalize_0_2]) ).
fof(normalize_0_4,plain,
c_Orderings_Oord__class_Oless(tc_Nat_Onat,skolemFOFtoCNF_B_m_5,skolemFOFtoCNF_B_n_16),
inference(conjunct,[],[normalize_0_3]) ).
fof(normalize_0_5,plain,
! [B_m,B_n] :
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_ga____,B_m),hAPP(v_ga____,B_n)) ),
inference(canonicalize,[],[fact__096ALL_Am_An_O_Am_A_060_An_A_N_N_062_Ag_Am_A_060_Ag_An_096]) ).
fof(normalize_0_6,plain,
! [B_m,B_n] :
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_ga____,B_m),hAPP(v_ga____,B_n)) ),
inference(specialize,[],[normalize_0_5]) ).
fof(normalize_0_7,plain,
~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)),
inference(conjunct,[],[normalize_0_3]) ).
fof(normalize_0_8,plain,
! [T_a,T_b,T_c,V_fa_2,V_gb_2,V_xa_2] : hAPP(hAPP(c_Fun_Ocomp(T_b,T_a,T_c,V_fa_2),V_gb_2),V_xa_2) = hAPP(V_fa_2,hAPP(V_gb_2,V_xa_2)),
inference(canonicalize,[],[fact_o__apply]) ).
fof(normalize_0_9,plain,
! [T_a,T_b,T_c,V_fa_2,V_gb_2,V_xa_2] : hAPP(hAPP(c_Fun_Ocomp(T_b,T_a,T_c,V_fa_2),V_gb_2),V_xa_2) = hAPP(V_fa_2,hAPP(V_gb_2,V_xa_2)),
inference(specialize,[],[normalize_0_8]) ).
cnf(refute_0_0,plain,
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,B_m),hAPP(v_f____,B_n)) ),
inference(canonicalize,[],[normalize_0_1]) ).
cnf(refute_0_1,plain,
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_ga____,skolemFOFtoCNF_B_m_5),hAPP(v_ga____,skolemFOFtoCNF_B_n_16))
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16))) ),
inference(subst,[],[refute_0_0:[bind(B_m,$fot(hAPP(v_ga____,skolemFOFtoCNF_B_m_5))),bind(B_n,$fot(hAPP(v_ga____,skolemFOFtoCNF_B_n_16)))]]) ).
cnf(refute_0_2,plain,
c_Orderings_Oord__class_Oless(tc_Nat_Onat,skolemFOFtoCNF_B_m_5,skolemFOFtoCNF_B_n_16),
inference(canonicalize,[],[normalize_0_4]) ).
cnf(refute_0_3,plain,
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,B_m,B_n)
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_ga____,B_m),hAPP(v_ga____,B_n)) ),
inference(canonicalize,[],[normalize_0_6]) ).
cnf(refute_0_4,plain,
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,skolemFOFtoCNF_B_m_5,skolemFOFtoCNF_B_n_16)
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_ga____,skolemFOFtoCNF_B_m_5),hAPP(v_ga____,skolemFOFtoCNF_B_n_16)) ),
inference(subst,[],[refute_0_3:[bind(B_m,$fot(skolemFOFtoCNF_B_m_5)),bind(B_n,$fot(skolemFOFtoCNF_B_n_16))]]) ).
cnf(refute_0_5,plain,
c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_ga____,skolemFOFtoCNF_B_m_5),hAPP(v_ga____,skolemFOFtoCNF_B_n_16)),
inference(resolve,[$cnf( c_Orderings_Oord__class_Oless(tc_Nat_Onat,skolemFOFtoCNF_B_m_5,skolemFOFtoCNF_B_n_16) )],[refute_0_2,refute_0_4]) ).
cnf(refute_0_6,plain,
c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16))),
inference(resolve,[$cnf( c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_ga____,skolemFOFtoCNF_B_m_5),hAPP(v_ga____,skolemFOFtoCNF_B_n_16)) )],[refute_0_5,refute_0_1]) ).
cnf(refute_0_7,plain,
~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)),
inference(canonicalize,[],[normalize_0_7]) ).
cnf(refute_0_8,plain,
hAPP(hAPP(c_Fun_Ocomp(T_b,T_a,T_c,V_fa_2),V_gb_2),V_xa_2) = hAPP(V_fa_2,hAPP(V_gb_2,V_xa_2)),
inference(canonicalize,[],[normalize_0_9]) ).
cnf(refute_0_9,plain,
hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5) = hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),
inference(subst,[],[refute_0_8:[bind(T_a,$fot(tc_Nat_Onat)),bind(T_b,$fot(tc_Nat_Onat)),bind(T_c,$fot(tc_Nat_Onat)),bind(V_fa_2,$fot(v_f____)),bind(V_gb_2,$fot(v_ga____)),bind(V_xa_2,$fot(skolemFOFtoCNF_B_m_5))]]) ).
cnf(refute_0_10,plain,
( hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5) != hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5))
| ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16))
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)) ),
introduced(tautology,[equality,[$cnf( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)) ),[1],$fot(hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)))]]) ).
cnf(refute_0_11,plain,
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16))
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)) ),
inference(resolve,[$cnf( $equal(hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5),hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5))) )],[refute_0_9,refute_0_10]) ).
cnf(refute_0_12,plain,
hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16) = hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16)),
inference(subst,[],[refute_0_8:[bind(T_a,$fot(tc_Nat_Onat)),bind(T_b,$fot(tc_Nat_Onat)),bind(T_c,$fot(tc_Nat_Onat)),bind(V_fa_2,$fot(v_f____)),bind(V_gb_2,$fot(v_ga____)),bind(V_xa_2,$fot(skolemFOFtoCNF_B_n_16))]]) ).
cnf(refute_0_13,plain,
( hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16) != hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16))
| ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16)))
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)) ),
introduced(tautology,[equality,[$cnf( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)) ),[2],$fot(hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16)))]]) ).
cnf(refute_0_14,plain,
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16)))
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)) ),
inference(resolve,[$cnf( $equal(hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16),hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16))) )],[refute_0_12,refute_0_13]) ).
cnf(refute_0_15,plain,
( ~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16)))
| c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)) ),
inference(resolve,[$cnf( c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)) )],[refute_0_14,refute_0_11]) ).
cnf(refute_0_16,plain,
~ c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16))),
inference(resolve,[$cnf( c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_m_5),hAPP(hAPP(c_Fun_Ocomp(tc_Nat_Onat,tc_Nat_Onat,tc_Nat_Onat,v_f____),v_ga____),skolemFOFtoCNF_B_n_16)) )],[refute_0_15,refute_0_7]) ).
cnf(refute_0_17,plain,
$false,
inference(resolve,[$cnf( c_Orderings_Oord__class_Oless(tc_Nat_Onat,hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_m_5)),hAPP(v_f____,hAPP(v_ga____,skolemFOFtoCNF_B_n_16))) )],[refute_0_6,refute_0_16]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.03/0.12 % Problem : SWW209+1 : TPTP v8.1.0. Released v5.2.0.
% 0.03/0.13 % Command : metis --show proof --show saturation %s
% 0.14/0.34 % Computer : n026.cluster.edu
% 0.14/0.34 % Model : x86_64 x86_64
% 0.14/0.34 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.34 % Memory : 8042.1875MB
% 0.14/0.34 % OS : Linux 3.10.0-693.el7.x86_64
% 0.14/0.34 % CPULimit : 300
% 0.14/0.34 % WCLimit : 600
% 0.14/0.34 % DateTime : Sat Jun 4 08:45:59 EDT 2022
% 0.14/0.34 % CPUTime :
% 0.14/0.35 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 255.64/255.85 % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 255.64/255.85
% 255.64/255.85 % SZS output start CNFRefutation for /export/starexec/sandbox2/benchmark/theBenchmark.p
% See solution above
% 255.64/255.86
%------------------------------------------------------------------------------