%------------------------------------------------------------------------------ % File : CARINE---0.734 % Problem : SWV292-2 : TPTP v5.0.0. Released v3.2.0. % Transfm : add_equality % Format : carine % Command : carine %s t=%d xo=off uct=32000 % Computer : art02.cs.miami.edu % Model : i686 i686 % CPU : Intel(R) Pentium(R) 4 CPU 2.80GHz @ 2793MHz % Memory : 2018MB % OS : Linux 2.6.26.8-57.fc8 % CPULimit : 300s % DateTime : Sun Nov 28 06:50:33 EST 2010 % Result : Unsatisfiable 4.26s % Output : Refutation 4.26s % Verified : % SZS Type : None (Parsing solution fails) % Syntax : Number of formulae : 0 % Comments : %------------------------------------------------------------------------------ %----ERROR: Could not form TPTP format derivation %------------------------------------------------------------------------------ %----ORIGINAL SYSTEM OUTPUT % Command entered: % /home/graph/tptp/Systems/CARINE---0.734/carine /tmp/SystemOnTPTP18803/SWV/SWV292-2+noeq.car t=300 xo=off uct=32000 % CARINE version 0.734 (Dec 2003) % Initializing tables ... done. % Parsing ................ done. % Calculating time slices ... done. % Building Lookup Tables ... done. % Looking for a proof at depth = 1 ... % t = 0 secs [nr = 41] [nf = 0] [nu = 16] [ut = 18] % Looking for a proof at depth = 2 ... % t = 0 secs [nr = 808] [nf = 0] [nu = 340] [ut = 202] % Looking for a proof at depth = 3 ... % +================================================+ % | | % | Congratulations!!! ........ A proof was found. | % | | % +================================================+ % Base Clauses and Unit Clauses used in proof: % ============================================ % Base Clauses: % ------------- % B0: ~c_in_3(v_A_0(),c_Event_Obad_0(),tc_Message_Oagent_0()) % B1: c_in_3(v_evs4_0(),c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) % B4: ~c_in_3(c_Event_Oevent_OSays_3(v_A_0(),v_B_0(),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_B_0()),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) % B5: ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) | c_in_3(c_Event_Oevent_OSays_3(v_A_0(),v_B_0(),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_B_0()),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) % B6: ~c_in_3(c_Event_Oevent_OSays_3(x0,x1,x2),c_List_Oset_2(x3,tc_Event_Oevent_0()),tc_Event_Oevent_0()) | c_in_3(x2,c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),x3)),tc_Message_Omsg_0()) % B7: ~c_in_3(c_Message_Omsg_OMPair_2(x0,x1),c_Message_Oanalz_1(x2),tc_Message_Omsg_0()) | c_in_3(x1,c_Message_Oanalz_1(x2),tc_Message_Omsg_0()) % B8: ~c_in_3(c_Message_Omsg_OMPair_2(x0,x1),c_Message_Osynth_1(c_Message_Oanalz_1(x2)),tc_Message_Omsg_0()) | c_in_3(x0,c_Message_Osynth_1(c_Message_Oanalz_1(x2)),tc_Message_Omsg_0()) % B9: ~c_in_3(x0,x1,tc_Message_Omsg_0()) | c_in_3(x0,c_Message_Osynth_1(x1),tc_Message_Omsg_0()) % B10: ~c_in_3(x0,c_Message_Oanalz_1(x1),tc_Message_Omsg_0()) | c_in_3(x0,c_Message_Oparts_1(x1),tc_Message_Omsg_0()) % B11: ~c_in_3(x0,c_union_3(x1,x2,x3),x3) | c_in_3(x0,x2,x3) | c_in_3(x0,x1,x3) % B12: ~c_in_3(c_Message_Omsg_OCrypt_2(x0,x1),c_Message_Osynth_1(x2),tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OCrypt_2(x0,x1),x2,tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OKey_1(x0),x2,tc_Message_Omsg_0()) % B13: ~c_in_3(c_Event_Oevent_OGets_2(x1,x2),c_List_Oset_2(x0,tc_Event_Oevent_0()),tc_Event_Oevent_0()) | ~c_in_3(x0,c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) | c_in_3(c_Event_Oevent_OSays_3(v_sko__usf_3(x1,x2,x0),x1,x2),c_List_Oset_2(x0,tc_Event_Oevent_0()),tc_Event_Oevent_0()) % B14: ~c_in_3(x1,c_Message_Osynth_1(c_Message_Oanalz_1(x2)),tc_Message_Omsg_0()) | ~c_in_3(x0,c_Message_Oparts_1(c_insert_3(x1,x2,tc_Message_Omsg_0())),tc_Message_Omsg_0()) | c_in_3(x0,c_union_3(c_Message_Osynth_1(c_Message_Oanalz_1(x2)),c_Message_Oparts_1(x2),tc_Message_Omsg_0()),tc_Message_Omsg_0()) % B15: ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(x1)),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),x0)),tc_Message_Omsg_0()) | ~c_in_3(x0,c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) | c_in_3(x1,c_Event_Obad_0(),tc_Message_Oagent_0()) % Unit Clauses: % -------------- % U1: < d0 v0 dv0 f1 c3 t4 td2 b nc > c_in_3(v_evs4_0(),c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) % U2: < d0 v0 dv0 f9 c9 t18 td5 b nc > c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Oparts_1(c_insert_3(v_X_0(),c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()),tc_Message_Omsg_0())),tc_Message_Omsg_0()) % U3: < d0 v0 dv0 f10 c9 t19 td7 b nc > c_in_3(c_Event_Oevent_OGets_2(v_Ba_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NAa_0()),c_Message_Omsg_OMPair_2(v_X_0(),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()),c_Message_Omsg_OKey_1(v_K_0())))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) % U4: < d0 v0 dv0 f13 c12 t25 td9 b nc > ~c_in_3(c_Event_Oevent_OSays_3(v_A_0(),v_B_0(),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_B_0()),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) % U6: < d1 v0 dv0 f8 c7 t15 td5 > ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) % U123: < d2 v0 dv0 f4 c4 t8 td3 > ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) % U124: < d2 v0 dv0 f19 c16 t35 td8 > c_in_3(c_Event_Oevent_OSays_3(v_sko__usf_3(v_Ba_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NAa_0()),c_Message_Omsg_OMPair_2(v_X_0(),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()),c_Message_Omsg_OKey_1(v_K_0()))))),v_evs4_0()),v_Ba_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NAa_0()),c_Message_Omsg_OMPair_2(v_X_0(),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()),c_Message_Omsg_OKey_1(v_K_0())))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) % U202: < d3 v0 dv0 f4 c4 t8 td3 > ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())),c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) % U293: < d3 v0 dv0 f9 c7 t16 td5 > ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Osynth_1(c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()))),tc_Message_Omsg_0()) % U302: < d3 v0 dv0 f9 c7 t16 td5 > c_in_3(c_Message_Omsg_OMPair_2(v_X_0(),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()),c_Message_Omsg_OKey_1(v_K_0())))),c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()))),tc_Message_Omsg_0()) % U1144: < d3 v0 dv0 f12 c10 t22 td5 > c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_union_3(c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()))),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()),tc_Message_Omsg_0()) % U1196: < d3 v0 dv0 f9 c7 t16 td5 > c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()))),tc_Message_Omsg_0()) % U4358: < d3 v0 dv0 f4 c4 t8 td3 > c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())),c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) % --------------- Start of Proof --------------- % Derivation of unit clause U1: % c_in_3(v_evs4_0(),c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) ....... U1 % Derivation of unit clause U2: % c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Oparts_1(c_insert_3(v_X_0(),c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()),tc_Message_Omsg_0())),tc_Message_Omsg_0()) ....... U2 % Derivation of unit clause U3: % c_in_3(c_Event_Oevent_OGets_2(v_Ba_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NAa_0()),c_Message_Omsg_OMPair_2(v_X_0(),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()),c_Message_Omsg_OKey_1(v_K_0())))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) ....... U3 % Derivation of unit clause U4: % ~c_in_3(c_Event_Oevent_OSays_3(v_A_0(),v_B_0(),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_B_0()),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) ....... U4 % Derivation of unit clause U6: % ~c_in_3(c_Event_Oevent_OSays_3(v_A_0(),v_B_0(),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_B_0()),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) ....... B4 % ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) | c_in_3(c_Event_Oevent_OSays_3(v_A_0(),v_B_0(),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_B_0()),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) ....... B5 % ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OAgent_1(v_B_0())))), c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0())), tc_Message_Omsg_0()) ....... R1 [B4:L0, B5:L1] % Derivation of unit clause U123: % ~c_in_3(v_A_0(),c_Event_Obad_0(),tc_Message_Oagent_0()) ....... B0 % ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(x1)),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),x0)),tc_Message_Omsg_0()) | ~c_in_3(x0,c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) | c_in_3(x1,c_Event_Obad_0(),tc_Message_Oagent_0()) ....... B15 % ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())), c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), x0)), tc_Message_Omsg_0()) | ~c_in_3(x0, c_OtwayRees_Ootway_0(), tc_List_Olist_1(tc_Event_Oevent_0())) ....... R1 [B0:L0, B15:L2] % c_in_3(v_evs4_0(),c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) ....... U1 % ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())), c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0())), tc_Message_Omsg_0()) ....... R2 [R1:L1, U1:L0] % Derivation of unit clause U124: % c_in_3(v_evs4_0(),c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) ....... B1 % ~c_in_3(c_Event_Oevent_OGets_2(x1,x2),c_List_Oset_2(x0,tc_Event_Oevent_0()),tc_Event_Oevent_0()) | ~c_in_3(x0,c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) | c_in_3(c_Event_Oevent_OSays_3(v_sko__usf_3(x1,x2,x0),x1,x2),c_List_Oset_2(x0,tc_Event_Oevent_0()),tc_Event_Oevent_0()) ....... B13 % ~c_in_3(c_Event_Oevent_OGets_2(x0, x1), c_List_Oset_2(v_evs4_0(), tc_Event_Oevent_0()), tc_Event_Oevent_0()) | c_in_3(c_Event_Oevent_OSays_3(v_sko__usf_3(x0, x1, v_evs4_0()), x0, x1), c_List_Oset_2(v_evs4_0(), tc_Event_Oevent_0()), tc_Event_Oevent_0()) ....... R1 [B1:L0, B13:L1] % c_in_3(c_Event_Oevent_OGets_2(v_Ba_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NAa_0()),c_Message_Omsg_OMPair_2(v_X_0(),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()),c_Message_Omsg_OKey_1(v_K_0())))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) ....... U3 % c_in_3(c_Event_Oevent_OSays_3(v_sko__usf_3(v_Ba_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NAa_0()), c_Message_Omsg_OMPair_2(v_X_0(), c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()), c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()), c_Message_Omsg_OKey_1(v_K_0()))))), v_evs4_0()), v_Ba_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NAa_0()), c_Message_Omsg_OMPair_2(v_X_0(), c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()), c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()), c_Message_Omsg_OKey_1(v_K_0())))))), c_List_Oset_2(v_evs4_0(), tc_Event_Oevent_0()), tc_Event_Oevent_0()) ....... R2 [R1:L0, U3:L0] % Derivation of unit clause U202: % ~c_in_3(v_A_0(),c_Event_Obad_0(),tc_Message_Oagent_0()) ....... B0 % ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(x1)),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),x0)),tc_Message_Omsg_0()) | ~c_in_3(x0,c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) | c_in_3(x1,c_Event_Obad_0(),tc_Message_Oagent_0()) ....... B15 % ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())), c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), x0)), tc_Message_Omsg_0()) | ~c_in_3(x0, c_OtwayRees_Ootway_0(), tc_List_Olist_1(tc_Event_Oevent_0())) ....... R1 [B0:L0, B15:L2] % ~c_in_3(x0,c_Message_Oanalz_1(x1),tc_Message_Omsg_0()) | c_in_3(x0,c_Message_Oparts_1(x1),tc_Message_Omsg_0()) ....... B10 % ~c_in_3(x0, c_OtwayRees_Ootway_0(), tc_List_Olist_1(tc_Event_Oevent_0())) | ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())), c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), x0)), tc_Message_Omsg_0()) ....... R2 [R1:L0, B10:L1] % c_in_3(v_evs4_0(),c_OtwayRees_Ootway_0(),tc_List_Olist_1(tc_Event_Oevent_0())) ....... U1 % ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())), c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0())), tc_Message_Omsg_0()) ....... R3 [R2:L0, U1:L0] % Derivation of unit clause U293: % ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) | c_in_3(c_Event_Oevent_OSays_3(v_A_0(),v_B_0(),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_B_0()),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) ....... B5 % ~c_in_3(c_Message_Omsg_OCrypt_2(x0,x1),c_Message_Osynth_1(x2),tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OCrypt_2(x0,x1),x2,tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OKey_1(x0),x2,tc_Message_Omsg_0()) ....... B12 % c_in_3(c_Event_Oevent_OSays_3(v_A_0(), v_B_0(), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_B_0()), c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OAgent_1(v_B_0())))))))), c_List_Oset_2(v_evs4_0(), tc_Event_Oevent_0()), tc_Event_Oevent_0()) | ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OAgent_1(v_B_0())))), c_Message_Osynth_1(c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0()))), tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())), c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0())), tc_Message_Omsg_0()) ....... R1 [B5:L0, B12:L1] % ~c_in_3(c_Event_Oevent_OSays_3(v_A_0(),v_B_0(),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_B_0()),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) ....... U4 % ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OAgent_1(v_B_0())))), c_Message_Osynth_1(c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0()))), tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())), c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0())), tc_Message_Omsg_0()) ....... R2 [R1:L0, U4:L0] % ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) ....... U123 % ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OAgent_1(v_B_0())))), c_Message_Osynth_1(c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0()))), tc_Message_Omsg_0()) ....... R3 [R2:L1, U123:L0] % Derivation of unit clause U302: % ~c_in_3(c_Event_Oevent_OSays_3(x0,x1,x2),c_List_Oset_2(x3,tc_Event_Oevent_0()),tc_Event_Oevent_0()) | c_in_3(x2,c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),x3)),tc_Message_Omsg_0()) ....... B6 % ~c_in_3(c_Message_Omsg_OMPair_2(x0,x1),c_Message_Oanalz_1(x2),tc_Message_Omsg_0()) | c_in_3(x1,c_Message_Oanalz_1(x2),tc_Message_Omsg_0()) ....... B7 % ~c_in_3(c_Event_Oevent_OSays_3(x0, x1, c_Message_Omsg_OMPair_2(x2, x3)), c_List_Oset_2(x4, tc_Event_Oevent_0()), tc_Event_Oevent_0()) | c_in_3(x3, c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), x4)), tc_Message_Omsg_0()) ....... R1 [B6:L1, B7:L0] % ~c_in_3(x0,x1,tc_Message_Omsg_0()) | c_in_3(x0,c_Message_Osynth_1(x1),tc_Message_Omsg_0()) ....... B9 % ~c_in_3(c_Event_Oevent_OSays_3(x0, x1, c_Message_Omsg_OMPair_2(x2, x3)), c_List_Oset_2(x4, tc_Event_Oevent_0()), tc_Event_Oevent_0()) | c_in_3(x3, c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), x4))), tc_Message_Omsg_0()) ....... R2 [R1:L1, B9:L0] % c_in_3(c_Event_Oevent_OSays_3(v_sko__usf_3(v_Ba_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NAa_0()),c_Message_Omsg_OMPair_2(v_X_0(),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()),c_Message_Omsg_OKey_1(v_K_0()))))),v_evs4_0()),v_Ba_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NAa_0()),c_Message_Omsg_OMPair_2(v_X_0(),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()),c_Message_Omsg_OKey_1(v_K_0())))))),c_List_Oset_2(v_evs4_0(),tc_Event_Oevent_0()),tc_Event_Oevent_0()) ....... U124 % c_in_3(c_Message_Omsg_OMPair_2(v_X_0(), c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()), c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()), c_Message_Omsg_OKey_1(v_K_0())))), c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0()))), tc_Message_Omsg_0()) ....... R3 [R2:L0, U124:L0] % Derivation of unit clause U1144: % ~c_in_3(c_Message_Omsg_OMPair_2(x0,x1),c_Message_Osynth_1(c_Message_Oanalz_1(x2)),tc_Message_Omsg_0()) | c_in_3(x0,c_Message_Osynth_1(c_Message_Oanalz_1(x2)),tc_Message_Omsg_0()) ....... B8 % ~c_in_3(x1,c_Message_Osynth_1(c_Message_Oanalz_1(x2)),tc_Message_Omsg_0()) | ~c_in_3(x0,c_Message_Oparts_1(c_insert_3(x1,x2,tc_Message_Omsg_0())),tc_Message_Omsg_0()) | c_in_3(x0,c_union_3(c_Message_Osynth_1(c_Message_Oanalz_1(x2)),c_Message_Oparts_1(x2),tc_Message_Omsg_0()),tc_Message_Omsg_0()) ....... B14 % ~c_in_3(c_Message_Omsg_OMPair_2(x0, x1), c_Message_Osynth_1(c_Message_Oanalz_1(x2)), tc_Message_Omsg_0()) | ~c_in_3(x3, c_Message_Oparts_1(c_insert_3(x0, x2, tc_Message_Omsg_0())), tc_Message_Omsg_0()) | c_in_3(x3, c_union_3(c_Message_Osynth_1(c_Message_Oanalz_1(x2)), c_Message_Oparts_1(x2), tc_Message_Omsg_0()), tc_Message_Omsg_0()) ....... R1 [B8:L1, B14:L0] % c_in_3(c_Message_Omsg_OMPair_2(v_X_0(),c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_Ba_0()),c_Message_Omsg_OMPair_2(c_Message_Omsg_ONonce_1(v_NB_0()),c_Message_Omsg_OKey_1(v_K_0())))),c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()))),tc_Message_Omsg_0()) ....... U302 % ~c_in_3(x0, c_Message_Oparts_1(c_insert_3(v_X_0(), c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0()), tc_Message_Omsg_0())), tc_Message_Omsg_0()) | c_in_3(x0, c_union_3(c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0()))), c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0())), tc_Message_Omsg_0()), tc_Message_Omsg_0()) ....... R2 [R1:L0, U302:L0] % c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Oparts_1(c_insert_3(v_X_0(),c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()),tc_Message_Omsg_0())),tc_Message_Omsg_0()) ....... U2 % c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OAgent_1(v_B_0())))), c_union_3(c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0()))), c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0())), tc_Message_Omsg_0()), tc_Message_Omsg_0()) ....... R3 [R2:L0, U2:L0] % Derivation of unit clause U1196: % ~c_in_3(x0,x1,tc_Message_Omsg_0()) | c_in_3(x0,c_Message_Osynth_1(x1),tc_Message_Omsg_0()) ....... B9 % ~c_in_3(x0,c_union_3(x1,x2,x3),x3) | c_in_3(x0,x2,x3) | c_in_3(x0,x1,x3) ....... B11 % c_in_3(x0, c_Message_Osynth_1(x1), tc_Message_Omsg_0()) | ~c_in_3(x0, c_union_3(x2, x1, tc_Message_Omsg_0()), tc_Message_Omsg_0()) | c_in_3(x0, x2, tc_Message_Omsg_0()) ....... R1 [B9:L0, B11:L1] % ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Osynth_1(c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()))),tc_Message_Omsg_0()) ....... U293 % ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OAgent_1(v_B_0())))), c_union_3(x0, c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0())), tc_Message_Omsg_0()), tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OAgent_1(v_B_0())))), x0, tc_Message_Omsg_0()) ....... R2 [R1:L0, U293:L0] % c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_union_3(c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()))),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()),tc_Message_Omsg_0()) ....... U1144 % c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OAgent_1(v_B_0())))), c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0()))), tc_Message_Omsg_0()) ....... R3 [R2:L0, U1144:L0] % Derivation of unit clause U4358: % ~c_in_3(x0,c_Message_Oanalz_1(x1),tc_Message_Omsg_0()) | c_in_3(x0,c_Message_Oparts_1(x1),tc_Message_Omsg_0()) ....... B10 % ~c_in_3(c_Message_Omsg_OCrypt_2(x0,x1),c_Message_Osynth_1(x2),tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OCrypt_2(x0,x1),x2,tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OKey_1(x0),x2,tc_Message_Omsg_0()) ....... B12 % c_in_3(c_Message_Omsg_OCrypt_2(x0, x1), c_Message_Oparts_1(x2), tc_Message_Omsg_0()) | ~c_in_3(c_Message_Omsg_OCrypt_2(x0, x1), c_Message_Osynth_1(c_Message_Oanalz_1(x2)), tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OKey_1(x0), c_Message_Oanalz_1(x2), tc_Message_Omsg_0()) ....... R1 [B10:L0, B12:L1] % ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Oparts_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) ....... U6 % ~c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()), c_Message_Omsg_OMPair_2(v_NA_0(), c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()), c_Message_Omsg_OAgent_1(v_B_0())))), c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0()))), tc_Message_Omsg_0()) | c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())), c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0())), tc_Message_Omsg_0()) ....... R2 [R1:L0, U6:L0] % c_in_3(c_Message_Omsg_OCrypt_2(c_Public_OshrK_1(v_A_0()),c_Message_Omsg_OMPair_2(v_NA_0(),c_Message_Omsg_OMPair_2(c_Message_Omsg_OAgent_1(v_A_0()),c_Message_Omsg_OAgent_1(v_B_0())))),c_Message_Osynth_1(c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0()))),tc_Message_Omsg_0()) ....... U1196 % c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())), c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(), v_evs4_0())), tc_Message_Omsg_0()) ....... R3 [R2:L0, U1196:L0] % Derivation of the empty clause: % c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())),c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) ....... U4358 % ~c_in_3(c_Message_Omsg_OKey_1(c_Public_OshrK_1(v_A_0())),c_Message_Oanalz_1(c_Event_Oknows_2(c_Message_Oagent_OSpy_0(),v_evs4_0())),tc_Message_Omsg_0()) ....... U202 % [] ....... R1 [U4358:L0, U202:L0] % --------------- End of Proof --------------- % PROOF FOUND! % --------------------------------------------- % | Statistics | % --------------------------------------------- % Profile 3: Performance Statistics: % ================================== % Total number of generated clauses: 52069 % resolvents: 52069 factors: 0 % Number of unit clauses generated: 16964 % % unit clauses generated to total clauses generated: 32.58 % Number of unit clauses constructed and retained at depth [x]: % ============================================================= % [0] = 5 [1] = 13 [2] = 184 [3] = 4157 % Total = 4359 % Number of generated clauses having [x] literals: % ------------------------------------------------ % [1] = 16964 [2] = 34854 [3] = 251 % Average size of a generated clause: 2.0 % Number of unit clauses per predicate list: % ========================================== % [0] c_in_3 (+)129 (-)4230 % ------------------ % Total: (+)129 (-)4230 % Total number of unit clauses retained: 4359 % Number of clauses skipped because of their length: 62159 % N base clauses skippped in resolve-with-all-base-clauses % because of the shortest resolvents table: 0 % Number of successful unifications: 52092 % Number of unification failures: 1530040 % Number of unit to unit unification failures: 541581 % N literal unification failure due to lookup root_id table: 32136891 % N base clause resolution failure due to lookup table: 26087 % N UC-BCL resolution dropped due to lookup table: 12637 % Max entries in substitution set: 18 % N unit clauses dropped because they exceeded max values: 11961 % N unit clauses dropped because too much nesting: 184 % N unit clauses not constrcuted because table was full: 0 % N unit clauses dropped because UCFA table was full: 0 % Max number of terms in a unit clause: 64 % Max term depth in a unit clause: 15 % Number of states in UCFA table: 83091 % Total number of terms of all unit clauses in table: 225727 % Max allowed number of states in UCFA: 528000 % Ratio n states used/total allowed states: 0.16 % Ratio n states used/total unit clauses terms: 0.37 % Number of symbols (columns) in UCFA: 67 % Profile 2: Number of calls to: % ============================== % PTUnify() = 1582132 % ConstructUnitClause() = 16315 % Profile 1: Time spent in: % ========================= % ConstructUnitClause() : 0.11 secs % -------------------------------------------------------- % | | % Inferences per sec: 13017 % | | % -------------------------------------------------------- % Elapsed time: 4 secs % CPU time: 4.24 secs % %------------------------------------------------------------------------------