TPTP Problem File: SWW957+1.p
View Solutions
- Solve Problem
%--------------------------------------------------------------------------
% File : SWW957+1 : TPTP v9.0.0. Released v7.4.0.
% Domain : Software Verification
% Problem : Attack on WEP protocol
% Version : [LT19] axioms : Especial.
% English : Attack demonstrates violation of secrecy of messages.
% Refs : [BO97] Bull & Otway (1997), The Authentication Protocol
% : [RS98] Ryan & Schneider (1998), An Attack on a Recursive Auth
% : [LT19] Li & Tiu (2019), Combining ProVerif and Automated Theo
% : [Li20] Li (2020), Email to Geoff Sutcliffe
% Source : [Li20]
% Names : WEP-secrecy.p [LT20]
% Status : Theorem
% Rating : 0.58 v9.0.0, 0.61 v8.1.0, 0.58 v7.5.0, 0.69 v7.4.0
% Syntax : Number of formulae : 84 ( 65 unt; 0 def)
% Number of atoms : 111 ( 52 equ)
% Maximal formula atoms : 3 ( 1 avg)
% Number of connectives : 72 ( 45 ~; 0 |; 8 &)
% ( 0 <=>; 19 =>; 0 <=; 0 <~>)
% Maximal formula depth : 5 ( 2 avg)
% Maximal term depth : 5 ( 1 avg)
% Number of predicates : 4 ( 3 usr; 0 prp; 1-2 aty)
% Number of functors : 22 ( 22 usr; 12 con; 0-2 aty)
% Number of variables : 50 ( 50 !; 0 ?)
% SPC : FOF_THM_RFO_SEQ
% Comments : Generated by a modified version of ProVerif used in the
% ProVerif-ATP project [LT19].
%--------------------------------------------------------------------------
fof(ax0,axiom,
constr_CONST_0x30 != constr_CONST_1 ).
fof(ax1,axiom,
constr_CONST_0x30 != constr_CONST_2 ).
fof(ax2,axiom,
constr_CONST_0x30 != constr_CONST_3 ).
fof(ax3,axiom,
constr_CONST_0x30 != constr_CONST_4 ).
fof(ax4,axiom,
constr_CONST_0x30 != constr_ZERO ).
fof(ax5,axiom,
constr_CONST_0x30 != name_Kab ).
fof(ax6,axiom,
constr_CONST_0x30 != name_c ).
fof(ax7,axiom,
constr_CONST_0x30 != name_objective ).
fof(ax8,axiom,
constr_CONST_0x30 != name_v ).
fof(ax9,axiom,
constr_CONST_1 != constr_CONST_2 ).
fof(ax10,axiom,
constr_CONST_1 != constr_CONST_3 ).
fof(ax11,axiom,
constr_CONST_1 != constr_CONST_4 ).
fof(ax12,axiom,
constr_CONST_1 != constr_ZERO ).
fof(ax13,axiom,
constr_CONST_1 != name_Kab ).
fof(ax14,axiom,
constr_CONST_1 != name_c ).
fof(ax15,axiom,
constr_CONST_1 != name_objective ).
fof(ax16,axiom,
constr_CONST_1 != name_v ).
fof(ax17,axiom,
constr_CONST_2 != constr_CONST_3 ).
fof(ax18,axiom,
constr_CONST_2 != constr_CONST_4 ).
fof(ax19,axiom,
constr_CONST_2 != constr_ZERO ).
fof(ax20,axiom,
constr_CONST_2 != name_Kab ).
fof(ax21,axiom,
constr_CONST_2 != name_c ).
fof(ax22,axiom,
constr_CONST_2 != name_objective ).
fof(ax23,axiom,
constr_CONST_2 != name_v ).
fof(ax24,axiom,
constr_CONST_3 != constr_CONST_4 ).
fof(ax25,axiom,
constr_CONST_3 != constr_ZERO ).
fof(ax26,axiom,
constr_CONST_3 != name_Kab ).
fof(ax27,axiom,
constr_CONST_3 != name_c ).
fof(ax28,axiom,
constr_CONST_3 != name_objective ).
fof(ax29,axiom,
constr_CONST_3 != name_v ).
fof(ax30,axiom,
constr_CONST_4 != constr_ZERO ).
fof(ax31,axiom,
constr_CONST_4 != name_Kab ).
fof(ax32,axiom,
constr_CONST_4 != name_c ).
fof(ax33,axiom,
constr_CONST_4 != name_objective ).
fof(ax34,axiom,
constr_CONST_4 != name_v ).
fof(ax35,axiom,
constr_ZERO != name_Kab ).
fof(ax36,axiom,
constr_ZERO != name_c ).
fof(ax37,axiom,
constr_ZERO != name_objective ).
fof(ax38,axiom,
constr_ZERO != name_v ).
fof(ax39,axiom,
name_Kab != name_c ).
fof(ax40,axiom,
name_Kab != name_objective ).
fof(ax41,axiom,
name_Kab != name_v ).
fof(ax42,axiom,
name_c != name_objective ).
fof(ax43,axiom,
name_c != name_v ).
fof(ax44,axiom,
name_objective != name_v ).
fof(ax45,axiom,
! [VAR_X_14,VAR_Y_15] : constr_split(constr_concat(VAR_X_14,VAR_Y_15)) = tuple_2(VAR_X_14,VAR_Y_15) ).
fof(ax46,axiom,
! [VAR_X1_0X30,VAR_X2_0X30,VAR_Y1_0X30,VAR_Y2_0X30] : constr_xor(constr_concat(VAR_X1_0X30,VAR_Y1_0X30),constr_concat(VAR_X2_0X30,VAR_Y2_0X30)) = constr_concat(constr_xor(VAR_X1_0X30,VAR_X2_0X30),constr_xor(VAR_Y1_0X30,VAR_Y2_0X30)) ).
fof(ax47,axiom,
! [VAR_X_12,VAR_Y_13] : constr_C(constr_xor(VAR_X_12,VAR_Y_13)) = constr_xor(constr_C(VAR_X_12),constr_C(VAR_Y_13)) ).
fof(ax48,axiom,
! [VAR_X_11] : constr_xor(VAR_X_11,VAR_X_11) = constr_ZERO ).
fof(ax49,axiom,
! [VAR_X_10X30] : constr_xor(VAR_X_10X30,constr_ZERO) = VAR_X_10X30 ).
fof(ax50,axiom,
! [VAR_X_8,VAR_Y_9] : constr_xor(VAR_X_8,VAR_Y_9) = constr_xor(VAR_Y_9,VAR_X_8) ).
fof(ax51,axiom,
! [VAR_X_0X30,VAR_Y_0X30,VAR_Z_0X30] : constr_xor(VAR_X_0X30,constr_xor(VAR_Y_0X30,VAR_Z_0X30)) = constr_xor(constr_xor(VAR_X_0X30,VAR_Y_0X30),VAR_Z_0X30) ).
fof(ax52,axiom,
! [VAR_V_31,VAR_V_32] :
( ( pred_attacker(VAR_V_31)
& pred_attacker(VAR_V_32) )
=> pred_attacker(constr_xor(VAR_V_31,VAR_V_32)) ) ).
fof(ax53,axiom,
pred_attacker(tuple_true) ).
fof(ax54,axiom,
! [VAR_V_34] :
( pred_attacker(VAR_V_34)
=> pred_attacker(constr_split(VAR_V_34)) ) ).
fof(ax55,axiom,
pred_attacker(tuple_false) ).
fof(ax56,axiom,
! [VAR_V_38,VAR_V_39] :
( ( pred_attacker(VAR_V_38)
& pred_attacker(VAR_V_39) )
=> pred_attacker(tuple_enc_oracle_out_2(VAR_V_38,VAR_V_39)) ) ).
fof(ax57,axiom,
! [VAR_V_46,VAR_V_47] :
( pred_attacker(tuple_enc_oracle_out_2(VAR_V_46,VAR_V_47))
=> pred_attacker(VAR_V_46) ) ).
fof(ax58,axiom,
! [VAR_V_49,VAR_V_50X30] :
( pred_attacker(tuple_enc_oracle_out_2(VAR_V_49,VAR_V_50X30))
=> pred_attacker(VAR_V_50X30) ) ).
fof(ax59,axiom,
! [VAR_V_53] :
( pred_attacker(VAR_V_53)
=> pred_attacker(tuple_enc_oracle_in_1(VAR_V_53)) ) ).
fof(ax60,axiom,
! [VAR_V_56] :
( pred_attacker(tuple_enc_oracle_in_1(VAR_V_56))
=> pred_attacker(VAR_V_56) ) ).
fof(ax61,axiom,
! [VAR_V_60X30,VAR_V_61] :
( ( pred_attacker(VAR_V_60X30)
& pred_attacker(VAR_V_61) )
=> pred_attacker(constr_concat(VAR_V_60X30,VAR_V_61)) ) ).
fof(ax62,axiom,
pred_attacker(constr_ZERO) ).
fof(ax63,axiom,
! [VAR_V_64,VAR_V_65] :
( ( pred_attacker(VAR_V_64)
& pred_attacker(VAR_V_65) )
=> pred_attacker(constr_RC4(VAR_V_64,VAR_V_65)) ) ).
fof(ax64,axiom,
pred_attacker(constr_CONST_4) ).
fof(ax65,axiom,
pred_attacker(constr_CONST_3) ).
fof(ax66,axiom,
pred_attacker(constr_CONST_2) ).
fof(ax67,axiom,
pred_attacker(constr_CONST_1) ).
fof(ax68,axiom,
pred_attacker(constr_CONST_0x30) ).
fof(ax69,axiom,
! [VAR_V_67] :
( pred_attacker(VAR_V_67)
=> pred_attacker(constr_C(VAR_V_67)) ) ).
fof(ax70,axiom,
! [VAR_V_70X30,VAR_V_71] :
( ( pred_attacker(VAR_V_70X30)
& pred_attacker(VAR_V_71) )
=> pred_attacker(tuple_B_out_1(VAR_V_70X30,VAR_V_71)) ) ).
fof(ax71,axiom,
! [VAR_V_78,VAR_V_79] :
( pred_attacker(tuple_B_out_1(VAR_V_78,VAR_V_79))
=> pred_attacker(VAR_V_78) ) ).
fof(ax72,axiom,
! [VAR_V_81,VAR_V_82] :
( pred_attacker(tuple_B_out_1(VAR_V_81,VAR_V_82))
=> pred_attacker(VAR_V_82) ) ).
fof(ax73,axiom,
! [VAR_V_90X30,VAR_V_91] :
( ( pred_attacker(VAR_V_90X30)
& pred_attacker(VAR_V_91) )
=> pred_attacker(tuple_2(VAR_V_90X30,VAR_V_91)) ) ).
fof(ax74,axiom,
! [VAR_V_98,VAR_V_99] :
( pred_attacker(tuple_2(VAR_V_98,VAR_V_99))
=> pred_attacker(VAR_V_98) ) ).
fof(ax75,axiom,
! [VAR_V_10X301,VAR_V_10X302] :
( pred_attacker(tuple_2(VAR_V_10X301,VAR_V_10X302))
=> pred_attacker(VAR_V_10X302) ) ).
fof(ax76,axiom,
! [VAR_V_10X304,VAR_V_10X305] :
( ( pred_mess(VAR_V_10X305,VAR_V_10X304)
& pred_attacker(VAR_V_10X305) )
=> pred_attacker(VAR_V_10X304) ) ).
fof(ax77,axiom,
! [VAR_V_10X306,VAR_V_10X307] :
( ( pred_attacker(VAR_V_10X307)
& pred_attacker(VAR_V_10X306) )
=> pred_mess(VAR_V_10X307,VAR_V_10X306) ) ).
fof(ax78,axiom,
pred_attacker(name_c) ).
fof(ax79,axiom,
! [VAR_V_10X309] : pred_equal(VAR_V_10X309,VAR_V_10X309) ).
fof(ax80,axiom,
! [VAR_V_110X30] : pred_attacker(name_new0x2Dname(VAR_V_110X30)) ).
fof(ax81,axiom,
! [VAR_M_150X30] :
( pred_attacker(tuple_enc_oracle_in_1(VAR_M_150X30))
=> pred_attacker(tuple_enc_oracle_out_2(name_v,constr_xor(constr_concat(VAR_M_150X30,constr_C(VAR_M_150X30)),constr_RC4(name_v,name_Kab)))) ) ).
fof(ax82,axiom,
pred_attacker(tuple_B_out_1(name_v,constr_xor(constr_concat(name_objective,constr_C(name_objective)),constr_RC4(name_v,name_Kab)))) ).
fof(co0,conjecture,
pred_attacker(name_objective) ).
%--------------------------------------------------------------------------