TSTP Solution File: SWV014+1 by CSE_E---1.5

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : CSE_E---1.5
% Problem  : SWV014+1 : TPTP v8.1.2. Released v2.4.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : java -jar /export/starexec/sandbox/solver/bin/mcs_scs.jar %d %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  : 300s
% DateTime : Thu Aug 31 21:36:08 EDT 2023

% Result   : Theorem 0.21s 0.61s
% Output   : CNFRefutation 0.21s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   11
%            Number of leaves      :   40
% Syntax   : Number of formulae    :   84 (  18 unt;  26 typ;   0 def)
%            Number of atoms       :  143 (   0 equ)
%            Maximal formula atoms :    6 (   2 avg)
%            Number of connectives :  147 (  62   ~;  58   |;  18   &)
%                                         (   0 <=>;   9  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    8 (   4 avg)
%            Maximal term depth    :    6 (   2 avg)
%            Number of types       :    2 (   0 usr)
%            Number of type conns  :   30 (  20   >;  10   *;   0   +;   0  <<)
%            Number of predicates  :   12 (  11 usr;   1 prp; 0-1 aty)
%            Number of functors    :   15 (  15 usr;   6 con; 0-4 aty)
%            Number of variables   :   88 (   8 sgn;  47   !;   2   ?;   0   :)

% Comments : 
%------------------------------------------------------------------------------
tff(decl_22,type,
    at: $i ).

tff(decl_23,type,
    t: $i ).

tff(decl_24,type,
    key: ( $i * $i ) > $i ).

tff(decl_25,type,
    a_holds: $i > $o ).

tff(decl_26,type,
    a: $i ).

tff(decl_27,type,
    party_of_protocol: $i > $o ).

tff(decl_28,type,
    b: $i ).

tff(decl_29,type,
    an_a_nonce: $i ).

tff(decl_30,type,
    pair: ( $i * $i ) > $i ).

tff(decl_31,type,
    sent: ( $i * $i * $i ) > $i ).

tff(decl_32,type,
    message: $i > $o ).

tff(decl_33,type,
    a_stored: $i > $o ).

tff(decl_34,type,
    quadruple: ( $i * $i * $i * $i ) > $i ).

tff(decl_35,type,
    encrypt: ( $i * $i ) > $i ).

tff(decl_36,type,
    triple: ( $i * $i * $i ) > $i ).

tff(decl_37,type,
    bt: $i ).

tff(decl_38,type,
    b_holds: $i > $o ).

tff(decl_39,type,
    fresh_to_b: $i > $o ).

tff(decl_40,type,
    generate_b_nonce: $i > $i ).

tff(decl_41,type,
    generate_expiration_time: $i > $i ).

tff(decl_42,type,
    b_stored: $i > $o ).

tff(decl_43,type,
    t_holds: $i > $o ).

tff(decl_44,type,
    a_nonce: $i > $o ).

tff(decl_45,type,
    generate_key: $i > $i ).

tff(decl_46,type,
    intruder_message: $i > $o ).

tff(decl_47,type,
    intruder_holds: $i > $o ).

fof(b_creates_freash_nonces_in_time,axiom,
    ! [X1,X2] :
      ( ( message(sent(X1,b,pair(X1,X2)))
        & fresh_to_b(X2) )
     => ( message(sent(b,t,triple(b,generate_b_nonce(X2),encrypt(triple(X1,X2,generate_expiration_time(X2)),bt))))
        & b_stored(pair(X1,X2)) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',b_creates_freash_nonces_in_time) ).

fof(b_accepts_secure_session_key,axiom,
    ! [X2,X4,X5] :
      ( ( message(sent(X4,b,pair(encrypt(triple(X4,X2,generate_expiration_time(X5)),bt),encrypt(generate_b_nonce(X5),X2))))
        & b_stored(pair(X4,X5)) )
     => b_holds(key(X2,X4)) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',b_accepts_secure_session_key) ).

fof(a_sent_message_i_to_b,axiom,
    message(sent(a,b,pair(a,an_a_nonce))),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',a_sent_message_i_to_b) ).

fof(nonce_a_is_fresh_to_b,axiom,
    fresh_to_b(an_a_nonce),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',nonce_a_is_fresh_to_b) ).

fof(intruder_message_sent,axiom,
    ! [X1,X2,X3] :
      ( ( intruder_message(X1)
        & party_of_protocol(X2)
        & party_of_protocol(X3) )
     => message(sent(X2,X3,X1)) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',intruder_message_sent) ).

fof(intruder_key_encrypts,axiom,
    ! [X1,X2,X3] :
      ( ( intruder_message(X1)
        & intruder_holds(key(X2,X3))
        & party_of_protocol(X3) )
     => intruder_message(encrypt(X1,X2)) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',intruder_key_encrypts) ).

fof(intruder_holds_key,axiom,
    ! [X2,X3] :
      ( ( intruder_message(X2)
        & party_of_protocol(X3) )
     => intruder_holds(key(X2,X3)) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',intruder_holds_key) ).

fof(b_is_party_of_protocol,axiom,
    party_of_protocol(b),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',b_is_party_of_protocol) ).

fof(a_is_party_of_protocol,axiom,
    party_of_protocol(a),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',a_is_party_of_protocol) ).

fof(intruder_composes_pairs,axiom,
    ! [X1,X2] :
      ( ( intruder_message(X1)
        & intruder_message(X2) )
     => intruder_message(pair(X1,X2)) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',intruder_composes_pairs) ).

fof(intruder_can_record,axiom,
    ! [X1,X2,X3] :
      ( message(sent(X1,X2,X3))
     => intruder_message(X3) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',intruder_can_record) ).

fof(intruder_decomposes_triples,axiom,
    ! [X1,X2,X3] :
      ( intruder_message(triple(X1,X2,X3))
     => ( intruder_message(X1)
        & intruder_message(X2)
        & intruder_message(X3) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',intruder_decomposes_triples) ).

fof(intruder_decomposes_pairs,axiom,
    ! [X1,X2] :
      ( intruder_message(pair(X1,X2))
     => ( intruder_message(X1)
        & intruder_message(X2) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',intruder_decomposes_pairs) ).

fof(co1,conjecture,
    ? [X1] :
      ( intruder_holds(key(X1,b))
      & b_holds(key(X1,a)) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',co1) ).

fof(c_0_14,plain,
    ! [X14,X15] :
      ( ( message(sent(b,t,triple(b,generate_b_nonce(X15),encrypt(triple(X14,X15,generate_expiration_time(X15)),bt))))
        | ~ message(sent(X14,b,pair(X14,X15)))
        | ~ fresh_to_b(X15) )
      & ( b_stored(pair(X14,X15))
        | ~ message(sent(X14,b,pair(X14,X15)))
        | ~ fresh_to_b(X15) ) ),
    inference(distribute,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[b_creates_freash_nonces_in_time])])]) ).

fof(c_0_15,plain,
    ! [X16,X17,X18] :
      ( ~ message(sent(X17,b,pair(encrypt(triple(X17,X16,generate_expiration_time(X18)),bt),encrypt(generate_b_nonce(X18),X16))))
      | ~ b_stored(pair(X17,X18))
      | b_holds(key(X16,X17)) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[b_accepts_secure_session_key])]) ).

cnf(c_0_16,plain,
    ( b_stored(pair(X1,X2))
    | ~ message(sent(X1,b,pair(X1,X2)))
    | ~ fresh_to_b(X2) ),
    inference(split_conjunct,[status(thm)],[c_0_14]) ).

cnf(c_0_17,plain,
    message(sent(a,b,pair(a,an_a_nonce))),
    inference(split_conjunct,[status(thm)],[a_sent_message_i_to_b]) ).

cnf(c_0_18,plain,
    fresh_to_b(an_a_nonce),
    inference(split_conjunct,[status(thm)],[nonce_a_is_fresh_to_b]) ).

cnf(c_0_19,plain,
    ( b_holds(key(X2,X1))
    | ~ message(sent(X1,b,pair(encrypt(triple(X1,X2,generate_expiration_time(X3)),bt),encrypt(generate_b_nonce(X3),X2))))
    | ~ b_stored(pair(X1,X3)) ),
    inference(split_conjunct,[status(thm)],[c_0_15]) ).

cnf(c_0_20,plain,
    b_stored(pair(a,an_a_nonce)),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_16,c_0_17]),c_0_18])]) ).

fof(c_0_21,plain,
    ! [X50,X51,X52] :
      ( ~ intruder_message(X50)
      | ~ party_of_protocol(X51)
      | ~ party_of_protocol(X52)
      | message(sent(X51,X52,X50)) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[intruder_message_sent])]) ).

fof(c_0_22,plain,
    ! [X55,X56,X57] :
      ( ~ intruder_message(X55)
      | ~ intruder_holds(key(X56,X57))
      | ~ party_of_protocol(X57)
      | intruder_message(encrypt(X55,X56)) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[intruder_key_encrypts])]) ).

fof(c_0_23,plain,
    ! [X53,X54] :
      ( ~ intruder_message(X53)
      | ~ party_of_protocol(X54)
      | intruder_holds(key(X53,X54)) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[intruder_holds_key])]) ).

cnf(c_0_24,plain,
    ( b_holds(key(X1,a))
    | ~ message(sent(a,b,pair(encrypt(triple(a,X1,generate_expiration_time(an_a_nonce)),bt),encrypt(generate_b_nonce(an_a_nonce),X1)))) ),
    inference(spm,[status(thm)],[c_0_19,c_0_20]) ).

cnf(c_0_25,plain,
    ( message(sent(X2,X3,X1))
    | ~ intruder_message(X1)
    | ~ party_of_protocol(X2)
    | ~ party_of_protocol(X3) ),
    inference(split_conjunct,[status(thm)],[c_0_21]) ).

cnf(c_0_26,plain,
    party_of_protocol(b),
    inference(split_conjunct,[status(thm)],[b_is_party_of_protocol]) ).

cnf(c_0_27,plain,
    party_of_protocol(a),
    inference(split_conjunct,[status(thm)],[a_is_party_of_protocol]) ).

fof(c_0_28,plain,
    ! [X38,X39] :
      ( ~ intruder_message(X38)
      | ~ intruder_message(X39)
      | intruder_message(pair(X38,X39)) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[intruder_composes_pairs])]) ).

cnf(c_0_29,plain,
    ( intruder_message(encrypt(X1,X2))
    | ~ intruder_message(X1)
    | ~ intruder_holds(key(X2,X3))
    | ~ party_of_protocol(X3) ),
    inference(split_conjunct,[status(thm)],[c_0_22]) ).

cnf(c_0_30,plain,
    ( intruder_holds(key(X1,X2))
    | ~ intruder_message(X1)
    | ~ party_of_protocol(X2) ),
    inference(split_conjunct,[status(thm)],[c_0_23]) ).

fof(c_0_31,plain,
    ! [X26,X27,X28] :
      ( ~ message(sent(X26,X27,X28))
      | intruder_message(X28) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[intruder_can_record])]) ).

cnf(c_0_32,plain,
    ( message(sent(b,t,triple(b,generate_b_nonce(X1),encrypt(triple(X2,X1,generate_expiration_time(X1)),bt))))
    | ~ message(sent(X2,b,pair(X2,X1)))
    | ~ fresh_to_b(X1) ),
    inference(split_conjunct,[status(thm)],[c_0_14]) ).

cnf(c_0_33,plain,
    ( b_holds(key(X1,a))
    | ~ intruder_message(pair(encrypt(triple(a,X1,generate_expiration_time(an_a_nonce)),bt),encrypt(generate_b_nonce(an_a_nonce),X1))) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_24,c_0_25]),c_0_26]),c_0_27])]) ).

