TPTP Problem File: SWW951+1.p

View Solutions - Solve Problem

%--------------------------------------------------------------------------
% File     : SWW951+1 : TPTP v8.2.0. Released v7.4.0.
% Domain   : Software Verification
% Problem  : Attack on OTYT06 protocol
% Version  : [LT19] axioms : Especial.
% English  : Attack demonstrates violation of aliveness property of tag
%          : guaranteed to reader.

% 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    : OTYT06-reader-auth.p [LT20]

% Status   : Theorem
% Rating   : 0.17 v7.5.0, 0.19 v7.4.0
% Syntax   : Number of formulae    :   66 (  52 unt;   0 def)
%            Number of atoms       :   84 (  40 equ)
%            Maximal formula atoms :    3 (   1 avg)
%            Number of connectives :   54 (  36   ~;   0   |;   4   &)
%                                         (   0 <=>;  14  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    5 (   2 avg)
%            Maximal term depth    :    4 (   1 avg)
%            Number of predicates  :    4 (   3 usr;   0 prp; 1-2 aty)
%            Number of functors    :   18 (  18 usr;  11 con; 0-2 aty)
%            Number of variables   :   27 (  27   !;   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_c ).

fof(ax6,axiom,
    constr_CONST_0x30 != name_k ).

fof(ax7,axiom,
    constr_CONST_0x30 != name_objective ).

fof(ax8,axiom,
    constr_CONST_1 != constr_CONST_2 ).

fof(ax9,axiom,
    constr_CONST_1 != constr_CONST_3 ).

fof(ax10,axiom,
    constr_CONST_1 != constr_CONST_4 ).

fof(ax11,axiom,
    constr_CONST_1 != constr_ZERO ).

fof(ax12,axiom,
    constr_CONST_1 != name_c ).

fof(ax13,axiom,
    constr_CONST_1 != name_k ).

fof(ax14,axiom,
    constr_CONST_1 != name_objective ).

fof(ax15,axiom,
    constr_CONST_2 != constr_CONST_3 ).

fof(ax16,axiom,
    constr_CONST_2 != constr_CONST_4 ).

fof(ax17,axiom,
    constr_CONST_2 != constr_ZERO ).

fof(ax18,axiom,
    constr_CONST_2 != name_c ).

fof(ax19,axiom,
    constr_CONST_2 != name_k ).

fof(ax20,axiom,
    constr_CONST_2 != name_objective ).

fof(ax21,axiom,
    constr_CONST_3 != constr_CONST_4 ).

fof(ax22,axiom,
    constr_CONST_3 != constr_ZERO ).

fof(ax23,axiom,
    constr_CONST_3 != name_c ).

fof(ax24,axiom,
    constr_CONST_3 != name_k ).

fof(ax25,axiom,
    constr_CONST_3 != name_objective ).

fof(ax26,axiom,
    constr_CONST_4 != constr_ZERO ).

fof(ax27,axiom,
    constr_CONST_4 != name_c ).

fof(ax28,axiom,
    constr_CONST_4 != name_k ).

fof(ax29,axiom,
    constr_CONST_4 != name_objective ).

fof(ax30,axiom,
    constr_ZERO != name_c ).

fof(ax31,axiom,
    constr_ZERO != name_k ).

fof(ax32,axiom,
    constr_ZERO != name_objective ).

fof(ax33,axiom,
    name_c != name_k ).

fof(ax34,axiom,
    name_c != name_objective ).

fof(ax35,axiom,
    name_k != name_objective ).

fof(ax36,axiom,
    ! [VAR_X_10X30] : constr_xor(VAR_X_10X30,VAR_X_10X30) = constr_ZERO ).

fof(ax37,axiom,
    ! [VAR_X_9] : constr_xor(VAR_X_9,constr_ZERO) = VAR_X_9 ).

fof(ax38,axiom,
    ! [VAR_X_7,VAR_Y_8] : constr_xor(VAR_X_7,VAR_Y_8) = constr_xor(VAR_Y_8,VAR_X_7) ).

fof(ax39,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(ax40,axiom,
    ! [VAR_V_26,VAR_V_27] :
      ( ( pred_attacker(VAR_V_26)
        & pred_attacker(VAR_V_27) )
     => pred_attacker(constr_xor(VAR_V_26,VAR_V_27)) ) ).

fof(ax41,axiom,
    pred_attacker(tuple_true) ).

fof(ax42,axiom,
    ! [VAR_V_30X30] :
      ( pred_attacker(VAR_V_30X30)
     => pred_attacker(constr_h(VAR_V_30X30)) ) ).

fof(ax43,axiom,
    pred_attacker(tuple_false) ).

fof(ax44,axiom,
    pred_attacker(constr_ZERO) ).

fof(ax45,axiom,
    ! [VAR_V_32] :
      ( pred_attacker(VAR_V_32)
     => pred_attacker(tuple_T_out_4(VAR_V_32)) ) ).

fof(ax46,axiom,
    ! [VAR_V_35] :
      ( pred_attacker(tuple_T_out_4(VAR_V_35))
     => pred_attacker(VAR_V_35) ) ).

fof(ax47,axiom,
    ! [VAR_V_38] :
      ( pred_attacker(VAR_V_38)
     => pred_attacker(tuple_T_out_2(VAR_V_38)) ) ).

fof(ax48,axiom,
    ! [VAR_V_41] :
      ( pred_attacker(tuple_T_out_2(VAR_V_41))
     => pred_attacker(VAR_V_41) ) ).

fof(ax49,axiom,
    ! [VAR_V_44] :
      ( pred_attacker(VAR_V_44)
     => pred_attacker(tuple_T_in_3(VAR_V_44)) ) ).

fof(ax50,axiom,
    ! [VAR_V_47] :
      ( pred_attacker(tuple_T_in_3(VAR_V_47))
     => pred_attacker(VAR_V_47) ) ).

fof(ax51,axiom,
    ! [VAR_V_50X30] :
      ( pred_attacker(VAR_V_50X30)
     => pred_attacker(tuple_T_in_1(VAR_V_50X30)) ) ).

fof(ax52,axiom,
    ! [VAR_V_53] :
      ( pred_attacker(tuple_T_in_1(VAR_V_53))
     => pred_attacker(VAR_V_53) ) ).

fof(ax53,axiom,
    pred_attacker(constr_CONST_4) ).

fof(ax54,axiom,
    pred_attacker(constr_CONST_3) ).

fof(ax55,axiom,
    pred_attacker(constr_CONST_2) ).

fof(ax56,axiom,
    pred_attacker(constr_CONST_1) ).

fof(ax57,axiom,
    pred_attacker(constr_CONST_0x30) ).

fof(ax58,axiom,
    ! [VAR_V_59,VAR_V_60X30] :
      ( ( pred_mess(VAR_V_60X30,VAR_V_59)
        & pred_attacker(VAR_V_60X30) )
     => pred_attacker(VAR_V_59) ) ).

fof(ax59,axiom,
    ! [VAR_V_61,VAR_V_62] :
      ( ( pred_attacker(VAR_V_62)
        & pred_attacker(VAR_V_61) )
     => pred_mess(VAR_V_62,VAR_V_61) ) ).

fof(ax60,axiom,
    pred_attacker(name_c) ).

fof(ax61,axiom,
    ! [VAR_V_64] : pred_equal(VAR_V_64,VAR_V_64) ).

fof(ax62,axiom,
    ! [VAR_V_65] : pred_attacker(name_new0x2Dname(VAR_V_65)) ).

fof(ax63,axiom,
    ! [VAR_R1_85] :
      ( pred_attacker(tuple_T_in_1(VAR_R1_85))
     => pred_attacker(tuple_T_out_2(constr_h(constr_xor(name_k,VAR_R1_85)))) ) ).

fof(ax64,axiom,
    ! [VAR_K_XOR_K1_10X305,VAR_R1_10X306] :
      ( ( pred_attacker(tuple_T_in_3(VAR_K_XOR_K1_10X305))
        & pred_attacker(tuple_T_in_1(VAR_R1_10X306)) )
     => pred_attacker(tuple_T_out_4(name_objective)) ) ).

fof(co0,conjecture,
    pred_attacker(name_objective) ).

%--------------------------------------------------------------------------