cnf(c_0_34,plain,
    ( intruder_message(pair(X1,X2))
    | ~ intruder_message(X1)
    | ~ intruder_message(X2) ),
    inference(split_conjunct,[status(thm)],[c_0_28]) ).

cnf(c_0_35,plain,
    ( intruder_message(encrypt(X1,X2))
    | ~ intruder_message(X1)
    | ~ intruder_message(X2)
    | ~ party_of_protocol(X3) ),
    inference(spm,[status(thm)],[c_0_29,c_0_30]) ).

fof(c_0_36,plain,
    ! [X31,X32,X33] :
      ( ( intruder_message(X31)
        | ~ intruder_message(triple(X31,X32,X33)) )
      & ( intruder_message(X32)
        | ~ intruder_message(triple(X31,X32,X33)) )
      & ( intruder_message(X33)
        | ~ intruder_message(triple(X31,X32,X33)) ) ),
    inference(distribute,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[intruder_decomposes_triples])])]) ).

cnf(c_0_37,plain,
    ( intruder_message(X3)
    | ~ message(sent(X1,X2,X3)) ),
    inference(split_conjunct,[status(thm)],[c_0_31]) ).

cnf(c_0_38,plain,
    message(sent(b,t,triple(b,generate_b_nonce(an_a_nonce),encrypt(triple(a,an_a_nonce,generate_expiration_time(an_a_nonce)),bt)))),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_32,c_0_17]),c_0_18])]) ).

cnf(c_0_39,plain,
    ( b_holds(key(X1,a))
    | ~ intruder_message(encrypt(triple(a,X1,generate_expiration_time(an_a_nonce)),bt))
    | ~ intruder_message(encrypt(generate_b_nonce(an_a_nonce),X1)) ),
    inference(spm,[status(thm)],[c_0_33,c_0_34]) ).

cnf(c_0_40,plain,
    ( intruder_message(encrypt(X1,X2))
    | ~ intruder_message(X1)
    | ~ intruder_message(X2) ),
    inference(spm,[status(thm)],[c_0_35,c_0_26]) ).

cnf(c_0_41,plain,
    ( intruder_message(X1)
    | ~ intruder_message(triple(X2,X1,X3)) ),
    inference(split_conjunct,[status(thm)],[c_0_36]) ).

cnf(c_0_42,plain,
    intruder_message(triple(b,generate_b_nonce(an_a_nonce),encrypt(triple(a,an_a_nonce,generate_expiration_time(an_a_nonce)),bt))),
    inference(spm,[status(thm)],[c_0_37,c_0_38]) ).

fof(c_0_43,plain,
    ! [X29,X30] :
      ( ( intruder_message(X29)
        | ~ intruder_message(pair(X29,X30)) )
      & ( intruder_message(X30)
        | ~ intruder_message(pair(X29,X30)) ) ),
    inference(distribute,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[intruder_decomposes_pairs])])]) ).

fof(c_0_44,negated_conjecture,
    ~ ? [X1] :
        ( intruder_holds(key(X1,b))
        & b_holds(key(X1,a)) ),
    inference(assume_negation,[status(cth)],[co1]) ).

cnf(c_0_45,plain,
    ( b_holds(key(X1,a))
    | ~ intruder_message(encrypt(triple(a,X1,generate_expiration_time(an_a_nonce)),bt))
    | ~ intruder_message(generate_b_nonce(an_a_nonce))
    | ~ intruder_message(X1) ),
    inference(spm,[status(thm)],[c_0_39,c_0_40]) ).

cnf(c_0_46,plain,
    intruder_message(generate_b_nonce(an_a_nonce)),
    inference(spm,[status(thm)],[c_0_41,c_0_42]) ).

cnf(c_0_47,plain,
    ( intruder_message(X1)
    | ~ intruder_message(triple(X2,X3,X1)) ),
    inference(split_conjunct,[status(thm)],[c_0_36]) ).

cnf(c_0_48,plain,
    ( intruder_message(X1)
    | ~ intruder_message(pair(X2,X1)) ),
    inference(split_conjunct,[status(thm)],[c_0_43]) ).

cnf(c_0_49,plain,
    intruder_message(pair(a,an_a_nonce)),
    inference(spm,[status(thm)],[c_0_37,c_0_17]) ).

fof(c_0_50,negated_conjecture,
    ! [X60] :
      ( ~ intruder_holds(key(X60,b))
      | ~ b_holds(key(X60,a)) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_44])]) ).

cnf(c_0_51,plain,
    ( b_holds(key(X1,a))
    | ~ intruder_message(encrypt(triple(a,X1,generate_expiration_time(an_a_nonce)),bt))
    | ~ intruder_message(X1) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_45,c_0_46])]) ).

cnf(c_0_52,plain,
    intruder_message(encrypt(triple(a,an_a_nonce,generate_expiration_time(an_a_nonce)),bt)),
    inference(spm,[status(thm)],[c_0_47,c_0_42]) ).

cnf(c_0_53,plain,
    intruder_message(an_a_nonce),
    inference(spm,[status(thm)],[c_0_48,c_0_49]) ).

cnf(c_0_54,negated_conjecture,
    ( ~ intruder_holds(key(X1,b))
    | ~ b_holds(key(X1,a)) ),
    inference(split_conjunct,[status(thm)],[c_0_50]) ).

cnf(c_0_55,plain,
    b_holds(key(an_a_nonce,a)),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_51,c_0_52]),c_0_53])]) ).

cnf(c_0_56,negated_conjecture,
    ~ intruder_holds(key(an_a_nonce,b)),
    inference(spm,[status(thm)],[c_0_54,c_0_55]) ).

cnf(c_0_57,negated_conjecture,
    $false,
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_56,c_0_30]),c_0_53]),c_0_26])]),
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.13  % Problem    : SWV014+1 : TPTP v8.1.2. Released v2.4.0.
% 0.00/0.13  % Command    : java -jar /export/starexec/sandbox/solver/bin/mcs_scs.jar %d %s
% 0.14/0.35  % Computer : n026.cluster.edu
% 0.14/0.35  % Model    : x86_64 x86_64
% 0.14/0.35  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.35  % Memory   : 8042.1875MB
% 0.14/0.35  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.14/0.35  % CPULimit   : 300
% 0.14/0.35  % WCLimit    : 300
% 0.14/0.35  % DateTime   : Tue Aug 29 06:48:35 EDT 2023
% 0.14/0.35  % CPUTime  : 
% 0.21/0.59  start to proof: theBenchmark
% 0.21/0.61  % Version  : CSE_E---1.5
% 0.21/0.61  % Problem  : theBenchmark.p
% 0.21/0.61  % Proof found
% 0.21/0.61  % SZS status Theorem for theBenchmark.p
% 0.21/0.61  % SZS output start Proof
% See solution above
% 0.21/0.61  % Total time : 0.011000 s
% 0.21/0.61  % SZS output end Proof
% 0.21/0.61  % Total time : 0.014000 s
%------------------------------------------------------------------------------