
Inductive auto___aux_55 : term -> Prop :=
    trans___aux_55_1 : forall _x:term, (auto___aux_55 _x)
with auto___aux_30 : term -> Prop :=
    trans___aux_30_cons_1 : forall _x1 _x2 : term, (auto___aux_31 _x1) -> (auto___aux_27 _x2) -> (auto___aux_30 (cons _x1 _x2))
with auto___aux_26 : term -> Prop :=
    trans___aux_26_crypt_1 : forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto___aux_26 (crypt _x1 _x2))
with auto___aux_24 : term -> Prop :=
    trans___aux_24_sym_1 : (auto___aux_24 sym)
with auto___aux_37 : term -> Prop :=
    trans___aux_37_cons_1 : forall _x1 _x2 : term, (auto___aux_20 _x1) -> (auto___aux_38 _x2) -> (auto___aux_37 (cons _x1 _x2))
with auto___aux_35 : term -> Prop :=
    trans___aux_35_cons_1 : forall _x1 _x2 : term, (auto___aux_31 _x1) -> (auto___aux_33 _x2) -> (auto___aux_35 (cons _x1 _x2))
with auto___aux_21 : term -> Prop :=
    trans___aux_21_cons_1 : forall _x1 _x2 : term, (auto___aux_22 _x1) -> (auto___aux_23 _x2) -> (auto___aux_21 (cons _x1 _x2))
with auto___aux_38 : term -> Prop :=
    trans___aux_38_cons_1 : forall _x1 _x2 : term, (auto___aux_39 _x1) -> (auto___aux_40 _x2) -> (auto___aux_38 (cons _x1 _x2))
with auto___aux_42 : term -> Prop :=
    trans___aux_42_crypt_1 : forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto___aux_42 (crypt _x1 _x2))
with auto___aux_29 : term -> Prop :=
    trans___aux_29_key_1 : forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_32 _x2) -> (auto___aux_29 (key _x1 _x2))
with auto___aux_45 : term -> Prop :=
    trans___aux_45___aux__vars9_1 : forall _x1 _x2 _x3 _x4 _x5:term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows _x3) -> (auto___aux_26 _x4) -> (auto___aux_24 _x5) -> (auto___aux_45 (__aux__vars9 _x1 _x2 _x3 _x4 _x5))
with auto___aux_39 : term -> Prop :=
    trans___aux_39_key_1 : forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_41 _x2) -> (auto___aux_39 (key _x1 _x2))
with auto___aux_20 : term -> Prop :=
    trans___aux_20_nil_1 : (auto___aux_20 nil)
  | trans___aux_20_s_1 : forall _x1 : term, (auto_knows _x1) -> (auto___aux_20 (s _x1))
  | trans___aux_20_intruder_1 : (auto___aux_20 intruder)
  | trans___aux_20_cons_1 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_20 (cons _x1 _x2))
  | trans___aux_20_key_1 : forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto___aux_20 (key _x1 _x2))
  | trans___aux_20_key_2 : forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto___aux_20 (key _x1 _x2))
  | trans___aux_20_key_3 : forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto___aux_20 (key _x1 _x2))
  | trans___aux_20_bob_1 : (auto___aux_20 bob)
  | trans___aux_20_crypt_1 : forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_17 _x2) -> (auto___aux_20 (crypt _x1 _x2))
  | trans___aux_20_crypt_2 : forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto___aux_20 (crypt _x1 _x2))
  | trans___aux_20_crypt_3 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_20 (crypt _x1 _x2))
  | trans___aux_20_crypt_4 : forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto___aux_20 (crypt _x1 _x2))
  | trans___aux_20_crypt_5 : forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_50 _x2) -> (auto___aux_20 (crypt _x1 _x2))
  | trans___aux_20_crypt_6 : forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_53 _x2) -> (auto___aux_20 (crypt _x1 _x2))
  | trans___aux_20_crypt_7 : forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_17 _x2) -> (auto___aux_20 (crypt _x1 _x2))
  | trans___aux_20_server_1 : (auto___aux_20 server)
  | trans___aux_20_nonceb_1 : forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_20 (nonceb _x1 _x2 _x3))
  | trans___aux_20_nonceb_2 : forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_20 (nonceb _x1 _x2 _x3))
  | trans___aux_20_alice_1 : (auto___aux_20 alice)
  | trans___aux_20_noncea_1 : forall _x1 : term, (auto___aux_13 _x1) -> (auto___aux_20 (noncea _x1))
with auto___aux_28 : term -> Prop :=
    trans___aux_28_cons_1 : forall _x1 _x2 : term, (auto___aux_22 _x1) -> (auto___aux_30 _x2) -> (auto___aux_28 (cons _x1 _x2))
with auto___aux_27 : term -> Prop :=
    trans___aux_27_nil_1 : (auto___aux_27 nil)
with auto___aux_31 : term -> Prop :=
    trans___aux_31_nil_1 : (auto___aux_31 nil)
  | trans___aux_31_s_1 : forall _x1 : term, (auto_knows _x1) -> (auto___aux_31 (s _x1))
  | trans___aux_31_intruder_1 : (auto___aux_31 intruder)
  | trans___aux_31_cons_1 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_31 (cons _x1 _x2))
  | trans___aux_31_key_1 : forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto___aux_31 (key _x1 _x2))
  | trans___aux_31_key_2 : forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto___aux_31 (key _x1 _x2))
  | trans___aux_31_key_3 : forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto___aux_31 (key _x1 _x2))
  | trans___aux_31_bob_1 : (auto___aux_31 bob)
  | trans___aux_31_crypt_1 : forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_17 _x2) -> (auto___aux_31 (crypt _x1 _x2))
  | trans___aux_31_crypt_2 : forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto___aux_31 (crypt _x1 _x2))
  | trans___aux_31_crypt_3 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_31 (crypt _x1 _x2))
  | trans___aux_31_crypt_4 : forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto___aux_31 (crypt _x1 _x2))
  | trans___aux_31_crypt_5 : forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_50 _x2) -> (auto___aux_31 (crypt _x1 _x2))
  | trans___aux_31_crypt_6 : forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_53 _x2) -> (auto___aux_31 (crypt _x1 _x2))
  | trans___aux_31_crypt_7 : forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_17 _x2) -> (auto___aux_31 (crypt _x1 _x2))
  | trans___aux_31_server_1 : (auto___aux_31 server)
  | trans___aux_31_nonceb_1 : forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_31 (nonceb _x1 _x2 _x3))
  | trans___aux_31_nonceb_2 : forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_31 (nonceb _x1 _x2 _x3))
  | trans___aux_31_alice_1 : (auto___aux_31 alice)
  | trans___aux_31_noncea_1 : forall _x1 : term, (auto___aux_13 _x1) -> (auto___aux_31 (noncea _x1))
with auto___aux_25 : term -> Prop :=
    trans___aux_25_current_session_1 : forall _x1 _x2 _x3 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows _x3) -> (auto___aux_25 (current_session _x1 _x2 _x3))
with auto___aux_41 : term -> Prop :=
    trans___aux_41_old_session_1 : forall _x1 _x2 _x3 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows _x3) -> (auto___aux_41 (old_session _x1 _x2 _x3))
with auto___aux_22 : term -> Prop :=
    trans___aux_22_key_1 : forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_25 _x2) -> (auto___aux_22 (key _x1 _x2))
with auto___aux_19 : term -> Prop :=
    trans___aux_19_cons_1 : forall _x1 _x2 : term, (auto___aux_20 _x1) -> (auto___aux_21 _x2) -> (auto___aux_19 (cons _x1 _x2))
with auto___aux_23 : term -> Prop :=
    trans___aux_23_cons_1 : forall _x1 _x2 : term, (auto___aux_26 _x1) -> (auto___aux_27 _x2) -> (auto___aux_23 (cons _x1 _x2))
with auto___aux_32 : term -> Prop :=
    trans___aux_32_cons_1 : forall _x1 _x2 : term, (auto___aux_20 _x1) -> (auto___aux_33 _x2) -> (auto___aux_32 (cons _x1 _x2))
with auto___aux_47 : term -> Prop :=
    trans___aux_47_current_session_1 : forall _x1 _x2 _x3 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows _x3) -> (auto___aux_47 (current_session _x1 _x2 _x3))
with auto___aux_40 : term -> Prop :=
    trans___aux_40_cons_1 : forall _x1 _x2 : term, (auto___aux_42 _x1) -> (auto___aux_27 _x2) -> (auto___aux_40 (cons _x1 _x2))
with auto___aux_33 : term -> Prop :=
    trans___aux_33_cons_1 : forall _x1 _x2 : term, (auto___aux_34 _x1) -> (auto___aux_27 _x2) -> (auto___aux_33 (cons _x1 _x2))
with auto___aux_43 : term -> Prop :=
    trans___aux_43_cons_1 : forall _x1 _x2 : term, (auto___aux_39 _x1) -> (auto___aux_30 _x2) -> (auto___aux_43 (cons _x1 _x2))
with auto___aux_34 : term -> Prop :=
    trans___aux_34_server_1 : (auto___aux_34 server)
with auto___aux_36 : term -> Prop :=
    trans___aux_36_cons_1 : forall _x1 _x2 : term, (auto___aux_18 _x1) -> (auto___aux_37 _x2) -> (auto___aux_36 (cons _x1 _x2))
with auto___aux_48 : term -> Prop :=
    trans___aux_48___aux__vars10_1 : forall _x1 _x2 _x3 : term, (auto___aux_31 _x1) -> (auto___aux_20 _x2) -> (auto___aux_39 _x3) -> (auto___aux_48 (__aux__vars10 _x1 _x2 _x3))
  | trans___aux_48___aux__vars10_2 : forall _x1 _x2 _x3 : term, (auto___aux_31 _x1) -> (auto___aux_20 _x2) -> (auto___aux_22 _x3) -> (auto___aux_48 (__aux__vars10 _x1 _x2 _x3))
with auto___aux_46 : term -> Prop :=
    trans___aux_46_sym_1 : (auto___aux_46 sym)
with auto___aux_44 : term -> Prop :=
    trans___aux_44___aux__vars8_1 : forall _x1 _x2 : term, (auto___aux_42 _x1) -> (auto___aux_39 _x2) -> (auto___aux_44 (__aux__vars8 _x1 _x2))
  | trans___aux_44___aux__vars8_2 : forall _x1 _x2 : term, (auto___aux_26 _x1) -> (auto___aux_22 _x2) -> (auto___aux_44 (__aux__vars8 _x1 _x2))
with auto___aux_7 : term -> Prop :=
    trans___aux_7_alice_1 : (auto___aux_7 alice)
with auto___aux_10 : term -> Prop :=
    trans___aux_10_cons_1 : forall _x1 _x2 : term, (auto___aux_11 _x1) -> (auto___aux_12 _x2) -> (auto___aux_10 (cons _x1 _x2))
with auto___aux_17 : term -> Prop :=
    trans___aux_17_key_1 : forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_35 _x2) -> (auto___aux_17 (key _x1 _x2))
with auto___aux_57 : term -> Prop :=
    trans___aux_57_intruder_1 : (auto___aux_57 intruder)
with auto___aux_16 : term -> Prop :=
    trans___aux_16_cons_1 : forall _x1 _x2 : term, (auto___aux_18 _x1) -> (auto___aux_19 _x2) -> (auto___aux_16 (cons _x1 _x2))
with auto___aux_50 : term -> Prop :=
    trans___aux_50_key_1 : forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_25 _x2) -> (auto___aux_50 (key _x1 _x2))
  | trans___aux_50_key_2 : forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_41 _x2) -> (auto___aux_50 (key _x1 _x2))
with auto___aux_58 : term -> Prop :=
    trans___aux_58_sym_1 : (auto___aux_58 sym)
with auto_agent : term -> Prop :=
    trans_agent_intruder_1 : (auto_agent intruder)
  | trans_agent_bob_1 : (auto_agent bob)
  | trans_agent_server_1 : (auto_agent server)
  | trans_agent_alice_1 : (auto_agent alice)
with auto___aux_6 : term -> Prop :=
    trans___aux_6___aux__vars6_1 : forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_25 _x2) -> (auto___aux_6 (__aux__vars6 _x1 _x2))
  | trans___aux_6___aux__vars6_2 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto___aux_59 _x2) -> (auto___aux_6 (__aux__vars6 _x1 _x2))
  | trans___aux_6___aux__vars6_3 : forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_25 _x2) -> (auto___aux_47 _x2) -> (auto___aux_6 (__aux__vars6 _x1 _x2))
  | trans___aux_6___aux__vars6_4 : forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_32 _x2) -> (auto___aux_6 (__aux__vars6 _x1 _x2))
  | trans___aux_6___aux__vars6_5 : forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_32 _x2) -> (auto___aux_6 (__aux__vars6 _x1 _x2))
  | trans___aux_6___aux__vars6_6 : forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_35 _x2) -> (auto___aux_6 (__aux__vars6 _x1 _x2))
  | trans___aux_6___aux__vars6_7 : forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_35 _x2) -> (auto___aux_6 (__aux__vars6 _x1 _x2))
with auto___aux_5 : term -> Prop :=
    trans___aux_5___aux__vars5_1 : forall _x1 : term, (auto___aux_59 _x1) -> (auto___aux_5 (__aux__vars5 _x1))
with auto___aux_12 : term -> Prop :=
    trans___aux_12_nil_1 : (auto___aux_12 nil)
with auto___aux_3 : term -> Prop :=
    trans___aux_3___aux__vars3_1 : forall _x1 : term, (auto___aux_55 _x1) -> (auto___aux_3 (__aux__vars3 _x1))
with auto___aux_14 : term -> Prop :=
    trans___aux_14_cons_1 : forall _x1 _x2 : term, (auto___aux_9 _x1) -> (auto___aux_12 _x2) -> (auto___aux_14 (cons _x1 _x2))
with auto___aux_18 : term -> Prop :=
    trans___aux_18_nil_1 : (auto___aux_18 nil)
  | trans___aux_18_s_1 : forall _x1 : term, (auto_knows _x1) -> (auto___aux_18 (s _x1))
  | trans___aux_18_intruder_1 : (auto___aux_18 intruder)
  | trans___aux_18_cons_1 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_18 (cons _x1 _x2))
  | trans___aux_18_key_1 : forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto___aux_18 (key _x1 _x2))
  | trans___aux_18_key_2 : forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto___aux_18 (key _x1 _x2))
  | trans___aux_18_key_3 : forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto___aux_18 (key _x1 _x2))
  | trans___aux_18_bob_1 : (auto___aux_18 bob)
  | trans___aux_18_crypt_1 : forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_17 _x2) -> (auto___aux_18 (crypt _x1 _x2))
  | trans___aux_18_crypt_2 : forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto___aux_18 (crypt _x1 _x2))
  | trans___aux_18_crypt_3 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_18 (crypt _x1 _x2))
  | trans___aux_18_crypt_4 : forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto___aux_18 (crypt _x1 _x2))
  | trans___aux_18_crypt_5 : forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_50 _x2) -> (auto___aux_18 (crypt _x1 _x2))
  | trans___aux_18_crypt_6 : forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_53 _x2) -> (auto___aux_18 (crypt _x1 _x2))
  | trans___aux_18_crypt_7 : forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_17 _x2) -> (auto___aux_18 (crypt _x1 _x2))
  | trans___aux_18_server_1 : (auto___aux_18 server)
  | trans___aux_18_nonceb_1 : forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_18 (nonceb _x1 _x2 _x3))
  | trans___aux_18_nonceb_2 : forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_18 (nonceb _x1 _x2 _x3))
  | trans___aux_18_alice_1 : (auto___aux_18 alice)
  | trans___aux_18_noncea_1 : forall _x1 : term, (auto___aux_13 _x1) -> (auto___aux_18 (noncea _x1))
with auto___aux_11 : term -> Prop :=
    trans___aux_11_noncea_1 : forall _x1 : term, (auto___aux_13 _x1) -> (auto___aux_11 (noncea _x1))
with auto___aux_4 : term -> Prop :=
    trans___aux_4___aux__vars4_1 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto___aux_57 _x2) -> (auto___aux_4 (__aux__vars4 _x1 _x2))
with auto___aux_1 : term -> Prop :=
    trans___aux_1___aux__vars1_1 : forall _x1 : term, (auto___aux_57 _x1) -> (auto___aux_1 (__aux__vars1 _x1))
with auto___aux_53 : term -> Prop :=
    trans___aux_53_key_1 : forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_46 _x1) -> (auto___aux_25 _x2) -> (auto___aux_47 _x2) -> (auto___aux_53 (key _x1 _x2))
with auto___aux_13 : term -> Prop :=
    trans___aux_13_cons_1 : forall _x1 _x2 : term, (auto___aux_7 _x1) -> (auto___aux_14 _x2) -> (auto___aux_13 (cons _x1 _x2))
with auto___aux_15 : term -> Prop :=
    trans___aux_15___aux__vars7_1 : forall _x1 _x2 _x3 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows _x3) -> (auto___aux_15 (__aux__vars7 _x1 _x2 _x3))
with auto___aux_54 : term -> Prop :=
    trans___aux_54_pub_1 : (auto___aux_54 pub)
with auto_alice_key : term -> Prop :=
    trans_alice_key_key_1 : forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> (auto_alice_key (key _x1 _x2))
with auto___aux_8 : term -> Prop :=
    trans___aux_8_cons_1 : forall _x1 _x2 : term, (auto___aux_9 _x1) -> (auto___aux_10 _x2) -> (auto___aux_8 (cons _x1 _x2))
with auto___aux_51 : term -> Prop :=
    trans___aux_51___aux__vars11_1 : forall _x1 _x2 : term, (auto___aux_17 _x1) -> (auto_alice_key _x1) -> (auto___aux_16 _x2) -> (auto___aux_51 (__aux__vars11 _x1 _x2))
  | trans___aux_51___aux__vars11_2 : forall _x1 _x2 : term, (auto___aux_17 _x1) -> (auto_alice_key _x1) -> (auto___aux_36 _x2) -> (auto___aux_51 (__aux__vars11 _x1 _x2))
  | trans___aux_51___aux__vars11_3 : forall _x1 _x2 : term, (auto___aux_29 _x1) -> (auto_alice_key _x1) -> (auto___aux_28 _x2) -> (auto___aux_51 (__aux__vars11 _x1 _x2))
  | trans___aux_51___aux__vars11_4 : forall _x1 _x2 : term, (auto___aux_50 _x1) -> (auto_alice_key _x1) -> (auto___aux_49 _x2) -> (auto___aux_51 (__aux__vars11 _x1 _x2))
  | trans___aux_51___aux__vars11_5 : forall _x1 _x2 : term, (auto___aux_29 _x1) -> (auto_alice_key _x1) -> (auto___aux_43 _x2) -> (auto___aux_51 (__aux__vars11 _x1 _x2))
  | trans___aux_51___aux__vars11_6 : forall _x1 _x2 : term, (auto___aux_53 _x1) -> (auto_alice_key _x1) -> (auto___aux_52 _x2) -> (auto___aux_51 (__aux__vars11 _x1 _x2))
  | trans___aux_51___aux__vars11_7 : forall _x1 _x2 : term, (auto_alice_key _x1) -> (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_51 (__aux__vars11 _x1 _x2))
with auto___aux_52 : term -> Prop :=
    trans___aux_52_s_1 : forall _x1 : term, (auto___aux_52 _x1) -> (auto___aux_52 (s _x1))
  | trans___aux_52_s_2 : forall _x1 : term, (auto___aux_49 _x1) -> (auto___aux_52 (s _x1))
with auto___aux_59 : term -> Prop :=
    trans___aux_59_old_session_1 : forall _x1 _x2 _x3 : term, (auto___aux_59 (old_session _x1 _x2 _x3))
with auto___aux_49 : term -> Prop :=
    trans___aux_49_nonceb_1 : forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_49 (nonceb _x1 _x2 _x3))
  | trans___aux_49_nonceb_2 : forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_49 (nonceb _x1 _x2 _x3))
with auto___aux_2 : term -> Prop :=
    trans___aux_2___aux__vars2_1 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto___aux_55 _x2) -> (auto___aux_2 (__aux__vars2 _x1 _x2))
with auto_knows : term -> Prop :=
    trans_knows_nil_1 : (auto_knows nil)
  | trans_knows_s_1 : forall _x1 : term, (auto_knows _x1) -> (auto_knows (s _x1))
  | trans_knows_intruder_1 : (auto_knows intruder)
  | trans_knows_cons_1 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows (cons _x1 _x2))
  | trans_knows_key_1 : forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto_knows (key _x1 _x2))
  | trans_knows_key_2 : forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto_knows (key _x1 _x2))
  | trans_knows_key_3 : forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto_knows (key _x1 _x2))
  | trans_knows_bob_1 : (auto_knows bob)
  | trans_knows_crypt_1 : forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_17 _x2) -> (auto_knows (crypt _x1 _x2))
  | trans_knows_crypt_2 : forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2))
  | trans_knows_crypt_3 : forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows (crypt _x1 _x2))
  | trans_knows_crypt_4 : forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2))
  | trans_knows_crypt_5 : forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_50 _x2) -> (auto_knows (crypt _x1 _x2))
  | trans_knows_crypt_6 : forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_53 _x2) -> (auto_knows (crypt _x1 _x2))
  | trans_knows_crypt_7 : forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_17 _x2) -> (auto_knows (crypt _x1 _x2))
  | trans_knows_server_1 : (auto_knows server)
  | trans_knows_nonceb_1 : forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3))
  | trans_knows_nonceb_2 : forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3))
  | trans_knows_alice_1 : (auto_knows alice)
  | trans_knows_noncea_1 : forall _x1 : term, (auto___aux_13 _x1) -> (auto_knows (noncea _x1))
with auto___aux_56 : term -> Prop :=
    trans___aux_56_prv_1 : (auto___aux_56 prv)
with auto___aux_9 : term -> Prop :=
    trans___aux_9_bob_1 : (auto___aux_9 bob)
with auto_reach_intruder_knows_session_key_as_seen_by_B : Prop :=
    intruder_knows_session_key_as_seen_by_B_intro : auto_reach_intruder_knows_session_key_as_seen_by_B
with auto_reach_intruder_knows_session_key_generated_by_server : Prop :=
with auto_reach_intruder_knows_session_key_as_seen_by_alice : Prop :=
.

Remark rem_1 : (auto_knows nil). (* Subsumed by automaton clause. *)
Proof. intros. apply trans_knows_nil_1; assumption. Defined.

Definition infer_intruder_knows_nil := rem_1.

Remark rem_2 : forall _big_m1 _big_m2:term, (auto_knows _big_m1) -> (auto_knows _big_m2) -> (auto_knows _big_m1). (* Tautology. *)
Proof. tauto. Defined.

Inductive or_1 (H1:Prop) : Prop :=
    or_1_intro_1 : H1 -> (or_1 H1)
.

Remark rem_3 : forall _x1 _x2 : term, (auto_knows (cons _x1 _x2)) -> (or_1
    ((auto_knows _x1) /\ (auto_knows _x2))
).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4 : forall _big_m1 _big_m2:term, (auto_knows (cons _big_m1 _big_m2)) -> (auto_knows _big_m1). (* Eliminate negative atom. *)
Proof.
   intros _big_m1 _big_m2. intro H.
  elim (rem_3 _big_m1 _big_m2 H); intros.
  apply (rem_2 _big_m1 _big_m2); tauto.
Defined.

Definition infer_intruder_can_take_first_components := rem_4.

Remark rem_5 : (_big_m1,_big_m2:term)(auto_knows _big_m1) -> (auto_knows _big_m2) -> (auto_knows _big_m2). (* Tautology. *)
Proof. Tauto. Defined.

Remark rem_6 : (_big_m1,_big_m2:term)(auto_knows (cons _big_m1 _big_m2)) -> (auto_knows _big_m2). (* Eliminate negative atom. *)
Proof.
   Intros _big_m1 _big_m2. Intro H.
  Elim (rem_3 _big_m1 _big_m2 H); Intros.
  Apply (rem_5 _big_m1 _big_m2); Tauto.
Defined.

Definition infer_intruder_can_take_second_components := rem_6.

Remark rem_7 : (_big_m1,_big_m2:term)(auto_knows _big_m2) -> (auto_knows _big_m1) -> (auto_knows (cons _big_m1 _big_m2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_cons_1; Assumption. Defined.

Definition infer_intruder_can_build_pairs := rem_7.

Remark rem_8 : (_big_k,_big_m:term)(auto_knows _big_k) -> (auto_knows _big_m) -> (auto_knows (crypt _big_m _big_k)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_3; Assumption. Defined.

Definition infer_intruder_can_encrypt := rem_8.

Remark rem_9 : (_big_k,_big_m:term)(auto_knows _big_m) -> (auto___aux_55 _big_k) -> (auto___aux_1 (__aux__vars1 _big_k)) -> (auto_knows _big_m). (* Tautology. *)
Proof. Tauto. Defined.

Remark rem_10 : forall _x1 _x2 : term, (auto___aux_2 (__aux__vars2 _x1 _x2)) -> (or_1
    ((auto_knows _x1) /\ (auto___aux_55 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_11 : (_big_k,_big_m:term)(auto___aux_2 (__aux__vars2 _big_m _big_k)) -> (auto___aux_1 (__aux__vars1 _big_k)) -> (auto_knows _big_m). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_10 _big_m _big_k H); Intros.
  Apply (rem_9 _big_k _big_m); Tauto.
Defined.

Inductive or_0 : Prop :=
.

Remark rem_12 : (auto___aux_24 pub) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_13 : (_big_k,_big_m:term)(auto___aux_24 pub) -> (auto___aux_35 _big_k) -> (auto___aux_16 _big_m) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_12 H); Intros.
Defined.

Remark rem_14 : forall _x1 _x2 : term, (auto___aux_17 (key _x1 _x2)) -> (or_1
    ((auto___aux_24 _x1) /\ (auto___aux_35 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_15 : (_big_k,_big_m:term)(auto___aux_16 _big_m) -> (auto___aux_17 (key pub _big_k)) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_14 pub _big_k H); Intros.
  Apply (rem_13 _big_k _big_m); Tauto.
Defined.

Remark rem_16 : (_big_k,_big_m:term)(auto___aux_24 pub) -> (auto___aux_32 _big_k) -> (auto___aux_43 _big_m) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_12 H); Intros.
Defined.

Remark rem_17 : forall _x1 _x2 : term, (auto___aux_29 (key _x1 _x2)) -> (or_1
    ((auto___aux_24 _x1) /\ (auto___aux_32 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_18 : (_big_k,_big_m:term)(auto___aux_43 _big_m) -> (auto___aux_29 (key pub _big_k)) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_17 pub _big_k H); Intros.
  Apply (rem_16 _big_k _big_m); Tauto.
Defined.

Remark rem_19 : (auto___aux_56 pub) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_20 : (_big_k,_big_m:term)(auto___aux_56 pub) -> (auto___aux_57 _big_k) -> (auto_knows _big_m) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_19 H); Intros.
Defined.

Remark rem_21 : (auto___aux_58 pub) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_22 : (_big_k,_big_m:term)(auto___aux_58 pub) -> (auto___aux_59 _big_k) -> (auto_knows _big_m) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_21 H); Intros.
Defined.

Remark rem_23 : (_big_k,_big_m:term)(auto___aux_54 pub) -> (auto___aux_55 _big_k) -> (auto_knows _big_m) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_2___aux__vars2_1; Assumption. Defined.

Inductive or_3[H1,H2,H3:Prop] : Prop :=
    or_3_intro_1 : H1 -> (or_3 H1 H2 H3)
  | or_3_intro_2 : H2 -> (or_3 H1 H2 H3)
  | or_3_intro_3 : H3 -> (or_3 H1 H2 H3)
.

Remark rem_24 : forall _x1 _x2 : term, (auto_knows (key _x1 _x2)) -> (or_3
    ((auto___aux_56 _x1) /\ (auto___aux_57 _x2))
    ((auto___aux_58 _x1) /\ (auto___aux_59 _x2))
    ((auto___aux_54 _x1) /\ (auto___aux_55 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_3_intro_1; Tauto.
  Intros. Apply or_3_intro_2; Tauto.
  Intros. Apply or_3_intro_3; Tauto.
Qed.

Remark rem_25 : (_big_k,_big_m:term)(auto_knows _big_m) -> (auto_knows (key pub _big_k)) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_24 pub _big_k H); Intros.
  Apply (rem_20 _big_k _big_m); Tauto.
  Apply (rem_22 _big_k _big_m); Tauto.
  Apply (rem_23 _big_k _big_m); Tauto.
Defined.

Remark rem_26 : (_big_k,_big_m:term)(auto___aux_24 pub) -> (auto___aux_32 _big_k) -> (auto___aux_28 _big_m) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_12 H); Intros.
Defined.

Remark rem_27 : (_big_k,_big_m:term)(auto___aux_28 _big_m) -> (auto___aux_29 (key pub _big_k)) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_17 pub _big_k H); Intros.
  Apply (rem_26 _big_k _big_m); Tauto.
Defined.

Remark rem_28 : (_big_k,_big_m:term)(auto___aux_24 pub) -> (auto___aux_25 _big_k) -> (auto___aux_49 _big_m) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_12 H); Intros.
Defined.

Remark rem_29 : (_big_k,_big_m:term)(auto___aux_24 pub) -> (auto___aux_41 _big_k) -> (auto___aux_49 _big_m) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_12 H); Intros.
Defined.

Inductive or_2[H1,H2:Prop] : Prop :=
    or_2_intro_1 : H1 -> (or_2 H1 H2)
  | or_2_intro_2 : H2 -> (or_2 H1 H2)
.

Remark rem_30 : forall _x1 _x2 : term, (auto___aux_50 (key _x1 _x2)) -> (or_2
    ((auto___aux_24 _x1) /\ (auto___aux_25 _x2))
    ((auto___aux_24 _x1) /\ (auto___aux_41 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_2_intro_1; Tauto.
  Intros. Apply or_2_intro_2; Tauto.
Qed.

Remark rem_31 : (_big_k,_big_m:term)(auto___aux_49 _big_m) -> (auto___aux_50 (key pub _big_k)) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_30 pub _big_k H); Intros.
  Apply (rem_28 _big_k _big_m); Tauto.
  Apply (rem_29 _big_k _big_m); Tauto.
Defined.

Remark rem_32 : (_big_k,_big_m:term)(auto___aux_24 pub) -> (auto___aux_46 pub) -> (auto___aux_25 _big_k) -> (auto___aux_47 _big_k) -> (auto___aux_52 _big_m) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_12 H); Intros.
Defined.

Remark rem_33 : forall _x1 _x2 : term, (auto___aux_53 (key _x1 _x2)) -> (or_1
    ((auto___aux_24 _x1) /\ (auto___aux_46 _x1) /\ (auto___aux_25 _x2) /\ (auto___aux_47 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_34 : (_big_k,_big_m:term)(auto___aux_52 _big_m) -> (auto___aux_53 (key pub _big_k)) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_33 pub _big_k H); Intros.
  Apply (rem_32 _big_k _big_m); Tauto.
Defined.

Remark rem_35 : (_big_k,_big_m:term)(auto___aux_24 pub) -> (auto___aux_35 _big_k) -> (auto___aux_36 _big_m) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_12 H); Intros.
Defined.

Remark rem_36 : (_big_k,_big_m:term)(auto___aux_36 _big_m) -> (auto___aux_17 (key pub _big_k)) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_14 pub _big_k H); Intros.
  Apply (rem_35 _big_k _big_m); Tauto.
Defined.

Inductive or_7[H1,H2,H3,H4,H5,H6,H7:Prop] : Prop :=
    or_7_intro_1 : H1 -> (or_7 H1 H2 H3 H4 H5 H6 H7)
  | or_7_intro_2 : H2 -> (or_7 H1 H2 H3 H4 H5 H6 H7)
  | or_7_intro_3 : H3 -> (or_7 H1 H2 H3 H4 H5 H6 H7)
  | or_7_intro_4 : H4 -> (or_7 H1 H2 H3 H4 H5 H6 H7)
  | or_7_intro_5 : H5 -> (or_7 H1 H2 H3 H4 H5 H6 H7)
  | or_7_intro_6 : H6 -> (or_7 H1 H2 H3 H4 H5 H6 H7)
  | or_7_intro_7 : H7 -> (or_7 H1 H2 H3 H4 H5 H6 H7)
.

Remark rem_37 : forall _x1 _x2 : term, (auto_knows (crypt _x1 _x2)) -> (or_7
    ((auto___aux_16 _x1) /\ (auto___aux_17 _x2))
    ((auto___aux_43 _x1) /\ (auto___aux_29 _x2))
    ((auto_knows _x1) /\ (auto_knows _x2))
    ((auto___aux_28 _x1) /\ (auto___aux_29 _x2))
    ((auto___aux_49 _x1) /\ (auto___aux_50 _x2))
    ((auto___aux_52 _x1) /\ (auto___aux_53 _x2))
    ((auto___aux_36 _x1) /\ (auto___aux_17 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_7_intro_1; Tauto.
  Intros. Apply or_7_intro_2; Tauto.
  Intros. Apply or_7_intro_3; Tauto.
  Intros. Apply or_7_intro_4; Tauto.
  Intros. Apply or_7_intro_5; Tauto.
  Intros. Apply or_7_intro_6; Tauto.
  Intros. Apply or_7_intro_7; Tauto.
Qed.

Remark rem_38 : (_big_k,_big_m:term)(auto_knows (crypt _big_m (key pub _big_k))) -> (auto___aux_2 (__aux__vars2 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_37 _big_m (key pub _big_k) H); Intros.
  Apply (rem_15 _big_k _big_m); Tauto.
  Apply (rem_18 _big_k _big_m); Tauto.
  Apply (rem_25 _big_k _big_m); Tauto.
  Apply (rem_27 _big_k _big_m); Tauto.
  Apply (rem_31 _big_k _big_m); Tauto.
  Apply (rem_34 _big_k _big_m); Tauto.
  Apply (rem_36 _big_k _big_m); Tauto.
Defined.

Remark rem_39 : (_big_k,_big_m:term)(auto___aux_1 (__aux__vars1 _big_k)) -> (auto_knows (crypt _big_m (key pub _big_k))) -> (auto_knows _big_m). (* Cut. *)
Proof.
   Intros _big_k _big_m. Intros. Apply (rem_11 _big_k _big_m). Apply (rem_38 _big_k _big_m); Assumption.
   Assumption.
Qed.

Remark rem_40 : (_big_k:term)(auto___aux_56 prv) -> (auto___aux_57 _big_k) -> (auto___aux_1 (__aux__vars1 _big_k)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_1___aux__vars1_1; Assumption. Defined.

Remark rem_41 : (auto___aux_58 prv) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_42 : (_big_k:term)(auto___aux_58 prv) -> (auto___aux_59 _big_k) -> (auto___aux_1 (__aux__vars1 _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k. Intro H.
  Elim (rem_41 H); Intros.
Defined.

Remark rem_43 : (auto___aux_54 prv) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_44 : (_big_k:term)(auto___aux_54 prv) -> (auto___aux_1 (__aux__vars1 _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k. Intro H.
  Elim (rem_43 H); Intros.
Defined.

Remark rem_45 : (_big_k:term)(auto___aux_54 prv) -> (auto___aux_55 _big_k) -> (auto___aux_1 (__aux__vars1 _big_k)). (* Eliminate negative atom by universal clause. *)
Proof.
   Intros _big_k. Intros. Apply (rem_44 _big_k); Assumption.
Defined.

Remark rem_46 : (_big_k:term)(auto_knows (key prv _big_k)) -> (auto___aux_1 (__aux__vars1 _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k. Intro H.
  Elim (rem_24 prv _big_k H); Intros.
  Apply (rem_40 _big_k); Tauto.
  Apply (rem_42 _big_k); Tauto.
  Apply (rem_45 _big_k); Tauto.
Defined.

Remark rem_47 : (_big_k,_big_m:term)(auto_knows (key prv _big_k)) -> (auto_knows (crypt _big_m (key pub _big_k))) -> (auto_knows _big_m). (* Cut. *)
Proof.
   Intros _big_k _big_m. Intros. Apply (rem_39 _big_k _big_m). Apply (rem_46 _big_k); Assumption.
   Assumption.
Qed.

Definition infer_intruder_can_decrypt_if_has_private_key := rem_47.

Remark rem_48 : (_big_k,_big_m:term)(auto_knows _big_m) -> (auto___aux_57 _big_k) -> (auto___aux_3 (__aux__vars3 _big_k)) -> (auto_knows _big_m). (* Tautology. *)
Proof. Tauto. Defined.

Remark rem_49 : forall _x1 _x2 : term, (auto___aux_4 (__aux__vars4 _x1 _x2)) -> (or_1
    ((auto_knows _x1) /\ (auto___aux_57 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_50 : (_big_k,_big_m:term)(auto___aux_4 (__aux__vars4 _big_m _big_k)) -> (auto___aux_3 (__aux__vars3 _big_k)) -> (auto_knows _big_m). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_49 _big_m _big_k H); Intros.
  Apply (rem_48 _big_k _big_m); Tauto.
Defined.

Remark rem_51 : (auto___aux_24 prv) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_52 : (_big_k,_big_m:term)(auto___aux_24 prv) -> (auto___aux_35 _big_k) -> (auto___aux_16 _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_51 H); Intros.
Defined.

Remark rem_53 : (_big_k,_big_m:term)(auto___aux_16 _big_m) -> (auto___aux_17 (key prv _big_k)) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_14 prv _big_k H); Intros.
  Apply (rem_52 _big_k _big_m); Tauto.
Defined.

Remark rem_54 : (_big_k,_big_m:term)(auto___aux_24 prv) -> (auto___aux_32 _big_k) -> (auto___aux_43 _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_51 H); Intros.
Defined.

Remark rem_55 : (_big_k,_big_m:term)(auto___aux_43 _big_m) -> (auto___aux_29 (key prv _big_k)) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_17 prv _big_k H); Intros.
  Apply (rem_54 _big_k _big_m); Tauto.
Defined.

Remark rem_56 : (_big_k,_big_m:term)(auto___aux_56 prv) -> (auto___aux_57 _big_k) -> (auto_knows _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_4___aux__vars4_1; Assumption. Defined.

Remark rem_57 : (_big_k,_big_m:term)(auto___aux_58 prv) -> (auto___aux_59 _big_k) -> (auto_knows _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_41 H); Intros.
Defined.

Remark rem_58 : (_big_k,_big_m:term)(auto___aux_54 prv) -> (auto_knows _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_43 H); Intros.
Defined.

Remark rem_59 : (_big_k,_big_m:term)(auto___aux_54 prv) -> (auto___aux_55 _big_k) -> (auto_knows _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom by universal clause. *)
Proof.
   Intros _big_k _big_m. Intros. Apply (rem_58 _big_k _big_m); Assumption.
Defined.

Remark rem_60 : (_big_k,_big_m:term)(auto_knows _big_m) -> (auto_knows (key prv _big_k)) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_24 prv _big_k H); Intros.
  Apply (rem_56 _big_k _big_m); Tauto.
  Apply (rem_57 _big_k _big_m); Tauto.
  Apply (rem_59 _big_k _big_m); Tauto.
Defined.

Remark rem_61 : (_big_k,_big_m:term)(auto___aux_24 prv) -> (auto___aux_32 _big_k) -> (auto___aux_28 _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_51 H); Intros.
Defined.

Remark rem_62 : (_big_k,_big_m:term)(auto___aux_28 _big_m) -> (auto___aux_29 (key prv _big_k)) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_17 prv _big_k H); Intros.
  Apply (rem_61 _big_k _big_m); Tauto.
Defined.

Remark rem_63 : (_big_k,_big_m:term)(auto___aux_24 prv) -> (auto___aux_25 _big_k) -> (auto___aux_49 _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_51 H); Intros.
Defined.

Remark rem_64 : (_big_k,_big_m:term)(auto___aux_24 prv) -> (auto___aux_41 _big_k) -> (auto___aux_49 _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_51 H); Intros.
Defined.

Remark rem_65 : (_big_k,_big_m:term)(auto___aux_49 _big_m) -> (auto___aux_50 (key prv _big_k)) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_30 prv _big_k H); Intros.
  Apply (rem_63 _big_k _big_m); Tauto.
  Apply (rem_64 _big_k _big_m); Tauto.
Defined.

Remark rem_66 : (_big_k,_big_m:term)(auto___aux_24 prv) -> (auto___aux_46 prv) -> (auto___aux_25 _big_k) -> (auto___aux_47 _big_k) -> (auto___aux_52 _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_51 H); Intros.
Defined.

Remark rem_67 : (_big_k,_big_m:term)(auto___aux_52 _big_m) -> (auto___aux_53 (key prv _big_k)) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_33 prv _big_k H); Intros.
  Apply (rem_66 _big_k _big_m); Tauto.
Defined.

Remark rem_68 : (_big_k,_big_m:term)(auto___aux_24 prv) -> (auto___aux_35 _big_k) -> (auto___aux_36 _big_m) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_51 H); Intros.
Defined.

Remark rem_69 : (_big_k,_big_m:term)(auto___aux_36 _big_m) -> (auto___aux_17 (key prv _big_k)) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intros H1. Intro H.
  Elim (rem_14 prv _big_k H); Intros.
  Apply (rem_68 _big_k _big_m); Tauto.
Defined.

Remark rem_70 : (_big_k,_big_m:term)(auto_knows (crypt _big_m (key prv _big_k))) -> (auto___aux_4 (__aux__vars4 _big_m _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k _big_m. Intro H.
  Elim (rem_37 _big_m (key prv _big_k) H); Intros.
  Apply (rem_53 _big_k _big_m); Tauto.
  Apply (rem_55 _big_k _big_m); Tauto.
  Apply (rem_60 _big_k _big_m); Tauto.
  Apply (rem_62 _big_k _big_m); Tauto.
  Apply (rem_65 _big_k _big_m); Tauto.
  Apply (rem_67 _big_k _big_m); Tauto.
  Apply (rem_69 _big_k _big_m); Tauto.
Defined.

Remark rem_71 : (_big_k,_big_m:term)(auto___aux_3 (__aux__vars3 _big_k)) -> (auto_knows (crypt _big_m (key prv _big_k))) -> (auto_knows _big_m). (* Cut. *)
Proof.
   Intros _big_k _big_m. Intros. Apply (rem_50 _big_k _big_m). Apply (rem_70 _big_k _big_m); Assumption.
   Assumption.
Qed.

Remark rem_72 : (_big_k:term)(auto___aux_56 pub) -> (auto___aux_57 _big_k) -> (auto___aux_3 (__aux__vars3 _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k. Intro H.
  Elim (rem_19 H); Intros.
Defined.

Remark rem_73 : (_big_k:term)(auto___aux_58 pub) -> (auto___aux_59 _big_k) -> (auto___aux_3 (__aux__vars3 _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k. Intro H.
  Elim (rem_21 H); Intros.
Defined.

Remark rem_74 : (_big_k:term)(auto___aux_54 pub) -> (auto___aux_55 _big_k) -> (auto___aux_3 (__aux__vars3 _big_k)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_3___aux__vars3_1; Assumption. Defined.

Remark rem_75 : (_big_k:term)(auto_knows (key pub _big_k)) -> (auto___aux_3 (__aux__vars3 _big_k)). (* Eliminate negative atom. *)
Proof.
   Intros _big_k. Intro H.
  Elim (rem_24 pub _big_k H); Intros.
  Apply (rem_72 _big_k); Tauto.
  Apply (rem_73 _big_k); Tauto.
  Apply (rem_74 _big_k); Tauto.
Defined.

Remark rem_76 : (_big_k,_big_m:term)(auto_knows (key pub _big_k)) -> (auto_knows (crypt _big_m (key prv _big_k))) -> (auto_knows _big_m). (* Cut. *)
Proof.
   Intros _big_k _big_m. Intros. Apply (rem_71 _big_k _big_m). Apply (rem_75 _big_k); Assumption.
   Assumption.
Qed.

Definition infer_intruder_can_decrypt_if_has_public_key := rem_76.

Remark rem_77 : (forall _x:term, (auto___aux_49 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nonceb_1; Assumption. Defined.

Remark rem_78 : (forall _x:term, (auto___aux_49 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nonceb_2; Assumption. Defined.

Remark rem_79 : forall _x1 _x2 _x3 : term, (auto___aux_49 (nonceb _x1 _x2 _x3)) -> (or_2
    ((auto___aux_22 _x1) /\ (auto___aux_31 _x2) /\ (auto___aux_20 _x3))
    ((auto___aux_39 _x1) /\ (auto___aux_31 _x2) /\ (auto___aux_20 _x3))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_2_intro_1; Tauto.
  Intros. Apply or_2_intro_2; Tauto.
Qed.

Remark rem_80 : (forall _x:term, (auto___aux_49 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_49 (nonceb _x1 _x2 _x3)) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_49_pknows. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_79 _x1 _x2 _x3 H); Intros.
  Apply (rem_77 epsilon_m__aux_49_pknows _x1 _x2 _x3); Tauto.
  Apply (rem_78 epsilon_m__aux_49_pknows _x1 _x2 _x3); Tauto.
Defined.

Remark rem_81 : (_big_m:term)(auto___aux_49 _big_m) -> (auto_knows _big_m). (* Induct. *)
Proof.
   Fix epsilon_m__aux_49_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_80 epsilon_m__aux_49_pknows _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_82 : (_big_m,_big_x:term)(auto___aux_59 _big_x) -> (auto___aux_49 _big_m) -> (auto___aux_25 _big_x) -> (auto_knows _big_m). (* Split. *)
Proof.
   Intros _big_m _big_x.
  Cut (auto___aux_49 _big_m) -> (auto_knows _big_m). Tauto.
  Exact (rem_81 _big_m).
Defined.

Remark rem_83 : forall _x1 : term, (auto___aux_5 (__aux__vars5 _x1)) -> (or_1
    (auto___aux_59 _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_84 : (_big_m,_big_x:term)(auto___aux_49 _big_m) -> (auto___aux_25 _big_x) -> (auto___aux_5 (__aux__vars5 _big_x)) -> (auto_knows _big_m). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1 H2. Intro H.
  Elim (rem_83 _big_x H); Intros.
  Apply (rem_82 _big_m _big_x); Tauto.
Defined.

Remark rem_85 : (_big_m,_big_x:term)(auto_knows _big_m) -> (auto___aux_59 _big_x) -> (auto___aux_5 (__aux__vars5 _big_x)) -> (auto_knows _big_m). (* Tautology. *)
Proof. Tauto. Defined.

Remark rem_86 : (forall _x:term, (auto___aux_52 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_52 _x1) -> (auto_knows _x1). (* Recursive call to history. *)
Proof.
   Intro Hrec. Intros _x1.
  Cut (auto___aux_52 _x1) -> (auto_knows _x1). Tauto. Exact (Hrec _x1).
Defined.

Remark rem_87 : (forall _x:term, (auto___aux_52 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_52 _x1) -> (auto_knows _x1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_52_pknows. Intros _x1. Intros A1.
  Cut (auto_knows _x1). 2:Apply (rem_86 epsilon_m__aux_52_pknows _x1); Assumption.
  Tauto.
Defined.

Remark rem_88 : (forall _x:term, (auto___aux_52 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_52 _x1) -> (auto_knows (s _x1)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_52_pknows. Intros _x1. Intros A1.
  Case (rem_87 epsilon_m__aux_52_pknows _x1 A1). Clear epsilon_m__aux_52_pknows A1. Intros. Apply trans_knows_s_1; Tauto.
  Clear epsilon_m__aux_52_pknows A1. Tauto.
Defined.

Remark rem_89 : (forall _x:term, (auto___aux_52 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_49 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nonceb_1; Assumption. Defined.

Remark rem_90 : (forall _x:term, (auto___aux_52 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_49 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nonceb_2; Assumption. Defined.

Remark rem_91 : (forall _x:term, (auto___aux_52 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_49 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_49 (nonceb _x1 _x2 _x3)) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_52_pknows epsilon_m__aux_49_pknows. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_79 _x1 _x2 _x3 H); Intros.
  Apply (rem_89 epsilon_m__aux_52_pknows epsilon_m__aux_49_pknows _x1 _x2 _x3); Tauto.
  Apply (rem_90 epsilon_m__aux_52_pknows epsilon_m__aux_49_pknows _x1 _x2 _x3); Tauto.
Defined.

Remark rem_92 : (forall _x:term, (auto___aux_52 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_49 _x1) -> (auto_knows _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_52_pknows. Fix epsilon_m__aux_49_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_91 epsilon_m__aux_52_pknows epsilon_m__aux_49_pknows _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_93 : (forall _x:term, (auto___aux_52 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_49 _x1) -> (auto_knows _x1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_52_pknows. Intros _x1. Intros A1.
  Cut (auto_knows _x1). 2:Apply (rem_92 epsilon_m__aux_52_pknows _x1); Assumption.
  Tauto.
Defined.

Remark rem_94 : (forall _x:term, (auto___aux_52 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_49 _x1) -> (auto_knows (s _x1)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_52_pknows. Intros _x1. Intros A1.
  Case (rem_93 epsilon_m__aux_52_pknows _x1 A1). Clear epsilon_m__aux_52_pknows A1. Intros. Apply trans_knows_s_1; Tauto.
  Clear epsilon_m__aux_52_pknows A1. Tauto.
Defined.

Remark rem_95 : forall _x1 : term, (auto___aux_52 (s _x1)) -> (or_2
    (auto___aux_52 _x1)    (auto___aux_49 _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_2_intro_1; Tauto.
  Intros. Apply or_2_intro_2; Tauto.
Qed.

Remark rem_96 : (forall _x:term, (auto___aux_52 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_52 (s _x1)) -> (auto_knows (s _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_52_pknows. Intros _x1. Intro H.
  Elim (rem_95 _x1 H); Intros.
  Apply (rem_88 epsilon_m__aux_52_pknows _x1); Tauto.
  Apply (rem_94 epsilon_m__aux_52_pknows _x1); Tauto.
Defined.

Remark rem_97 : (_big_m:term)(auto___aux_52 _big_m) -> (auto_knows _big_m). (* Induct. *)
Proof.
   Fix epsilon_m__aux_52_pknows 1.
  Intro _x. Case _x; First [ Intros _x1; Exact (rem_96 epsilon_m__aux_52_pknows _x1)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_98 : (_big_m,_big_x:term)(auto___aux_59 _big_x) -> (auto___aux_52 _big_m) -> (auto___aux_25 _big_x) -> (auto___aux_47 _big_x) -> (auto_knows _big_m). (* Split. *)
Proof.
   Intros _big_m _big_x.
  Cut (auto___aux_52 _big_m) -> (auto_knows _big_m). Tauto.
  Exact (rem_97 _big_m).
Defined.

Remark rem_99 : (_big_m,_big_x:term)(auto___aux_52 _big_m) -> (auto___aux_25 _big_x) -> (auto___aux_47 _big_x) -> (auto___aux_5 (__aux__vars5 _big_x)) -> (auto_knows _big_m). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1 H2 H3. Intro H.
  Elim (rem_83 _big_x H); Intros.
  Apply (rem_98 _big_m _big_x); Tauto.
Defined.

Remark rem_100 : forall _x1 _x2 : term, (auto___aux_59 (cons _x1 _x2)) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_101 : (forall _x:term, (auto___aux_32 _x) -> (auto___aux_59 _x) -> False) -> forall _x1 _x2 : term, (auto___aux_20 _x1) -> (auto___aux_33 _x2) -> (auto___aux_59 (cons _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_32_m__aux_59. Intros _x1 _x2. Intros H1 H2. Intro H.
  Elim (rem_100 _x1 _x2 H); Intros.
Defined.

Remark rem_102 : forall _x1 _x2 : term, (auto___aux_32 (cons _x1 _x2)) -> (or_1
    ((auto___aux_20 _x1) /\ (auto___aux_33 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_103 : (forall _x:term, (auto___aux_32 _x) -> (auto___aux_59 _x) -> False) -> forall _x1 _x2 : term, (auto___aux_32 (cons _x1 _x2)) -> (auto___aux_59 (cons _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_32_m__aux_59. Intros _x1 _x2. Intro H.
  Elim (rem_102 _x1 _x2 H); Intros.
  Apply (rem_101 epsilon_m__aux_32_m__aux_59 _x1 _x2); Tauto.
Defined.

Remark rem_104 : (_big_x:term)(auto___aux_32 _big_x) -> (auto___aux_59 _big_x) -> False. (* Induct. *)
Proof.
   Fix epsilon_m__aux_32_m__aux_59 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_103 epsilon_m__aux_32_m__aux_59 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_105 : (_big_m,_big_x:term)(auto___aux_59 _big_x) -> (auto___aux_28 _big_m) -> (auto___aux_32 _big_x) -> (auto_knows _big_m). (* Split. *)
Proof.
   Intros _big_m _big_x.
  Cut (auto___aux_32 _big_x) -> (auto___aux_59 _big_x) -> False. Tauto.
  Exact (rem_104 _big_x).
Defined.

Remark rem_106 : (_big_m,_big_x:term)(auto___aux_28 _big_m) -> (auto___aux_32 _big_x) -> (auto___aux_5 (__aux__vars5 _big_x)) -> (auto_knows _big_m). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1 H2. Intro H.
  Elim (rem_83 _big_x H); Intros.
  Apply (rem_105 _big_m _big_x); Tauto.
Defined.

Remark rem_107 : (forall _x:term, (auto___aux_27 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> (auto___aux_27 nil) -> (auto_knows nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nil_1; Assumption. Defined.

Remark rem_108 : (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> (_x2:term)(auto___aux_27 _x2) -> (auto_knows _x2). (* Induct. *)
Proof.
   Intros epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Fix epsilon_m__aux_27_pknows 1.
  Intro _x. Case _x; First [Exact (rem_107 epsilon_m__aux_27_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_109 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> (auto___aux_31 nil) -> (auto_knows nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nil_1; Assumption. Defined.

Remark rem_110 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto_knows _x1) -> (auto_knows (s _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_s_1; Assumption. Defined.

Remark rem_111 : forall _x1 : term, (auto___aux_31 (s _x1)) -> (or_1
    (auto_knows _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_112 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_31 (s _x1)) -> (auto_knows (s _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Intros _x1. Intro H.
  Elim (rem_111 _x1 H); Intros.
  Apply (rem_110 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1); Tauto.
Defined.

Remark rem_113 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> (auto___aux_31 intruder) -> (auto_knows intruder). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_intruder_1; Assumption. Defined.

Remark rem_114 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows (cons _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_cons_1; Assumption. Defined.

Remark rem_115 : forall _x1 _x2 : term, (auto___aux_31 (cons _x1 _x2)) -> (or_1
    ((auto_knows _x1) /\ (auto_knows _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_116 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_31 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_115 _x1 _x2 H); Intros.
  Apply (rem_114 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
Defined.

Remark rem_117 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto_knows (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_1; Assumption. Defined.

Remark rem_118 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto_knows (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_2; Assumption. Defined.

Remark rem_119 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto_knows (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_3; Assumption. Defined.

Remark rem_120 : forall _x1 _x2 : term, (auto___aux_31 (key _x1 _x2)) -> (or_3
    ((auto___aux_56 _x1) /\ (auto___aux_57 _x2))
    ((auto___aux_58 _x1) /\ (auto___aux_59 _x2))
    ((auto___aux_54 _x1) /\ (auto___aux_55 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_3_intro_1; Tauto.
  Intros. Apply or_3_intro_2; Tauto.
  Intros. Apply or_3_intro_3; Tauto.
Qed.

Remark rem_121 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_31 (key _x1 _x2)) -> (auto_knows (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_120 _x1 _x2 H); Intros.
  Apply (rem_117 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
  Apply (rem_118 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
  Apply (rem_119 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
Defined.

Remark rem_122 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> (auto___aux_31 bob) -> (auto_knows bob). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_bob_1; Assumption. Defined.

Remark rem_123 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_17 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_1; Assumption. Defined.

Remark rem_124 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_2; Assumption. Defined.

Remark rem_125 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_3; Assumption. Defined.

Remark rem_126 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_4; Assumption. Defined.

Remark rem_127 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_50 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_5; Assumption. Defined.

Remark rem_128 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_53 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_6; Assumption. Defined.

Remark rem_129 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_17 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_7; Assumption. Defined.

Remark rem_130 : forall _x1 _x2 : term, (auto___aux_31 (crypt _x1 _x2)) -> (or_7
    ((auto___aux_16 _x1) /\ (auto___aux_17 _x2))
    ((auto___aux_43 _x1) /\ (auto___aux_29 _x2))
    ((auto_knows _x1) /\ (auto_knows _x2))
    ((auto___aux_28 _x1) /\ (auto___aux_29 _x2))
    ((auto___aux_49 _x1) /\ (auto___aux_50 _x2))
    ((auto___aux_52 _x1) /\ (auto___aux_53 _x2))
    ((auto___aux_36 _x1) /\ (auto___aux_17 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_7_intro_1; Tauto.
  Intros. Apply or_7_intro_2; Tauto.
  Intros. Apply or_7_intro_3; Tauto.
  Intros. Apply or_7_intro_4; Tauto.
  Intros. Apply or_7_intro_5; Tauto.
  Intros. Apply or_7_intro_6; Tauto.
  Intros. Apply or_7_intro_7; Tauto.
Qed.

Remark rem_131 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_31 (crypt _x1 _x2)) -> (auto_knows (crypt _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_130 _x1 _x2 H); Intros.
  Apply (rem_123 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
  Apply (rem_124 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
  Apply (rem_125 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
  Apply (rem_126 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
  Apply (rem_127 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
  Apply (rem_128 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
  Apply (rem_129 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
Defined.

Remark rem_132 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> (auto___aux_31 server) -> (auto_knows server). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_server_1; Assumption. Defined.

Remark rem_133 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nonceb_1; Assumption. Defined.

Remark rem_134 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nonceb_2; Assumption. Defined.

Remark rem_135 : forall _x1 _x2 _x3 : term, (auto___aux_31 (nonceb _x1 _x2 _x3)) -> (or_2
    ((auto___aux_22 _x1) /\ (auto___aux_31 _x2) /\ (auto___aux_20 _x3))
    ((auto___aux_39 _x1) /\ (auto___aux_31 _x2) /\ (auto___aux_20 _x3))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_2_intro_1; Tauto.
  Intros. Apply or_2_intro_2; Tauto.
Qed.

Remark rem_136 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_31 (nonceb _x1 _x2 _x3)) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_135 _x1 _x2 _x3 H); Intros.
  Apply (rem_133 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2 _x3); Tauto.
  Apply (rem_134 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2 _x3); Tauto.
Defined.

Remark rem_137 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> (auto___aux_31 alice) -> (auto_knows alice). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_alice_1; Assumption. Defined.

Remark rem_138 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_13 _x1) -> (auto_knows (noncea _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_noncea_1; Assumption. Defined.

Remark rem_139 : forall _x1 : term, (auto___aux_31 (noncea _x1)) -> (or_1
    (auto___aux_13 _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_140 : (forall _x:term, (auto___aux_31 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_31 (noncea _x1)) -> (auto_knows (noncea _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Intros _x1. Intro H.
  Elim (rem_139 _x1 H); Intros.
  Apply (rem_138 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1); Tauto.
Defined.

Remark rem_141 : (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_31 _x1) -> (auto_knows _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Fix epsilon_m__aux_31_pknows 1.
  Intro _x. Case _x; First [Exact (rem_109 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows )
  |  Intros _x1; Exact (rem_112 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1)
  | Exact (rem_113 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows )
  |  Intros _x1 _x2; Exact (rem_116 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2)
  |  Intros _x1 _x2; Exact (rem_121 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2)
  | Exact (rem_122 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows )
  |  Intros _x1 _x2; Exact (rem_131 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2)
  | Exact (rem_132 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows )
  |  Intros _x1 _x2 _x3; Exact (rem_136 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2 _x3)
  | Exact (rem_137 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows )
  |  Intros _x1; Exact (rem_140 epsilon_m__aux_31_pknows epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_142 : (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_31 _x1) -> (auto___aux_27 _x2) -> ((auto_knows _x1) /\ (auto_knows _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Intros _x1 _x2. Intros A1 A2.
  Cut (auto_knows _x2). 2:Apply (rem_108 epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x2); Assumption.
  Cut (auto_knows _x1). 2:Apply (rem_141 epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1); Assumption.
  Tauto.
Defined.

Remark rem_143 : (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_31 _x1) -> (auto___aux_27 _x2) -> (auto_knows (cons _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_142 epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2 A1 A2). Clear epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows A1 A2. Intros. Apply trans_knows_cons_1; Tauto.
  Clear epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows A1 A2. Tauto.
Defined.

Remark rem_144 : forall _x1 _x2 : term, (auto___aux_30 (cons _x1 _x2)) -> (or_1
    ((auto___aux_31 _x1) /\ (auto___aux_27 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_145 : (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_30 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_30 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_144 _x1 _x2 H); Intros.
  Apply (rem_143 epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2); Tauto.
Defined.

Remark rem_146 : (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (_x2:term)(auto___aux_30 _x2) -> (auto_knows _x2). (* Induct. *)
Proof.
   Intros epsilon_m__aux_43_pknows. Fix epsilon_m__aux_30_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_145 epsilon_m__aux_43_pknows epsilon_m__aux_30_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_147 : (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_41 _x) -> (auto___aux_59 _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_41 (old_session _x1 _x2 _x3)) -> (auto___aux_59 (old_session _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_59_old_session_1; Assumption. Defined.

Remark rem_148 : (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (_x2:term)(auto___aux_41 _x2) -> (auto___aux_59 _x2). (* Induct. *)
Proof.
   Intros epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows. Fix epsilon_m__aux_41_p__aux_59 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_147 epsilon_m__aux_39_pknows epsilon_m__aux_41_p__aux_59 epsilon_m__aux_43_pknows _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_149 : (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_24 _x) -> (auto___aux_58 _x)) -> (auto___aux_24 sym) -> (auto___aux_58 sym). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_58_sym_1; Assumption. Defined.

Remark rem_150 : (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_24 _x1) -> (auto___aux_58 _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows. Fix epsilon_m__aux_24_p__aux_58 1.
  Intro _x. Case _x; First [Exact (rem_149 epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows epsilon_m__aux_24_p__aux_58 )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_151 : (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_41 _x2) -> ((auto___aux_58 _x1) /\ (auto___aux_59 _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows. Intros _x1 _x2. Intros A1 A2.
  Cut (auto___aux_59 _x2). 2:Apply (rem_148 epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows _x2); Assumption.
  Cut (auto___aux_58 _x1). 2:Apply (rem_150 epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows _x1); Assumption.
  Tauto.
Defined.

Remark rem_152 : (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_41 _x2) -> ((auto___aux_56 _x1) /\ (auto___aux_57 _x2)) \/ ((auto___aux_58 _x1) /\ (auto___aux_59 _x2)) \/ ((auto___aux_54 _x1) /\ (auto___aux_55 _x2)) \/ False. (* Prove a smaller disjunction. *)
Proof.
   Intros epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_151 epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows _x1 _x2 A1 A2); Tauto.
Defined.

Remark rem_153 : (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_41 _x2) -> (auto_knows (key _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_152 epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows _x1 _x2 A1 A2). Clear epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows A1 A2. Intros. Apply trans_knows_key_1; Tauto.
  Intro H; Case H; Clear H. Clear epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows A1 A2. Intros. Apply trans_knows_key_2; Tauto.
  Intro H; Case H; Clear H. Clear epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows A1 A2. Intros. Apply trans_knows_key_3; Tauto.
  Clear epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows A1 A2. Tauto.
Defined.

Remark rem_154 : forall _x1 _x2 : term, (auto___aux_39 (key _x1 _x2)) -> (or_1
    ((auto___aux_24 _x1) /\ (auto___aux_41 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_155 : (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_39 (key _x1 _x2)) -> (auto_knows (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_154 _x1 _x2 H); Intros.
  Apply (rem_153 epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows _x1 _x2); Tauto.
Defined.

Remark rem_156 : (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_39 _x1) -> (auto_knows _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_43_pknows. Fix epsilon_m__aux_39_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_155 epsilon_m__aux_39_pknows epsilon_m__aux_43_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_157 : (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_39 _x1) -> (auto___aux_30 _x2) -> ((auto_knows _x1) /\ (auto_knows _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_43_pknows. Intros _x1 _x2. Intros A1 A2.
  Cut (auto_knows _x2). 2:Apply (rem_146 epsilon_m__aux_43_pknows _x2); Assumption.
  Cut (auto_knows _x1). 2:Apply (rem_156 epsilon_m__aux_43_pknows _x1); Assumption.
  Tauto.
Defined.

Remark rem_158 : (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_39 _x1) -> (auto___aux_30 _x2) -> (auto_knows (cons _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_43_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_157 epsilon_m__aux_43_pknows _x1 _x2 A1 A2). Clear epsilon_m__aux_43_pknows A1 A2. Intros. Apply trans_knows_cons_1; Tauto.
  Clear epsilon_m__aux_43_pknows A1 A2. Tauto.
Defined.

Remark rem_159 : forall _x1 _x2 : term, (auto___aux_43 (cons _x1 _x2)) -> (or_1
    ((auto___aux_39 _x1) /\ (auto___aux_30 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_160 : (forall _x:term, (auto___aux_43 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_43 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_43_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_159 _x1 _x2 H); Intros.
  Apply (rem_158 epsilon_m__aux_43_pknows _x1 _x2); Tauto.
Defined.

Remark rem_161 : (_big_m:term)(auto___aux_43 _big_m) -> (auto_knows _big_m). (* Induct. *)
Proof.
   Fix epsilon_m__aux_43_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_160 epsilon_m__aux_43_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_162 : (_big_m,_big_x:term)(auto___aux_59 _big_x) -> (auto___aux_43 _big_m) -> (auto___aux_32 _big_x) -> (auto_knows _big_m). (* Split. *)
Proof.
   Intros _big_m _big_x.
  Cut (auto___aux_43 _big_m) -> (auto_knows _big_m). Tauto.
  Exact (rem_161 _big_m).
Defined.

Remark rem_163 : (_big_m,_big_x:term)(auto___aux_43 _big_m) -> (auto___aux_32 _big_x) -> (auto___aux_5 (__aux__vars5 _big_x)) -> (auto_knows _big_m). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1 H2. Intro H.
  Elim (rem_83 _big_x H); Intros.
  Apply (rem_162 _big_m _big_x); Tauto.
Defined.

Remark rem_164 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (auto___aux_20 nil) -> (auto_knows nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nil_1; Assumption. Defined.

Remark rem_165 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto_knows _x1) -> (auto_knows (s _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_s_1; Assumption. Defined.

Remark rem_166 : forall _x1 : term, (auto___aux_20 (s _x1)) -> (or_1
    (auto_knows _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_167 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_20 (s _x1)) -> (auto_knows (s _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1. Intro H.
  Elim (rem_166 _x1 H); Intros.
  Apply (rem_165 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1); Tauto.
Defined.

Remark rem_168 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (auto___aux_20 intruder) -> (auto_knows intruder). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_intruder_1; Assumption. Defined.

Remark rem_169 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows (cons _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_cons_1; Assumption. Defined.

Remark rem_170 : forall _x1 _x2 : term, (auto___aux_20 (cons _x1 _x2)) -> (or_1
    ((auto_knows _x1) /\ (auto_knows _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_171 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_20 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_170 _x1 _x2 H); Intros.
  Apply (rem_169 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
Defined.

Remark rem_172 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto_knows (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_1; Assumption. Defined.

Remark rem_173 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto_knows (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_2; Assumption. Defined.

Remark rem_174 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto_knows (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_3; Assumption. Defined.

Remark rem_175 : forall _x1 _x2 : term, (auto___aux_20 (key _x1 _x2)) -> (or_3
    ((auto___aux_56 _x1) /\ (auto___aux_57 _x2))
    ((auto___aux_58 _x1) /\ (auto___aux_59 _x2))
    ((auto___aux_54 _x1) /\ (auto___aux_55 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_3_intro_1; Tauto.
  Intros. Apply or_3_intro_2; Tauto.
  Intros. Apply or_3_intro_3; Tauto.
Qed.

Remark rem_176 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_20 (key _x1 _x2)) -> (auto_knows (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_175 _x1 _x2 H); Intros.
  Apply (rem_172 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_173 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_174 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
Defined.

Remark rem_177 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (auto___aux_20 bob) -> (auto_knows bob). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_bob_1; Assumption. Defined.

Remark rem_178 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_17 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_1; Assumption. Defined.

Remark rem_179 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_2; Assumption. Defined.

Remark rem_180 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_3; Assumption. Defined.

Remark rem_181 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_4; Assumption. Defined.

Remark rem_182 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_50 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_5; Assumption. Defined.

Remark rem_183 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_53 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_6; Assumption. Defined.

Remark rem_184 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_17 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_7; Assumption. Defined.

Remark rem_185 : forall _x1 _x2 : term, (auto___aux_20 (crypt _x1 _x2)) -> (or_7
    ((auto___aux_16 _x1) /\ (auto___aux_17 _x2))
    ((auto___aux_43 _x1) /\ (auto___aux_29 _x2))
    ((auto_knows _x1) /\ (auto_knows _x2))
    ((auto___aux_28 _x1) /\ (auto___aux_29 _x2))
    ((auto___aux_49 _x1) /\ (auto___aux_50 _x2))
    ((auto___aux_52 _x1) /\ (auto___aux_53 _x2))
    ((auto___aux_36 _x1) /\ (auto___aux_17 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_7_intro_1; Tauto.
  Intros. Apply or_7_intro_2; Tauto.
  Intros. Apply or_7_intro_3; Tauto.
  Intros. Apply or_7_intro_4; Tauto.
  Intros. Apply or_7_intro_5; Tauto.
  Intros. Apply or_7_intro_6; Tauto.
  Intros. Apply or_7_intro_7; Tauto.
Qed.

Remark rem_186 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_20 (crypt _x1 _x2)) -> (auto_knows (crypt _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_185 _x1 _x2 H); Intros.
  Apply (rem_178 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_179 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_180 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_181 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_182 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_183 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_184 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
Defined.

Remark rem_187 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (auto___aux_20 server) -> (auto_knows server). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_server_1; Assumption. Defined.

Remark rem_188 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nonceb_1; Assumption. Defined.

Remark rem_189 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nonceb_2; Assumption. Defined.

Remark rem_190 : forall _x1 _x2 _x3 : term, (auto___aux_20 (nonceb _x1 _x2 _x3)) -> (or_2
    ((auto___aux_22 _x1) /\ (auto___aux_31 _x2) /\ (auto___aux_20 _x3))
    ((auto___aux_39 _x1) /\ (auto___aux_31 _x2) /\ (auto___aux_20 _x3))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_2_intro_1; Tauto.
  Intros. Apply or_2_intro_2; Tauto.
Qed.

Remark rem_191 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_20 (nonceb _x1 _x2 _x3)) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_190 _x1 _x2 _x3 H); Intros.
  Apply (rem_188 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2 _x3); Tauto.
  Apply (rem_189 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2 _x3); Tauto.
Defined.

Remark rem_192 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (auto___aux_20 alice) -> (auto_knows alice). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_alice_1; Assumption. Defined.

Remark rem_193 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_13 _x1) -> (auto_knows (noncea _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_noncea_1; Assumption. Defined.

Remark rem_194 : forall _x1 : term, (auto___aux_20 (noncea _x1)) -> (or_1
    (auto___aux_13 _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_195 : (forall _x:term, (auto___aux_20 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_20 (noncea _x1)) -> (auto_knows (noncea _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1. Intro H.
  Elim (rem_194 _x1 H); Intros.
  Apply (rem_193 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1); Tauto.
Defined.

Remark rem_196 : (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_20 _x1) -> (auto_knows _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Fix epsilon_m__aux_20_pknows 1.
  Intro _x. Case _x; First [Exact (rem_164 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows )
  |  Intros _x1; Exact (rem_167 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1)
  | Exact (rem_168 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows )
  |  Intros _x1 _x2; Exact (rem_171 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2)
  |  Intros _x1 _x2; Exact (rem_176 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2)
  | Exact (rem_177 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows )
  |  Intros _x1 _x2; Exact (rem_186 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2)
  | Exact (rem_187 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows )
  |  Intros _x1 _x2 _x3; Exact (rem_191 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2 _x3)
  | Exact (rem_192 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows )
  |  Intros _x1; Exact (rem_195 epsilon_m__aux_20_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_197 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_41 _x) -> (auto___aux_59 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_41 (old_session _x1 _x2 _x3)) -> (auto___aux_59 (old_session _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_59_old_session_1; Assumption. Defined.

Remark rem_198 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (_x2:term)(auto___aux_41 _x2) -> (auto___aux_59 _x2). (* Induct. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows. Fix epsilon_m__aux_41_p__aux_59 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_197 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows epsilon_m__aux_41_p__aux_59 _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_199 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_24 _x) -> (auto___aux_58 _x)) -> (auto___aux_24 sym) -> (auto___aux_58 sym). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_58_sym_1; Assumption. Defined.

Remark rem_200 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_24 _x1) -> (auto___aux_58 _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows. Fix epsilon_m__aux_24_p__aux_58 1.
  Intro _x. Case _x; First [Exact (rem_199 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows epsilon_m__aux_24_p__aux_58 )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_201 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_41 _x2) -> ((auto___aux_58 _x1) /\ (auto___aux_59 _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows. Intros _x1 _x2. Intros A1 A2.
  Cut (auto___aux_59 _x2). 2:Apply (rem_198 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows _x2); Assumption.
  Cut (auto___aux_58 _x1). 2:Apply (rem_200 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows _x1); Assumption.
  Tauto.
Defined.

Remark rem_202 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_41 _x2) -> ((auto___aux_56 _x1) /\ (auto___aux_57 _x2)) \/ ((auto___aux_58 _x1) /\ (auto___aux_59 _x2)) \/ ((auto___aux_54 _x1) /\ (auto___aux_55 _x2)) \/ False. (* Prove a smaller disjunction. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_201 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows _x1 _x2 A1 A2); Tauto.
Defined.

Remark rem_203 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_41 _x2) -> (auto_knows (key _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_202 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows _x1 _x2 A1 A2). Clear epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows A1 A2. Intros. Apply trans_knows_key_1; Tauto.
  Intro H; Case H; Clear H. Clear epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows A1 A2. Intros. Apply trans_knows_key_2; Tauto.
  Intro H; Case H; Clear H. Clear epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows A1 A2. Intros. Apply trans_knows_key_3; Tauto.
  Clear epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows A1 A2. Tauto.
Defined.

Remark rem_204 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_39 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_39 (key _x1 _x2)) -> (auto_knows (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_154 _x1 _x2 H); Intros.
  Apply (rem_203 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows _x1 _x2); Tauto.
Defined.

Remark rem_205 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_39 _x1) -> (auto_knows _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Fix epsilon_m__aux_39_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_204 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_39_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_206 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_42 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_40 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_2; Assumption. Defined.

Remark rem_207 : forall _x1 _x2 : term, (auto___aux_42 (crypt _x1 _x2)) -> (or_1
    ((auto___aux_43 _x1) /\ (auto___aux_29 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_208 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_42 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_40 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_42 (crypt _x1 _x2)) -> (auto_knows (crypt _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_42_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_207 _x1 _x2 H); Intros.
  Apply (rem_206 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_42_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows _x1 _x2); Tauto.
Defined.

Remark rem_209 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_40 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_42 _x1) -> (auto_knows _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows. Fix epsilon_m__aux_42_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_208 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_42_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_210 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_27 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_40 _x) -> (auto_knows _x)) -> (auto___aux_27 nil) -> (auto_knows nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nil_1; Assumption. Defined.

Remark rem_211 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_40 _x) -> (auto_knows _x)) -> (_x2:term)(auto___aux_27 _x2) -> (auto_knows _x2). (* Induct. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows. Fix epsilon_m__aux_27_pknows 1.
  Intro _x. Case _x; First [Exact (rem_210 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_27_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_212 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_40 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_42 _x1) -> (auto___aux_27 _x2) -> ((auto_knows _x1) /\ (auto_knows _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows. Intros _x1 _x2. Intros A1 A2.
  Cut (auto_knows _x1). 2:Apply (rem_209 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows _x1); Assumption.
  Cut (auto_knows _x2). 2:Apply (rem_211 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows _x2); Assumption.
  Tauto.
Defined.

Remark rem_213 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_40 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_42 _x1) -> (auto___aux_27 _x2) -> (auto_knows (cons _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_212 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows _x1 _x2 A1 A2). Clear epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows A1 A2. Intros. Apply trans_knows_cons_1; Tauto.
  Clear epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows A1 A2. Tauto.
Defined.

Remark rem_214 : forall _x1 _x2 : term, (auto___aux_40 (cons _x1 _x2)) -> (or_1
    ((auto___aux_42 _x1) /\ (auto___aux_27 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_215 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_40 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_40 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_214 _x1 _x2 H); Intros.
  Apply (rem_213 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows _x1 _x2); Tauto.
Defined.

Remark rem_216 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (_x2:term)(auto___aux_40 _x2) -> (auto_knows _x2). (* Induct. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Fix epsilon_m__aux_40_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_215 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows epsilon_m__aux_40_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_217 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_39 _x1) -> (auto___aux_40 _x2) -> ((auto_knows _x1) /\ (auto_knows _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intros A1 A2.
  Cut (auto_knows _x1). 2:Apply (rem_205 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1); Assumption.
  Cut (auto_knows _x2). 2:Apply (rem_216 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x2); Assumption.
  Tauto.
Defined.

Remark rem_218 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_39 _x1) -> (auto___aux_40 _x2) -> (auto_knows (cons _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_217 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2 A1 A2). Clear epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows A1 A2. Intros. Apply trans_knows_cons_1; Tauto.
  Clear epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows A1 A2. Tauto.
Defined.

Remark rem_219 : forall _x1 _x2 : term, (auto___aux_38 (cons _x1 _x2)) -> (or_1
    ((auto___aux_39 _x1) /\ (auto___aux_40 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_220 : (forall _x:term, (auto___aux_38 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_38 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_219 _x1 _x2 H); Intros.
  Apply (rem_218 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
Defined.

Remark rem_221 : (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (_x2:term)(auto___aux_38 _x2) -> (auto_knows _x2). (* Induct. *)
Proof.
   Intros epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Fix epsilon_m__aux_38_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_220 epsilon_m__aux_38_pknows epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_222 : (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_20 _x1) -> (auto___aux_38 _x2) -> ((auto_knows _x1) /\ (auto_knows _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intros A1 A2.
  Cut (auto_knows _x1). 2:Apply (rem_196 epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1); Assumption.
  Cut (auto_knows _x2). 2:Apply (rem_221 epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x2); Assumption.
  Tauto.
Defined.

Remark rem_223 : (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_20 _x1) -> (auto___aux_38 _x2) -> (auto_knows (cons _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_222 epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2 A1 A2). Clear epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows A1 A2. Intros. Apply trans_knows_cons_1; Tauto.
  Clear epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows A1 A2. Tauto.
Defined.

Remark rem_224 : forall _x1 _x2 : term, (auto___aux_37 (cons _x1 _x2)) -> (or_1
    ((auto___aux_20 _x1) /\ (auto___aux_38 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_225 : (forall _x:term, (auto___aux_37 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_37 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_224 _x1 _x2 H); Intros.
  Apply (rem_223 epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
Defined.

Remark rem_226 : (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (_x2:term)(auto___aux_37 _x2) -> (auto_knows _x2). (* Induct. *)
Proof.
   Intros epsilon_m__aux_36_pknows. Fix epsilon_m__aux_37_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_225 epsilon_m__aux_37_pknows epsilon_m__aux_36_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_227 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (auto___aux_18 nil) -> (auto_knows nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nil_1; Assumption. Defined.

Remark rem_228 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto_knows _x1) -> (auto_knows (s _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_s_1; Assumption. Defined.

Remark rem_229 : forall _x1 : term, (auto___aux_18 (s _x1)) -> (or_1
    (auto_knows _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_230 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_18 (s _x1)) -> (auto_knows (s _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows. Intros _x1. Intro H.
  Elim (rem_229 _x1 H); Intros.
  Apply (rem_228 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1); Tauto.
Defined.

Remark rem_231 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (auto___aux_18 intruder) -> (auto_knows intruder). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_intruder_1; Assumption. Defined.

Remark rem_232 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows (cons _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_cons_1; Assumption. Defined.

Remark rem_233 : forall _x1 _x2 : term, (auto___aux_18 (cons _x1 _x2)) -> (or_1
    ((auto_knows _x1) /\ (auto_knows _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_234 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_18 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_233 _x1 _x2 H); Intros.
  Apply (rem_232 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
Defined.

Remark rem_235 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto_knows (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_1; Assumption. Defined.

Remark rem_236 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto_knows (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_2; Assumption. Defined.

Remark rem_237 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto_knows (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_3; Assumption. Defined.

Remark rem_238 : forall _x1 _x2 : term, (auto___aux_18 (key _x1 _x2)) -> (or_3
    ((auto___aux_56 _x1) /\ (auto___aux_57 _x2))
    ((auto___aux_58 _x1) /\ (auto___aux_59 _x2))
    ((auto___aux_54 _x1) /\ (auto___aux_55 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_3_intro_1; Tauto.
  Intros. Apply or_3_intro_2; Tauto.
  Intros. Apply or_3_intro_3; Tauto.
Qed.

Remark rem_239 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_18 (key _x1 _x2)) -> (auto_knows (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_238 _x1 _x2 H); Intros.
  Apply (rem_235 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_236 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_237 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
Defined.

Remark rem_240 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (auto___aux_18 bob) -> (auto_knows bob). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_bob_1; Assumption. Defined.

Remark rem_241 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_17 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_1; Assumption. Defined.

Remark rem_242 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_2; Assumption. Defined.

Remark rem_243 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_3; Assumption. Defined.

Remark rem_244 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_4; Assumption. Defined.

Remark rem_245 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_50 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_5; Assumption. Defined.

Remark rem_246 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_53 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_6; Assumption. Defined.

Remark rem_247 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_17 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_7; Assumption. Defined.

Remark rem_248 : forall _x1 _x2 : term, (auto___aux_18 (crypt _x1 _x2)) -> (or_7
    ((auto___aux_16 _x1) /\ (auto___aux_17 _x2))
    ((auto___aux_43 _x1) /\ (auto___aux_29 _x2))
    ((auto_knows _x1) /\ (auto_knows _x2))
    ((auto___aux_28 _x1) /\ (auto___aux_29 _x2))
    ((auto___aux_49 _x1) /\ (auto___aux_50 _x2))
    ((auto___aux_52 _x1) /\ (auto___aux_53 _x2))
    ((auto___aux_36 _x1) /\ (auto___aux_17 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_7_intro_1; Tauto.
  Intros. Apply or_7_intro_2; Tauto.
  Intros. Apply or_7_intro_3; Tauto.
  Intros. Apply or_7_intro_4; Tauto.
  Intros. Apply or_7_intro_5; Tauto.
  Intros. Apply or_7_intro_6; Tauto.
  Intros. Apply or_7_intro_7; Tauto.
Qed.

Remark rem_249 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_18 (crypt _x1 _x2)) -> (auto_knows (crypt _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_248 _x1 _x2 H); Intros.
  Apply (rem_241 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_242 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_243 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_244 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_245 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_246 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
  Apply (rem_247 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2); Tauto.
Defined.

Remark rem_250 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (auto___aux_18 server) -> (auto_knows server). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_server_1; Assumption. Defined.

Remark rem_251 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nonceb_1; Assumption. Defined.

Remark rem_252 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nonceb_2; Assumption. Defined.

Remark rem_253 : forall _x1 _x2 _x3 : term, (auto___aux_18 (nonceb _x1 _x2 _x3)) -> (or_2
    ((auto___aux_22 _x1) /\ (auto___aux_31 _x2) /\ (auto___aux_20 _x3))
    ((auto___aux_39 _x1) /\ (auto___aux_31 _x2) /\ (auto___aux_20 _x3))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_2_intro_1; Tauto.
  Intros. Apply or_2_intro_2; Tauto.
Qed.

Remark rem_254 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_18 (nonceb _x1 _x2 _x3)) -> (auto_knows (nonceb _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_253 _x1 _x2 _x3 H); Intros.
  Apply (rem_251 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2 _x3); Tauto.
  Apply (rem_252 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2 _x3); Tauto.
Defined.

Remark rem_255 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> (auto___aux_18 alice) -> (auto_knows alice). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_alice_1; Assumption. Defined.

Remark rem_256 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_13 _x1) -> (auto_knows (noncea _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_noncea_1; Assumption. Defined.

Remark rem_257 : forall _x1 : term, (auto___aux_18 (noncea _x1)) -> (or_1
    (auto___aux_13 _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_258 : (forall _x:term, (auto___aux_18 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_18 (noncea _x1)) -> (auto_knows (noncea _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows. Intros _x1. Intro H.
  Elim (rem_257 _x1 H); Intros.
  Apply (rem_256 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1); Tauto.
Defined.

Remark rem_259 : (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_18 _x1) -> (auto_knows _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_36_pknows. Fix epsilon_m__aux_18_pknows 1.
  Intro _x. Case _x; First [Exact (rem_227 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows )
  |  Intros _x1; Exact (rem_230 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1)
  | Exact (rem_231 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows )
  |  Intros _x1 _x2; Exact (rem_234 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2)
  |  Intros _x1 _x2; Exact (rem_239 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2)
  | Exact (rem_240 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows )
  |  Intros _x1 _x2; Exact (rem_249 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2)
  | Exact (rem_250 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows )
  |  Intros _x1 _x2 _x3; Exact (rem_254 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1 _x2 _x3)
  | Exact (rem_255 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows )
  |  Intros _x1; Exact (rem_258 epsilon_m__aux_18_pknows epsilon_m__aux_36_pknows _x1)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_260 : (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_18 _x1) -> (auto___aux_37 _x2) -> ((auto_knows _x1) /\ (auto_knows _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_36_pknows. Intros _x1 _x2. Intros A1 A2.
  Cut (auto_knows _x2). 2:Apply (rem_226 epsilon_m__aux_36_pknows _x2); Assumption.
  Cut (auto_knows _x1). 2:Apply (rem_259 epsilon_m__aux_36_pknows _x1); Assumption.
  Tauto.
Defined.

Remark rem_261 : (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_18 _x1) -> (auto___aux_37 _x2) -> (auto_knows (cons _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_36_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_260 epsilon_m__aux_36_pknows _x1 _x2 A1 A2). Clear epsilon_m__aux_36_pknows A1 A2. Intros. Apply trans_knows_cons_1; Tauto.
  Clear epsilon_m__aux_36_pknows A1 A2. Tauto.
Defined.

Remark rem_262 : forall _x1 _x2 : term, (auto___aux_36 (cons _x1 _x2)) -> (or_1
    ((auto___aux_18 _x1) /\ (auto___aux_37 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_263 : (forall _x:term, (auto___aux_36 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_36 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_36_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_262 _x1 _x2 H); Intros.
  Apply (rem_261 epsilon_m__aux_36_pknows _x1 _x2); Tauto.
Defined.

Remark rem_264 : (_big_m:term)(auto___aux_36 _big_m) -> (auto_knows _big_m). (* Induct. *)
Proof.
   Fix epsilon_m__aux_36_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_263 epsilon_m__aux_36_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_265 : (_big_m,_big_x:term)(auto___aux_59 _big_x) -> (auto___aux_36 _big_m) -> (auto___aux_35 _big_x) -> (auto_knows _big_m). (* Split. *)
Proof.
   Intros _big_m _big_x.
  Cut (auto___aux_36 _big_m) -> (auto_knows _big_m). Tauto.
  Exact (rem_264 _big_m).
Defined.

Remark rem_266 : (_big_m,_big_x:term)(auto___aux_36 _big_m) -> (auto___aux_35 _big_x) -> (auto___aux_5 (__aux__vars5 _big_x)) -> (auto_knows _big_m). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1 H2. Intro H.
  Elim (rem_83 _big_x H); Intros.
  Apply (rem_265 _big_m _big_x); Tauto.
Defined.

Remark rem_267 : (forall _x:term, (auto___aux_35 _x) -> (auto___aux_59 _x) -> False) -> forall _x1 _x2 : term, (auto___aux_31 _x1) -> (auto___aux_33 _x2) -> (auto___aux_59 (cons _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_35_m__aux_59. Intros _x1 _x2. Intros H1 H2. Intro H.
  Elim (rem_100 _x1 _x2 H); Intros.
Defined.

Remark rem_268 : forall _x1 _x2 : term, (auto___aux_35 (cons _x1 _x2)) -> (or_1
    ((auto___aux_31 _x1) /\ (auto___aux_33 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_269 : (forall _x:term, (auto___aux_35 _x) -> (auto___aux_59 _x) -> False) -> forall _x1 _x2 : term, (auto___aux_35 (cons _x1 _x2)) -> (auto___aux_59 (cons _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_35_m__aux_59. Intros _x1 _x2. Intro H.
  Elim (rem_268 _x1 _x2 H); Intros.
  Apply (rem_267 epsilon_m__aux_35_m__aux_59 _x1 _x2); Tauto.
Defined.

Remark rem_270 : (_big_x:term)(auto___aux_35 _big_x) -> (auto___aux_59 _big_x) -> False. (* Induct. *)
Proof.
   Fix epsilon_m__aux_35_m__aux_59 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_269 epsilon_m__aux_35_m__aux_59 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_271 : (_big_m,_big_x:term)(auto___aux_59 _big_x) -> (auto___aux_16 _big_m) -> (auto___aux_35 _big_x) -> (auto_knows _big_m). (* Split. *)
Proof.
   Intros _big_m _big_x.
  Cut (auto___aux_35 _big_x) -> (auto___aux_59 _big_x) -> False. Tauto.
  Exact (rem_270 _big_x).
Defined.

Remark rem_272 : (_big_m,_big_x:term)(auto___aux_16 _big_m) -> (auto___aux_35 _big_x) -> (auto___aux_5 (__aux__vars5 _big_x)) -> (auto_knows _big_m). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1 H2. Intro H.
  Elim (rem_83 _big_x H); Intros.
  Apply (rem_271 _big_m _big_x); Tauto.
Defined.

Remark rem_273 : forall _x1 _x2 : term, (auto___aux_6 (__aux__vars6 _x1 _x2)) -> (or_7
    ((auto___aux_49 _x1) /\ (auto___aux_25 _x2))
    ((auto_knows _x1) /\ (auto___aux_59 _x2))
    ((auto___aux_52 _x1) /\ (auto___aux_25 _x2) /\ (auto___aux_47 _x2))
    ((auto___aux_28 _x1) /\ (auto___aux_32 _x2))
    ((auto___aux_43 _x1) /\ (auto___aux_32 _x2))
    ((auto___aux_36 _x1) /\ (auto___aux_35 _x2))
    ((auto___aux_16 _x1) /\ (auto___aux_35 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_7_intro_1; Tauto.
  Intros. Apply or_7_intro_2; Tauto.
  Intros. Apply or_7_intro_3; Tauto.
  Intros. Apply or_7_intro_4; Tauto.
  Intros. Apply or_7_intro_5; Tauto.
  Intros. Apply or_7_intro_6; Tauto.
  Intros. Apply or_7_intro_7; Tauto.
Qed.

Remark rem_274 : (_big_m,_big_x:term)(auto___aux_6 (__aux__vars6 _big_m _big_x)) -> (auto___aux_5 (__aux__vars5 _big_x)) -> (auto_knows _big_m). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intro H.
  Elim (rem_273 _big_m _big_x H); Intros.
  Apply (rem_84 _big_m _big_x); Tauto.
  Apply (rem_85 _big_m _big_x); Tauto.
  Apply (rem_99 _big_m _big_x); Tauto.
  Apply (rem_106 _big_m _big_x); Tauto.
  Apply (rem_163 _big_m _big_x); Tauto.
  Apply (rem_266 _big_m _big_x); Tauto.
  Apply (rem_272 _big_m _big_x); Tauto.
Defined.

Remark rem_275 : (_big_m,_big_x:term)(auto___aux_24 sym) -> (auto___aux_35 _big_x) -> (auto___aux_16 _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_6___aux__vars6_7; Assumption. Defined.

Remark rem_276 : (_big_m,_big_x:term)(auto___aux_16 _big_m) -> (auto___aux_17 (key sym _big_x)) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1. Intro H.
  Elim (rem_14 sym _big_x H); Intros.
  Apply (rem_275 _big_m _big_x); Tauto.
Defined.

Remark rem_277 : (_big_m,_big_x:term)(auto___aux_24 sym) -> (auto___aux_32 _big_x) -> (auto___aux_43 _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_6___aux__vars6_5; Assumption. Defined.

Remark rem_278 : (_big_m,_big_x:term)(auto___aux_43 _big_m) -> (auto___aux_29 (key sym _big_x)) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1. Intro H.
  Elim (rem_17 sym _big_x H); Intros.
  Apply (rem_277 _big_m _big_x); Tauto.
Defined.

Remark rem_279 : (auto___aux_56 sym) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_280 : (_big_m,_big_x:term)(auto___aux_56 sym) -> (auto___aux_57 _big_x) -> (auto_knows _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intro H.
  Elim (rem_279 H); Intros.
Defined.

Remark rem_281 : (_big_m,_big_x:term)(auto___aux_58 sym) -> (auto___aux_59 _big_x) -> (auto_knows _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_6___aux__vars6_2; Assumption. Defined.

Remark rem_282 : (auto___aux_54 sym) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_283 : (_big_m,_big_x:term)(auto___aux_54 sym) -> (auto_knows _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intro H.
  Elim (rem_282 H); Intros.
Defined.

Remark rem_284 : (_big_m,_big_x:term)(auto___aux_54 sym) -> (auto___aux_55 _big_x) -> (auto_knows _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom by universal clause. *)
Proof.
   Intros _big_m _big_x. Intros. Apply (rem_283 _big_m _big_x); Assumption.
Defined.

Remark rem_285 : (_big_m,_big_x:term)(auto_knows _big_m) -> (auto_knows (key sym _big_x)) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1. Intro H.
  Elim (rem_24 sym _big_x H); Intros.
  Apply (rem_280 _big_m _big_x); Tauto.
  Apply (rem_281 _big_m _big_x); Tauto.
  Apply (rem_284 _big_m _big_x); Tauto.
Defined.

Remark rem_286 : (_big_m,_big_x:term)(auto___aux_24 sym) -> (auto___aux_32 _big_x) -> (auto___aux_28 _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_6___aux__vars6_4; Assumption. Defined.

Remark rem_287 : (_big_m,_big_x:term)(auto___aux_28 _big_m) -> (auto___aux_29 (key sym _big_x)) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1. Intro H.
  Elim (rem_17 sym _big_x H); Intros.
  Apply (rem_286 _big_m _big_x); Tauto.
Defined.

Remark rem_288 : (_big_m,_big_x:term)(auto___aux_24 sym) -> (auto___aux_25 _big_x) -> (auto___aux_49 _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_6___aux__vars6_1; Assumption. Defined.

Remark rem_289 : (forall _x:term, (auto___aux_41 _x) -> (auto___aux_59 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_41 (old_session _x1 _x2 _x3)) -> (auto___aux_59 (old_session _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_59_old_session_1; Assumption. Defined.

Remark rem_290 : (_big_x:term)(auto___aux_41 _big_x) -> (auto___aux_59 _big_x). (* Induct. *)
Proof.
   Fix epsilon_m__aux_41_p__aux_59 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_289 epsilon_m__aux_41_p__aux_59 _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_291 : (_big_m:term)(auto___aux_49 _big_m) -> (auto_knows _big_m). (* Induct. *)
Proof.
   Fix epsilon_m__aux_49_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_80 epsilon_m__aux_49_pknows _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_292 : (_big_m,_big_x:term)(auto___aux_41 _big_x) -> (auto___aux_49 _big_m) -> ((auto_knows _big_m) /\ (auto___aux_59 _big_x)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros _big_m _big_x. Intros A1 A2.
  Cut (auto___aux_59 _big_x). 2:Apply (rem_290 _big_x); Assumption.
  Cut (auto_knows _big_m). 2:Apply (rem_291 _big_m); Assumption.
  Tauto.
Defined.

Remark rem_293 : (_big_m,_big_x:term)(auto___aux_41 _big_x) -> (auto___aux_49 _big_m) -> ((auto___aux_49 _big_m) /\ (auto___aux_25 _big_x)) \/ ((auto_knows _big_m) /\ (auto___aux_59 _big_x)) \/ ((auto___aux_52 _big_m) /\ (auto___aux_25 _big_x) /\ (auto___aux_47 _big_x)) \/ ((auto___aux_28 _big_m) /\ (auto___aux_32 _big_x)) \/ ((auto___aux_43 _big_m) /\ (auto___aux_32 _big_x)) \/ ((auto___aux_36 _big_m) /\ (auto___aux_35 _big_x)) \/ ((auto___aux_16 _big_m) /\ (auto___aux_35 _big_x)) \/ False. (* Prove a smaller disjunction. *)
Proof.
   Intros _big_m _big_x. Intros A1 A2.
  Case (rem_292 _big_m _big_x A1 A2); Tauto.
Defined.

Remark rem_294 : (_big_m,_big_x:term)(auto___aux_41 _big_x) -> (auto___aux_49 _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Deduce positive atom. *)
Proof.
   Intros _big_m _big_x. Intros A1 A2.
  Case (rem_293 _big_m _big_x A1 A2). Clear A1 A2. Intros. Apply trans___aux_6___aux__vars6_1; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2. Intros. Apply trans___aux_6___aux__vars6_2; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2. Intros. Apply trans___aux_6___aux__vars6_3; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2. Intros. Apply trans___aux_6___aux__vars6_4; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2. Intros. Apply trans___aux_6___aux__vars6_5; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2. Intros. Apply trans___aux_6___aux__vars6_6; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2. Intros. Apply trans___aux_6___aux__vars6_7; Tauto.
  Clear A1 A2. Tauto.
Defined.

Remark rem_295 : (auto___aux_24 sym) -> (or_1
    True).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_296 : (_big_m,_big_x:term)(auto___aux_24 sym) -> (auto___aux_41 _big_x) -> (auto___aux_49 _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intro H.
  Elim (rem_295 H); Intros.
  Apply (rem_294 _big_m _big_x); Tauto.
Defined.

Remark rem_297 : (_big_m,_big_x:term)(auto___aux_49 _big_m) -> (auto___aux_50 (key sym _big_x)) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1. Intro H.
  Elim (rem_30 sym _big_x H); Intros.
  Apply (rem_288 _big_m _big_x); Tauto.
  Apply (rem_296 _big_m _big_x); Tauto.
Defined.

Remark rem_298 : (_big_m,_big_x:term)(auto___aux_24 sym) -> (auto___aux_46 sym) -> (auto___aux_25 _big_x) -> (auto___aux_47 _big_x) -> (auto___aux_52 _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_6___aux__vars6_3; Assumption. Defined.

Remark rem_299 : (_big_m,_big_x:term)(auto___aux_52 _big_m) -> (auto___aux_53 (key sym _big_x)) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1. Intro H.
  Elim (rem_33 sym _big_x H); Intros.
  Apply (rem_298 _big_m _big_x); Tauto.
Defined.

Remark rem_300 : (_big_m,_big_x:term)(auto___aux_24 sym) -> (auto___aux_35 _big_x) -> (auto___aux_36 _big_m) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_6___aux__vars6_6; Assumption. Defined.

Remark rem_301 : (_big_m,_big_x:term)(auto___aux_36 _big_m) -> (auto___aux_17 (key sym _big_x)) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intros H1. Intro H.
  Elim (rem_14 sym _big_x H); Intros.
  Apply (rem_300 _big_m _big_x); Tauto.
Defined.

Remark rem_302 : (_big_m,_big_x:term)(auto_knows (crypt _big_m (key sym _big_x))) -> (auto___aux_6 (__aux__vars6 _big_m _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_m _big_x. Intro H.
  Elim (rem_37 _big_m (key sym _big_x) H); Intros.
  Apply (rem_276 _big_m _big_x); Tauto.
  Apply (rem_278 _big_m _big_x); Tauto.
  Apply (rem_285 _big_m _big_x); Tauto.
  Apply (rem_287 _big_m _big_x); Tauto.
  Apply (rem_297 _big_m _big_x); Tauto.
  Apply (rem_299 _big_m _big_x); Tauto.
  Apply (rem_301 _big_m _big_x); Tauto.
Defined.

Remark rem_303 : (_big_m,_big_x:term)(auto___aux_5 (__aux__vars5 _big_x)) -> (auto_knows (crypt _big_m (key sym _big_x))) -> (auto_knows _big_m). (* Cut. *)
Proof.
   Intros _big_m _big_x. Intros. Apply (rem_274 _big_m _big_x). Apply (rem_302 _big_m _big_x); Assumption.
   Assumption.
Qed.

Remark rem_304 : (_big_x:term)(auto___aux_56 sym) -> (auto___aux_57 _big_x) -> (auto___aux_5 (__aux__vars5 _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_x. Intro H.
  Elim (rem_279 H); Intros.
Defined.

Remark rem_305 : (_big_x:term)(auto___aux_58 sym) -> (auto___aux_59 _big_x) -> (auto___aux_5 (__aux__vars5 _big_x)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_5___aux__vars5_1; Assumption. Defined.

Remark rem_306 : (_big_x:term)(auto___aux_54 sym) -> (auto___aux_5 (__aux__vars5 _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_x. Intro H.
  Elim (rem_282 H); Intros.
Defined.

Remark rem_307 : (_big_x:term)(auto___aux_54 sym) -> (auto___aux_55 _big_x) -> (auto___aux_5 (__aux__vars5 _big_x)). (* Eliminate negative atom by universal clause. *)
Proof.
   Intros _big_x. Intros. Apply (rem_306 _big_x); Assumption.
Defined.

Remark rem_308 : (_big_x:term)(auto_knows (key sym _big_x)) -> (auto___aux_5 (__aux__vars5 _big_x)). (* Eliminate negative atom. *)
Proof.
   Intros _big_x. Intro H.
  Elim (rem_24 sym _big_x H); Intros.
  Apply (rem_304 _big_x); Tauto.
  Apply (rem_305 _big_x); Tauto.
  Apply (rem_307 _big_x); Tauto.
Defined.

Remark rem_309 : (_big_m,_big_x:term)(auto_knows (key sym _big_x)) -> (auto_knows (crypt _big_m (key sym _big_x))) -> (auto_knows _big_m). (* Cut. *)
Proof.
   Intros _big_m _big_x. Intros. Apply (rem_303 _big_m _big_x). Apply (rem_308 _big_x); Assumption.
   Assumption.
Qed.

Definition infer_intruder_can_decrypt_if_has_symmetric_key := rem_309.

Remark rem_310 : (_big_m:term)(auto_knows _big_m) -> (auto_knows (s _big_m)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_s_1; Assumption. Defined.

Definition infer_intruder_can_compute_successors := rem_310.

Remark rem_311 : (_big_m:term)(auto_knows _big_m) -> (auto_knows _big_m). (* Tautology. *)
Proof. Tauto. Defined.

Remark rem_312 : forall _x1 : term, (auto_knows (s _x1)) -> (or_1
    (auto_knows _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_313 : (_big_m:term)(auto_knows (s _big_m)) -> (auto_knows _big_m). (* Eliminate negative atom. *)
Proof.
   Intros _big_m. Intro H.
  Elim (rem_312 _big_m H); Intros.
  Apply (rem_311 _big_m); Tauto.
Defined.

Definition infer_intruder_can_compute_predecessors := rem_313.

Remark rem_314 : (forall _x:term, (auto___aux_7 _x) -> (auto_knows _x)) -> (auto___aux_7 alice) -> (auto_knows alice). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_alice_1; Assumption. Defined.

Remark rem_315 : (__x1:term)(auto___aux_7 __x1) -> (auto_knows __x1). (* Induct. *)
Proof.
   Fix epsilon_m__aux_7_pknows 1.
  Intro _x. Case _x; First [Exact (rem_314 epsilon_m__aux_7_pknows )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_316 : (forall _x:term, (auto___aux_10 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_12 _x) -> (auto_knows _x)) -> (auto___aux_12 nil) -> (auto_knows nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_nil_1; Assumption. Defined.

Remark rem_317 : (forall _x:term, (auto___aux_10 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> (_x2:term)(auto___aux_12 _x2) -> (auto_knows _x2). (* Induct. *)
Proof.
   Intros epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows. Fix epsilon_m__aux_12_pknows 1.
  Intro _x. Case _x; First [Exact (rem_316 epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows epsilon_m__aux_12_pknows )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_318 : (forall _x:term, (auto___aux_10 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_11 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_13 _x1) -> (auto_knows (noncea _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_noncea_1; Assumption. Defined.

Remark rem_319 : forall _x1 : term, (auto___aux_11 (noncea _x1)) -> (or_1
    (auto___aux_13 _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_320 : (forall _x:term, (auto___aux_10 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_11 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_11 (noncea _x1)) -> (auto_knows (noncea _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_10_pknows epsilon_m__aux_11_pknows epsilon_m__aux_8_pknows. Intros _x1. Intro H.
  Elim (rem_319 _x1 H); Intros.
  Apply (rem_318 epsilon_m__aux_10_pknows epsilon_m__aux_11_pknows epsilon_m__aux_8_pknows _x1); Tauto.
Defined.

Remark rem_321 : (forall _x:term, (auto___aux_10 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_11 _x1) -> (auto_knows _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows. Fix epsilon_m__aux_11_pknows 1.
  Intro _x. Case _x; First [ Intros _x1; Exact (rem_320 epsilon_m__aux_10_pknows epsilon_m__aux_11_pknows epsilon_m__aux_8_pknows _x1)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_322 : (forall _x:term, (auto___aux_10 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_11 _x1) -> (auto___aux_12 _x2) -> ((auto_knows _x1) /\ (auto_knows _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows. Intros _x1 _x2. Intros A1 A2.
  Cut (auto_knows _x2). 2:Apply (rem_317 epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows _x2); Assumption.
  Cut (auto_knows _x1). 2:Apply (rem_321 epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows _x1); Assumption.
  Tauto.
Defined.

Remark rem_323 : (forall _x:term, (auto___aux_10 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_11 _x1) -> (auto___aux_12 _x2) -> (auto_knows (cons _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_322 epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows _x1 _x2 A1 A2). Clear epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows A1 A2. Intros. Apply trans_knows_cons_1; Tauto.
  Clear epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows A1 A2. Tauto.
Defined.

Remark rem_324 : forall _x1 _x2 : term, (auto___aux_10 (cons _x1 _x2)) -> (or_1
    ((auto___aux_11 _x1) /\ (auto___aux_12 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_325 : (forall _x:term, (auto___aux_10 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_10 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_324 _x1 _x2 H); Intros.
  Apply (rem_323 epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows _x1 _x2); Tauto.
Defined.

Remark rem_326 : (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> (_x2:term)(auto___aux_10 _x2) -> (auto_knows _x2). (* Induct. *)
Proof.
   Intros epsilon_m__aux_8_pknows. Fix epsilon_m__aux_10_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_325 epsilon_m__aux_10_pknows epsilon_m__aux_8_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_327 : (forall _x:term, (auto___aux_9 _x) -> (auto_knows _x)) -> (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> (auto___aux_9 bob) -> (auto_knows bob). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_bob_1; Assumption. Defined.

Remark rem_328 : (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> forall _x1 : term, (auto___aux_9 _x1) -> (auto_knows _x1). (* Induct. *)
Proof.
   Intros epsilon_m__aux_8_pknows. Fix epsilon_m__aux_9_pknows 1.
  Intro _x. Case _x; First [Exact (rem_327 epsilon_m__aux_9_pknows epsilon_m__aux_8_pknows )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_329 : (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_9 _x1) -> (auto___aux_10 _x2) -> ((auto_knows _x1) /\ (auto_knows _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_m__aux_8_pknows. Intros _x1 _x2. Intros A1 A2.
  Cut (auto_knows _x2). 2:Apply (rem_326 epsilon_m__aux_8_pknows _x2); Assumption.
  Cut (auto_knows _x1). 2:Apply (rem_328 epsilon_m__aux_8_pknows _x1); Assumption.
  Tauto.
Defined.

Remark rem_330 : (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_9 _x1) -> (auto___aux_10 _x2) -> (auto_knows (cons _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_m__aux_8_pknows. Intros _x1 _x2. Intros A1 A2.
  Case (rem_329 epsilon_m__aux_8_pknows _x1 _x2 A1 A2). Clear epsilon_m__aux_8_pknows A1 A2. Intros. Apply trans_knows_cons_1; Tauto.
  Clear epsilon_m__aux_8_pknows A1 A2. Tauto.
Defined.

Remark rem_331 : forall _x1 _x2 : term, (auto___aux_8 (cons _x1 _x2)) -> (or_1
    ((auto___aux_9 _x1) /\ (auto___aux_10 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_332 : (forall _x:term, (auto___aux_8 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_8 (cons _x1 _x2)) -> (auto_knows (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_8_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_331 _x1 _x2 H); Intros.
  Apply (rem_330 epsilon_m__aux_8_pknows _x1 _x2); Tauto.
Defined.

Remark rem_333 : (__x2:term)(auto___aux_8 __x2) -> (auto_knows __x2). (* Induct. *)
Proof.
   Fix epsilon_m__aux_8_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_332 epsilon_m__aux_8_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_334 : (__x1,__x2:term)(auto___aux_7 __x1) -> (auto___aux_8 __x2) -> ((auto_knows __x1) /\ (auto_knows __x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros __x1 __x2. Intros A1 A2.
  Cut (auto_knows __x1). 2:Apply (rem_315 __x1); Assumption.
  Cut (auto_knows __x2). 2:Apply (rem_333 __x2); Assumption.
  Tauto.
Defined.

Remark rem_335 : (__x1,__x2:term)(auto___aux_7 __x1) -> (auto___aux_8 __x2) -> (auto_knows (cons __x1 __x2)). (* Deduce positive atom. *)
Proof.
   Intros __x1 __x2. Intros A1 A2.
  Case (rem_334 __x1 __x2 A1 A2). Clear A1 A2. Intros. Apply trans_knows_cons_1; Tauto.
  Clear A1 A2. Tauto.
Defined.

Remark rem_336 : (auto___aux_7 alice). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_7_alice_1; Assumption. Defined.

Remark rem_337 : (__x3,__x4:term)(auto___aux_9 __x3) -> (auto___aux_10 __x4) -> (auto___aux_8 (cons __x3 __x4)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_8_cons_1; Assumption. Defined.

Remark rem_338 : (auto___aux_9 bob). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_9_bob_1; Assumption. Defined.

Remark rem_339 : (__x5,__x6:term)(auto___aux_11 __x5) -> (auto___aux_12 __x6) -> (auto___aux_10 (cons __x5 __x6)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_10_cons_1; Assumption. Defined.

Remark rem_340 : (__x7:term)(auto___aux_13 __x7) -> (auto___aux_11 (noncea __x7)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_11_noncea_1; Assumption. Defined.

Remark rem_341 : (__x8,__x9:term)(auto___aux_7 __x8) -> (auto___aux_14 __x9) -> (auto___aux_13 (cons __x8 __x9)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_13_cons_1; Assumption. Defined.

Remark rem_342 : (__x10,__x11:term)(auto___aux_9 __x10) -> (auto___aux_12 __x11) -> (auto___aux_14 (cons __x10 __x11)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_14_cons_1; Assumption. Defined.

Remark rem_343 : (auto___aux_12 nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_12_nil_1; Assumption. Defined.

Remark rem_344 : (auto___aux_14 (cons bob nil)). (* Resolve. *)
Proof.
   Intros. Apply rem_342.
  Apply rem_338; Assumption.
  Apply rem_343; Assumption.
Qed.

Remark rem_345 : (auto___aux_13 (cons alice (cons bob nil))). (* Resolve. *)
Proof.
   Intros. Apply rem_341.
  Apply rem_336; Assumption.
  Apply rem_344; Assumption.
Qed.

Remark rem_346 : (auto___aux_11 (noncea (cons alice (cons bob nil)))). (* Resolve. *)
Proof.
   Intros. Apply rem_340.
  Apply rem_345; Assumption.
Qed.

Remark rem_347 : (auto___aux_10 (cons (noncea (cons alice (cons bob nil))) nil)). (* Resolve. *)
Proof.
   Intros. Apply rem_339.
  Apply rem_346; Assumption.
  Apply rem_343; Assumption.
Qed.

Remark rem_348 : (auto___aux_8 (cons bob (cons (noncea (cons alice (cons bob nil))) nil))). (* Resolve. *)
Proof.
   Intros. Apply rem_337.
  Apply rem_338; Assumption.
  Apply rem_347; Assumption.
Qed.

Remark rem_349 : (auto_knows (cons alice (cons bob (cons (noncea (cons alice (cons bob nil))) nil)))). (* Resolve. *)
Proof.
   Intros. Apply rem_335.
  Apply rem_336; Assumption.
  Apply rem_348; Assumption.
Qed.

Definition infer_alice_sends_message_1_to_server := rem_349.

Remark rem_350 : (__x12,__x13:term)(auto___aux_16 __x12) -> (auto___aux_17 __x13) -> (auto_knows (crypt __x12 __x13)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_1; Assumption. Defined.

Remark rem_351 : (__x14,__x15:term)(auto___aux_18 __x14) -> (auto___aux_19 __x15) -> (auto___aux_16 (cons __x14 __x15)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_16_cons_1; Assumption. Defined.

Remark rem_352 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> (auto_knows nil) -> (auto___aux_18 nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_nil_1; Assumption. Defined.

Remark rem_353 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 : term, (auto_knows _x1) -> (auto___aux_18 (s _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_s_1; Assumption. Defined.

Remark rem_354 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 : term, (auto_knows (s _x1)) -> (auto___aux_18 (s _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_18. Intros _x1. Intro H.
  Elim (rem_312 _x1 H); Intros.
  Apply (rem_353 epsilon_mknows_p__aux_18 _x1); Tauto.
Defined.

Remark rem_355 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> (auto_knows intruder) -> (auto___aux_18 intruder). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_intruder_1; Assumption. Defined.

Remark rem_356 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_18 (cons _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_cons_1; Assumption. Defined.

Remark rem_357 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto_knows (cons _x1 _x2)) -> (auto___aux_18 (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_18. Intros _x1 _x2. Intro H.
  Elim (rem_3 _x1 _x2 H); Intros.
  Apply (rem_356 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
Defined.

Remark rem_358 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto___aux_18 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_key_1; Assumption. Defined.

Remark rem_359 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto___aux_18 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_key_2; Assumption. Defined.

Remark rem_360 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto___aux_18 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_key_3; Assumption. Defined.

Remark rem_361 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto_knows (key _x1 _x2)) -> (auto___aux_18 (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_18. Intros _x1 _x2. Intro H.
  Elim (rem_24 _x1 _x2 H); Intros.
  Apply (rem_358 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
  Apply (rem_359 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
  Apply (rem_360 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
Defined.

Remark rem_362 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> (auto_knows bob) -> (auto___aux_18 bob). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_bob_1; Assumption. Defined.

Remark rem_363 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_17 _x2) -> (auto___aux_18 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_crypt_1; Assumption. Defined.

Remark rem_364 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto___aux_18 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_crypt_2; Assumption. Defined.

Remark rem_365 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_18 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_crypt_3; Assumption. Defined.

Remark rem_366 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto___aux_18 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_crypt_4; Assumption. Defined.

Remark rem_367 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_50 _x2) -> (auto___aux_18 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_crypt_5; Assumption. Defined.

Remark rem_368 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_53 _x2) -> (auto___aux_18 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_crypt_6; Assumption. Defined.

Remark rem_369 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_17 _x2) -> (auto___aux_18 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_crypt_7; Assumption. Defined.

Remark rem_370 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 : term, (auto_knows (crypt _x1 _x2)) -> (auto___aux_18 (crypt _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_18. Intros _x1 _x2. Intro H.
  Elim (rem_37 _x1 _x2 H); Intros.
  Apply (rem_363 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
  Apply (rem_364 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
  Apply (rem_365 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
  Apply (rem_366 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
  Apply (rem_367 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
  Apply (rem_368 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
  Apply (rem_369 epsilon_mknows_p__aux_18 _x1 _x2); Tauto.
Defined.

Remark rem_371 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> (auto_knows server) -> (auto___aux_18 server). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_server_1; Assumption. Defined.

Remark rem_372 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_18 (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_nonceb_1; Assumption. Defined.

Remark rem_373 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_18 (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_nonceb_2; Assumption. Defined.

Remark rem_374 : forall _x1 _x2 _x3 : term, (auto_knows (nonceb _x1 _x2 _x3)) -> (or_2
    ((auto___aux_22 _x1) /\ (auto___aux_31 _x2) /\ (auto___aux_20 _x3))
    ((auto___aux_39 _x1) /\ (auto___aux_31 _x2) /\ (auto___aux_20 _x3))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_2_intro_1; Tauto.
  Intros. Apply or_2_intro_2; Tauto.
Qed.

Remark rem_375 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 _x2 _x3 : term, (auto_knows (nonceb _x1 _x2 _x3)) -> (auto___aux_18 (nonceb _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_18. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_374 _x1 _x2 _x3 H); Intros.
  Apply (rem_372 epsilon_mknows_p__aux_18 _x1 _x2 _x3); Tauto.
  Apply (rem_373 epsilon_mknows_p__aux_18 _x1 _x2 _x3); Tauto.
Defined.

Remark rem_376 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> (auto_knows alice) -> (auto___aux_18 alice). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_alice_1; Assumption. Defined.

Remark rem_377 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 : term, (auto___aux_13 _x1) -> (auto___aux_18 (noncea _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_18_noncea_1; Assumption. Defined.

Remark rem_378 : forall _x1 : term, (auto_knows (noncea _x1)) -> (or_1
    (auto___aux_13 _x1)).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_379 : (forall _x:term, (auto_knows _x) -> (auto___aux_18 _x)) -> forall _x1 : term, (auto_knows (noncea _x1)) -> (auto___aux_18 (noncea _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_18. Intros _x1. Intro H.
  Elim (rem_378 _x1 H); Intros.
  Apply (rem_377 epsilon_mknows_p__aux_18 _x1); Tauto.
Defined.

Remark rem_380 : (_big_na:term)(auto_knows _big_na) -> (auto___aux_18 _big_na). (* Induct. *)
Proof.
   Fix epsilon_mknows_p__aux_18 1.
  Intro _x. Case _x; First [Exact (rem_352 epsilon_mknows_p__aux_18 )
  |  Intros _x1; Exact (rem_354 epsilon_mknows_p__aux_18 _x1)
  | Exact (rem_355 epsilon_mknows_p__aux_18 )
  |  Intros _x1 _x2; Exact (rem_357 epsilon_mknows_p__aux_18 _x1 _x2)
  |  Intros _x1 _x2; Exact (rem_361 epsilon_mknows_p__aux_18 _x1 _x2)
  | Exact (rem_362 epsilon_mknows_p__aux_18 )
  |  Intros _x1 _x2; Exact (rem_370 epsilon_mknows_p__aux_18 _x1 _x2)
  | Exact (rem_371 epsilon_mknows_p__aux_18 )
  |  Intros _x1 _x2 _x3; Exact (rem_375 epsilon_mknows_p__aux_18 _x1 _x2 _x3)
  | Exact (rem_376 epsilon_mknows_p__aux_18 )
  |  Intros _x1; Exact (rem_379 epsilon_mknows_p__aux_18 _x1)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_381 : (_big_a,_big_b,_big_na:term)(auto_knows _big_a) -> (auto_knows _big_b) -> (auto_knows _big_na) -> (auto___aux_18 _big_na). (* Split. *)
Proof.
   Intros _big_a _big_b _big_na.
  Cut (auto_knows _big_na) -> (auto___aux_18 _big_na). Tauto.
  Exact (rem_380 _big_na).
Defined.

Remark rem_382 : forall _x1 _x2 _x3 : term, (auto___aux_15 (__aux__vars7 _x1 _x2 _x3)) -> (or_1
    ((auto_knows _x1) /\ (auto_knows _x2) /\ (auto_knows _x3))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_383 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_18 _big_na). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_na. Intro H.
  Elim (rem_382 _big_a _big_b _big_na H); Intros.
  Apply (rem_381 _big_a _big_b _big_na); Tauto.
Defined.

Remark rem_384 : (__x16,__x17:term)(auto___aux_20 __x16) -> (auto___aux_21 __x17) -> (auto___aux_19 (cons __x16 __x17)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_19_cons_1; Assumption. Defined.

Remark rem_385 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> (auto_knows nil) -> (auto___aux_20 nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_nil_1; Assumption. Defined.

Remark rem_386 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 : term, (auto_knows _x1) -> (auto___aux_20 (s _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_s_1; Assumption. Defined.

Remark rem_387 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 : term, (auto_knows (s _x1)) -> (auto___aux_20 (s _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_20. Intros _x1. Intro H.
  Elim (rem_312 _x1 H); Intros.
  Apply (rem_386 epsilon_mknows_p__aux_20 _x1); Tauto.
Defined.

Remark rem_388 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> (auto_knows intruder) -> (auto___aux_20 intruder). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_intruder_1; Assumption. Defined.

Remark rem_389 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_20 (cons _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_cons_1; Assumption. Defined.

Remark rem_390 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto_knows (cons _x1 _x2)) -> (auto___aux_20 (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_20. Intros _x1 _x2. Intro H.
  Elim (rem_3 _x1 _x2 H); Intros.
  Apply (rem_389 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
Defined.

Remark rem_391 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto___aux_20 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_key_1; Assumption. Defined.

Remark rem_392 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto___aux_20 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_key_2; Assumption. Defined.

Remark rem_393 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto___aux_20 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_key_3; Assumption. Defined.

Remark rem_394 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto_knows (key _x1 _x2)) -> (auto___aux_20 (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_20. Intros _x1 _x2. Intro H.
  Elim (rem_24 _x1 _x2 H); Intros.
  Apply (rem_391 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
  Apply (rem_392 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
  Apply (rem_393 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
Defined.

Remark rem_395 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> (auto_knows bob) -> (auto___aux_20 bob). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_bob_1; Assumption. Defined.

Remark rem_396 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_17 _x2) -> (auto___aux_20 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_crypt_1; Assumption. Defined.

Remark rem_397 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto___aux_20 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_crypt_2; Assumption. Defined.

Remark rem_398 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_20 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_crypt_3; Assumption. Defined.

Remark rem_399 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto___aux_20 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_crypt_4; Assumption. Defined.

Remark rem_400 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_50 _x2) -> (auto___aux_20 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_crypt_5; Assumption. Defined.

Remark rem_401 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_53 _x2) -> (auto___aux_20 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_crypt_6; Assumption. Defined.

Remark rem_402 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_17 _x2) -> (auto___aux_20 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_crypt_7; Assumption. Defined.

Remark rem_403 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 : term, (auto_knows (crypt _x1 _x2)) -> (auto___aux_20 (crypt _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_20. Intros _x1 _x2. Intro H.
  Elim (rem_37 _x1 _x2 H); Intros.
  Apply (rem_396 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
  Apply (rem_397 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
  Apply (rem_398 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
  Apply (rem_399 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
  Apply (rem_400 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
  Apply (rem_401 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
  Apply (rem_402 epsilon_mknows_p__aux_20 _x1 _x2); Tauto.
Defined.

Remark rem_404 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> (auto_knows server) -> (auto___aux_20 server). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_server_1; Assumption. Defined.

Remark rem_405 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_20 (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_nonceb_1; Assumption. Defined.

Remark rem_406 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_20 (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_nonceb_2; Assumption. Defined.

Remark rem_407 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 _x2 _x3 : term, (auto_knows (nonceb _x1 _x2 _x3)) -> (auto___aux_20 (nonceb _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_20. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_374 _x1 _x2 _x3 H); Intros.
  Apply (rem_405 epsilon_mknows_p__aux_20 _x1 _x2 _x3); Tauto.
  Apply (rem_406 epsilon_mknows_p__aux_20 _x1 _x2 _x3); Tauto.
Defined.

Remark rem_408 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> (auto_knows alice) -> (auto___aux_20 alice). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_alice_1; Assumption. Defined.

Remark rem_409 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 : term, (auto___aux_13 _x1) -> (auto___aux_20 (noncea _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_20_noncea_1; Assumption. Defined.

Remark rem_410 : (forall _x:term, (auto_knows _x) -> (auto___aux_20 _x)) -> forall _x1 : term, (auto_knows (noncea _x1)) -> (auto___aux_20 (noncea _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_20. Intros _x1. Intro H.
  Elim (rem_378 _x1 H); Intros.
  Apply (rem_409 epsilon_mknows_p__aux_20 _x1); Tauto.
Defined.

Remark rem_411 : (_big_b:term)(auto_knows _big_b) -> (auto___aux_20 _big_b). (* Induct. *)
Proof.
   Fix epsilon_mknows_p__aux_20 1.
  Intro _x. Case _x; First [Exact (rem_385 epsilon_mknows_p__aux_20 )
  |  Intros _x1; Exact (rem_387 epsilon_mknows_p__aux_20 _x1)
  | Exact (rem_388 epsilon_mknows_p__aux_20 )
  |  Intros _x1 _x2; Exact (rem_390 epsilon_mknows_p__aux_20 _x1 _x2)
  |  Intros _x1 _x2; Exact (rem_394 epsilon_mknows_p__aux_20 _x1 _x2)
  | Exact (rem_395 epsilon_mknows_p__aux_20 )
  |  Intros _x1 _x2; Exact (rem_403 epsilon_mknows_p__aux_20 _x1 _x2)
  | Exact (rem_404 epsilon_mknows_p__aux_20 )
  |  Intros _x1 _x2 _x3; Exact (rem_407 epsilon_mknows_p__aux_20 _x1 _x2 _x3)
  | Exact (rem_408 epsilon_mknows_p__aux_20 )
  |  Intros _x1; Exact (rem_410 epsilon_mknows_p__aux_20 _x1)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_412 : (_big_a,_big_b,_big_na:term)(auto_knows _big_a) -> (auto_knows _big_b) -> (auto_knows _big_na) -> (auto___aux_20 _big_b). (* Split. *)
Proof.
   Intros _big_a _big_b _big_na.
  Cut (auto_knows _big_b) -> (auto___aux_20 _big_b). Tauto.
  Exact (rem_411 _big_b).
Defined.

Remark rem_413 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_20 _big_b). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_na. Intro H.
  Elim (rem_382 _big_a _big_b _big_na H); Intros.
  Apply (rem_412 _big_a _big_b _big_na); Tauto.
Defined.

Remark rem_414 : (__x18,__x19:term)(auto___aux_22 __x18) -> (auto___aux_23 __x19) -> (auto___aux_21 (cons __x18 __x19)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_21_cons_1; Assumption. Defined.

Remark rem_415 : (__x20,__x21:term)(auto___aux_24 __x20) -> (auto___aux_25 __x21) -> (auto___aux_22 (key __x20 __x21)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_22_key_1; Assumption. Defined.

Remark rem_416 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_24 sym). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_24_sym_1; Assumption. Defined.

Remark rem_417 : (_big_a,_big_b,_big_na:term)(auto_knows _big_a) -> (auto_knows _big_b) -> (auto_knows _big_na) -> (auto___aux_25 (current_session _big_a _big_b _big_na)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_25_current_session_1; Assumption. Defined.

Remark rem_418 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_25 (current_session _big_a _big_b _big_na)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_na. Intro H.
  Elim (rem_382 _big_a _big_b _big_na H); Intros.
  Apply (rem_417 _big_a _big_b _big_na); Tauto.
Defined.

Remark rem_419 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_22 (key sym (current_session _big_a _big_b _big_na))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_415.
  Apply (rem_416 _big_a _big_b _big_na); Assumption.
  Apply (rem_418 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_420 : (__x22,__x23:term)(auto___aux_26 __x22) -> (auto___aux_27 __x23) -> (auto___aux_23 (cons __x22 __x23)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_23_cons_1; Assumption. Defined.

Remark rem_421 : (__x24,__x25:term)(auto___aux_28 __x24) -> (auto___aux_29 __x25) -> (auto___aux_26 (crypt __x24 __x25)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_26_crypt_1; Assumption. Defined.

Remark rem_422 : (__x26,__x27:term)(auto___aux_22 __x26) -> (auto___aux_30 __x27) -> (auto___aux_28 (cons __x26 __x27)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_28_cons_1; Assumption. Defined.

Remark rem_423 : (__x28,__x29:term)(auto___aux_24 __x28) -> (auto___aux_25 __x29) -> (auto___aux_22 (key __x28 __x29)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_22_key_1; Assumption. Defined.

Remark rem_424 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_22 (key sym (current_session _big_a _big_b _big_na))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_423.
  Apply (rem_416 _big_a _big_b _big_na); Assumption.
  Apply (rem_418 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_425 : (__x30,__x31:term)(auto___aux_31 __x30) -> (auto___aux_27 __x31) -> (auto___aux_30 (cons __x30 __x31)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_30_cons_1; Assumption. Defined.

Remark rem_426 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> (auto_knows nil) -> (auto___aux_31 nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_nil_1; Assumption. Defined.

Remark rem_427 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 : term, (auto_knows _x1) -> (auto___aux_31 (s _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_s_1; Assumption. Defined.

Remark rem_428 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 : term, (auto_knows (s _x1)) -> (auto___aux_31 (s _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_31. Intros _x1. Intro H.
  Elim (rem_312 _x1 H); Intros.
  Apply (rem_427 epsilon_mknows_p__aux_31 _x1); Tauto.
Defined.

Remark rem_429 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> (auto_knows intruder) -> (auto___aux_31 intruder). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_intruder_1; Assumption. Defined.

Remark rem_430 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_31 (cons _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_cons_1; Assumption. Defined.

Remark rem_431 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto_knows (cons _x1 _x2)) -> (auto___aux_31 (cons _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_31. Intros _x1 _x2. Intro H.
  Elim (rem_3 _x1 _x2 H); Intros.
  Apply (rem_430 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
Defined.

Remark rem_432 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto___aux_31 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_key_1; Assumption. Defined.

Remark rem_433 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto___aux_31 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_key_2; Assumption. Defined.

Remark rem_434 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto___aux_31 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_key_3; Assumption. Defined.

Remark rem_435 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto_knows (key _x1 _x2)) -> (auto___aux_31 (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_31. Intros _x1 _x2. Intro H.
  Elim (rem_24 _x1 _x2 H); Intros.
  Apply (rem_432 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
  Apply (rem_433 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
  Apply (rem_434 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
Defined.

Remark rem_436 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> (auto_knows bob) -> (auto___aux_31 bob). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_bob_1; Assumption. Defined.

Remark rem_437 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto___aux_16 _x1) -> (auto___aux_17 _x2) -> (auto___aux_31 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_crypt_1; Assumption. Defined.

Remark rem_438 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto___aux_31 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_crypt_2; Assumption. Defined.

Remark rem_439 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto___aux_31 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_crypt_3; Assumption. Defined.

Remark rem_440 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto___aux_31 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_crypt_4; Assumption. Defined.

Remark rem_441 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto___aux_49 _x1) -> (auto___aux_50 _x2) -> (auto___aux_31 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_crypt_5; Assumption. Defined.

Remark rem_442 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto___aux_52 _x1) -> (auto___aux_53 _x2) -> (auto___aux_31 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_crypt_6; Assumption. Defined.

Remark rem_443 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto___aux_36 _x1) -> (auto___aux_17 _x2) -> (auto___aux_31 (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_crypt_7; Assumption. Defined.

Remark rem_444 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 : term, (auto_knows (crypt _x1 _x2)) -> (auto___aux_31 (crypt _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_31. Intros _x1 _x2. Intro H.
  Elim (rem_37 _x1 _x2 H); Intros.
  Apply (rem_437 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
  Apply (rem_438 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
  Apply (rem_439 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
  Apply (rem_440 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
  Apply (rem_441 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
  Apply (rem_442 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
  Apply (rem_443 epsilon_mknows_p__aux_31 _x1 _x2); Tauto.
Defined.

Remark rem_445 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> (auto_knows server) -> (auto___aux_31 server). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_server_1; Assumption. Defined.

Remark rem_446 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_22 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_31 (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_nonceb_1; Assumption. Defined.

Remark rem_447 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_39 _x1) -> (auto___aux_31 _x2) -> (auto___aux_20 _x3) -> (auto___aux_31 (nonceb _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_nonceb_2; Assumption. Defined.

Remark rem_448 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 _x2 _x3 : term, (auto_knows (nonceb _x1 _x2 _x3)) -> (auto___aux_31 (nonceb _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_31. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_374 _x1 _x2 _x3 H); Intros.
  Apply (rem_446 epsilon_mknows_p__aux_31 _x1 _x2 _x3); Tauto.
  Apply (rem_447 epsilon_mknows_p__aux_31 _x1 _x2 _x3); Tauto.
Defined.

Remark rem_449 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> (auto_knows alice) -> (auto___aux_31 alice). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_alice_1; Assumption. Defined.

Remark rem_450 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 : term, (auto___aux_13 _x1) -> (auto___aux_31 (noncea _x1)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_31_noncea_1; Assumption. Defined.

Remark rem_451 : (forall _x:term, (auto_knows _x) -> (auto___aux_31 _x)) -> forall _x1 : term, (auto_knows (noncea _x1)) -> (auto___aux_31 (noncea _x1)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_mknows_p__aux_31. Intros _x1. Intro H.
  Elim (rem_378 _x1 H); Intros.
  Apply (rem_450 epsilon_mknows_p__aux_31 _x1); Tauto.
Defined.

Remark rem_452 : (_big_a:term)(auto_knows _big_a) -> (auto___aux_31 _big_a). (* Induct. *)
Proof.
   Fix epsilon_mknows_p__aux_31 1.
  Intro _x. Case _x; First [Exact (rem_426 epsilon_mknows_p__aux_31 )
  |  Intros _x1; Exact (rem_428 epsilon_mknows_p__aux_31 _x1)
  | Exact (rem_429 epsilon_mknows_p__aux_31 )
  |  Intros _x1 _x2; Exact (rem_431 epsilon_mknows_p__aux_31 _x1 _x2)
  |  Intros _x1 _x2; Exact (rem_435 epsilon_mknows_p__aux_31 _x1 _x2)
  | Exact (rem_436 epsilon_mknows_p__aux_31 )
  |  Intros _x1 _x2; Exact (rem_444 epsilon_mknows_p__aux_31 _x1 _x2)
  | Exact (rem_445 epsilon_mknows_p__aux_31 )
  |  Intros _x1 _x2 _x3; Exact (rem_448 epsilon_mknows_p__aux_31 _x1 _x2 _x3)
  | Exact (rem_449 epsilon_mknows_p__aux_31 )
  |  Intros _x1; Exact (rem_451 epsilon_mknows_p__aux_31 _x1)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_453 : (_big_a,_big_b,_big_na:term)(auto_knows _big_a) -> (auto_knows _big_b) -> (auto_knows _big_na) -> (auto___aux_31 _big_a). (* Split. *)
Proof.
   Intros _big_a _big_b _big_na.
  Cut (auto_knows _big_a) -> (auto___aux_31 _big_a). Tauto.
  Exact (rem_452 _big_a).
Defined.

Remark rem_454 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_31 _big_a). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_na. Intro H.
  Elim (rem_382 _big_a _big_b _big_na H); Intros.
  Apply (rem_453 _big_a _big_b _big_na); Tauto.
Defined.

Remark rem_455 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_27 nil). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_27_nil_1; Assumption. Defined.

Remark rem_456 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_30 (cons _big_a nil)). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_425.
  Apply (rem_454 _big_a _big_b _big_na); Assumption.
  Apply (rem_455 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_457 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_28 (cons (key sym (current_session _big_a _big_b _big_na)) (cons _big_a nil))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_422.
  Apply (rem_424 _big_a _big_b _big_na); Assumption.
  Apply (rem_456 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_458 : (__x32,__x33:term)(auto___aux_24 __x32) -> (auto___aux_32 __x33) -> (auto___aux_29 (key __x32 __x33)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_29_key_1; Assumption. Defined.

Remark rem_459 : (__x34,__x35:term)(auto___aux_20 __x34) -> (auto___aux_33 __x35) -> (auto___aux_32 (cons __x34 __x35)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_32_cons_1; Assumption. Defined.

Remark rem_460 : (__x36,__x37:term)(auto___aux_34 __x36) -> (auto___aux_27 __x37) -> (auto___aux_33 (cons __x36 __x37)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_33_cons_1; Assumption. Defined.

Remark rem_461 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_34 server). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_34_server_1; Assumption. Defined.

Remark rem_462 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_33 (cons server nil)). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_460.
  Apply (rem_461 _big_a _big_b _big_na); Assumption.
  Apply (rem_455 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_463 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_32 (cons _big_b (cons server nil))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_459.
  Apply (rem_413 _big_a _big_b _big_na); Assumption.
  Apply (rem_462 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_464 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_29 (key sym (cons _big_b (cons server nil)))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_458.
  Apply (rem_416 _big_a _big_b _big_na); Assumption.
  Apply (rem_463 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_465 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_26 (crypt (cons (key sym (current_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil))))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_421.
  Apply (rem_457 _big_a _big_b _big_na); Assumption.
  Apply (rem_464 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_466 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_23 (cons (crypt (cons (key sym (current_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil)). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_420.
  Apply (rem_465 _big_a _big_b _big_na); Assumption.
  Apply (rem_455 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_467 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_21 (cons (key sym (current_session _big_a _big_b _big_na)) (cons (crypt (cons (key sym (current_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_414.
  Apply (rem_419 _big_a _big_b _big_na); Assumption.
  Apply (rem_466 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_468 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_19 (cons _big_b (cons (key sym (current_session _big_a _big_b _big_na)) (cons (crypt (cons (key sym (current_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil)))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_384.
  Apply (rem_413 _big_a _big_b _big_na); Assumption.
  Apply (rem_467 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_469 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_16 (cons _big_na (cons _big_b (cons (key sym (current_session _big_a _big_b _big_na)) (cons (crypt (cons (key sym (current_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil))))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_351.
  Apply (rem_383 _big_a _big_b _big_na); Assumption.
  Apply (rem_468 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_470 : (__x38,__x39:term)(auto___aux_24 __x38) -> (auto___aux_35 __x39) -> (auto___aux_17 (key __x38 __x39)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_17_key_1; Assumption. Defined.

Remark rem_471 : (__x40,__x41:term)(auto___aux_31 __x40) -> (auto___aux_33 __x41) -> (auto___aux_35 (cons __x40 __x41)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_35_cons_1; Assumption. Defined.

Remark rem_472 : (__x42,__x43:term)(auto___aux_34 __x42) -> (auto___aux_27 __x43) -> (auto___aux_33 (cons __x42 __x43)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_33_cons_1; Assumption. Defined.

Remark rem_473 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_33 (cons server nil)). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_472.
  Apply (rem_461 _big_a _big_b _big_na); Assumption.
  Apply (rem_455 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_474 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_35 (cons _big_a (cons server nil))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_471.
  Apply (rem_454 _big_a _big_b _big_na); Assumption.
  Apply (rem_473 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_475 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_17 (key sym (cons _big_a (cons server nil)))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_470.
  Apply (rem_416 _big_a _big_b _big_na); Assumption.
  Apply (rem_474 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_476 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto_knows (crypt (cons _big_na (cons _big_b (cons (key sym (current_session _big_a _big_b _big_na)) (cons (crypt (cons (key sym (current_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil)))) (key sym (cons _big_a (cons server nil))))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_350.
  Apply (rem_469 _big_a _big_b _big_na); Assumption.
  Apply (rem_475 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_477 : (_big_a,_big_b,_big_na:term)(auto_knows _big_na) -> (auto_knows nil) -> (auto_knows _big_b) -> (auto_knows _big_a) -> (auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_15___aux__vars7_1; Assumption. Defined.

Remark rem_478 : (_big_a,_big_b,_big_na:term)(auto_knows _big_b) -> (auto_knows (cons _big_na nil)) -> (auto_knows _big_a) -> (auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_na. Intros H1. Intro H.
  Elim (rem_3 _big_na nil H); Intros.
  Apply (rem_477 _big_a _big_b _big_na); Tauto.
Defined.

Remark rem_479 : (_big_a,_big_b,_big_na:term)(auto_knows _big_a) -> (auto_knows (cons _big_b (cons _big_na nil))) -> (auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_na. Intros H1. Intro H.
  Elim (rem_3 _big_b (cons _big_na nil) H); Intros.
  Apply (rem_478 _big_a _big_b _big_na); Tauto.
Defined.

Remark rem_480 : (_big_a,_big_b,_big_na:term)(auto_knows (cons _big_a (cons _big_b (cons _big_na nil)))) -> (auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_na. Intro H.
  Elim (rem_3 _big_a (cons _big_b (cons _big_na nil)) H); Intros.
  Apply (rem_479 _big_a _big_b _big_na); Tauto.
Defined.

Remark rem_481 : (_big_a,_big_b,_big_na:term)(auto_knows (cons _big_a (cons _big_b (cons _big_na nil)))) -> (auto_knows (crypt (cons _big_na (cons _big_b (cons (key sym (current_session _big_a _big_b _big_na)) (cons (crypt (cons (key sym (current_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil)))) (key sym (cons _big_a (cons server nil))))). (* Cut. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply (rem_476 _big_a _big_b _big_na). Apply (rem_480 _big_a _big_b _big_na); Assumption.
Qed.

Definition infer_server_answers_A_with_encrypted_packet := rem_481.

Remark rem_482 : (__x44,__x45:term)(auto___aux_36 __x44) -> (auto___aux_17 __x45) -> (auto_knows (crypt __x44 __x45)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_7; Assumption. Defined.

Remark rem_483 : (__x46,__x47:term)(auto___aux_18 __x46) -> (auto___aux_37 __x47) -> (auto___aux_36 (cons __x46 __x47)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_36_cons_1; Assumption. Defined.

Remark rem_484 : (__x48,__x49:term)(auto___aux_20 __x48) -> (auto___aux_38 __x49) -> (auto___aux_37 (cons __x48 __x49)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_37_cons_1; Assumption. Defined.

Remark rem_485 : (__x50,__x51:term)(auto___aux_39 __x50) -> (auto___aux_40 __x51) -> (auto___aux_38 (cons __x50 __x51)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_38_cons_1; Assumption. Defined.

Remark rem_486 : (__x52,__x53:term)(auto___aux_24 __x52) -> (auto___aux_41 __x53) -> (auto___aux_39 (key __x52 __x53)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_39_key_1; Assumption. Defined.

Remark rem_487 : (_big_a,_big_b,_big_na:term)(auto_knows _big_a) -> (auto_knows _big_b) -> (auto_knows _big_na) -> (auto___aux_41 (old_session _big_a _big_b _big_na)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_41_old_session_1; Assumption. Defined.

Remark rem_488 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_41 (old_session _big_a _big_b _big_na)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_na. Intro H.
  Elim (rem_382 _big_a _big_b _big_na H); Intros.
  Apply (rem_487 _big_a _big_b _big_na); Tauto.
Defined.

Remark rem_489 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_39 (key sym (old_session _big_a _big_b _big_na))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_486.
  Apply (rem_416 _big_a _big_b _big_na); Assumption.
  Apply (rem_488 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_490 : (__x54,__x55:term)(auto___aux_42 __x54) -> (auto___aux_27 __x55) -> (auto___aux_40 (cons __x54 __x55)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_40_cons_1; Assumption. Defined.

Remark rem_491 : (__x56,__x57:term)(auto___aux_43 __x56) -> (auto___aux_29 __x57) -> (auto___aux_42 (crypt __x56 __x57)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_42_crypt_1; Assumption. Defined.

Remark rem_492 : (__x58,__x59:term)(auto___aux_39 __x58) -> (auto___aux_30 __x59) -> (auto___aux_43 (cons __x58 __x59)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_43_cons_1; Assumption. Defined.

Remark rem_493 : (__x60,__x61:term)(auto___aux_24 __x60) -> (auto___aux_41 __x61) -> (auto___aux_39 (key __x60 __x61)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_39_key_1; Assumption. Defined.

Remark rem_494 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_39 (key sym (old_session _big_a _big_b _big_na))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_493.
  Apply (rem_416 _big_a _big_b _big_na); Assumption.
  Apply (rem_488 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_495 : (__x62,__x63:term)(auto___aux_31 __x62) -> (auto___aux_27 __x63) -> (auto___aux_30 (cons __x62 __x63)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_30_cons_1; Assumption. Defined.

Remark rem_496 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_30 (cons _big_a nil)). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_495.
  Apply (rem_454 _big_a _big_b _big_na); Assumption.
  Apply (rem_455 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_497 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_43 (cons (key sym (old_session _big_a _big_b _big_na)) (cons _big_a nil))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_492.
  Apply (rem_494 _big_a _big_b _big_na); Assumption.
  Apply (rem_496 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_498 : (__x64,__x65:term)(auto___aux_24 __x64) -> (auto___aux_32 __x65) -> (auto___aux_29 (key __x64 __x65)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_29_key_1; Assumption. Defined.

Remark rem_499 : (__x66,__x67:term)(auto___aux_20 __x66) -> (auto___aux_33 __x67) -> (auto___aux_32 (cons __x66 __x67)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_32_cons_1; Assumption. Defined.

Remark rem_500 : (__x68,__x69:term)(auto___aux_34 __x68) -> (auto___aux_27 __x69) -> (auto___aux_33 (cons __x68 __x69)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_33_cons_1; Assumption. Defined.

Remark rem_501 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_33 (cons server nil)). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_500.
  Apply (rem_461 _big_a _big_b _big_na); Assumption.
  Apply (rem_455 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_502 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_32 (cons _big_b (cons server nil))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_499.
  Apply (rem_413 _big_a _big_b _big_na); Assumption.
  Apply (rem_501 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_503 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_29 (key sym (cons _big_b (cons server nil)))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_498.
  Apply (rem_416 _big_a _big_b _big_na); Assumption.
  Apply (rem_502 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_504 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_42 (crypt (cons (key sym (old_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil))))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_491.
  Apply (rem_497 _big_a _big_b _big_na); Assumption.
  Apply (rem_503 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_505 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_40 (cons (crypt (cons (key sym (old_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil)). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_490.
  Apply (rem_504 _big_a _big_b _big_na); Assumption.
  Apply (rem_455 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_506 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_38 (cons (key sym (old_session _big_a _big_b _big_na)) (cons (crypt (cons (key sym (old_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_485.
  Apply (rem_489 _big_a _big_b _big_na); Assumption.
  Apply (rem_505 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_507 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_37 (cons _big_b (cons (key sym (old_session _big_a _big_b _big_na)) (cons (crypt (cons (key sym (old_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil)))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_484.
  Apply (rem_413 _big_a _big_b _big_na); Assumption.
  Apply (rem_506 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_508 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_36 (cons _big_na (cons _big_b (cons (key sym (old_session _big_a _big_b _big_na)) (cons (crypt (cons (key sym (old_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil))))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_483.
  Apply (rem_383 _big_a _big_b _big_na); Assumption.
  Apply (rem_507 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_509 : (__x70,__x71:term)(auto___aux_24 __x70) -> (auto___aux_35 __x71) -> (auto___aux_17 (key __x70 __x71)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_17_key_1; Assumption. Defined.

Remark rem_510 : (__x72,__x73:term)(auto___aux_31 __x72) -> (auto___aux_33 __x73) -> (auto___aux_35 (cons __x72 __x73)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_35_cons_1; Assumption. Defined.

Remark rem_511 : (__x74,__x75:term)(auto___aux_34 __x74) -> (auto___aux_27 __x75) -> (auto___aux_33 (cons __x74 __x75)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_33_cons_1; Assumption. Defined.

Remark rem_512 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_33 (cons server nil)). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_511.
  Apply (rem_461 _big_a _big_b _big_na); Assumption.
  Apply (rem_455 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_513 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_35 (cons _big_a (cons server nil))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_510.
  Apply (rem_454 _big_a _big_b _big_na); Assumption.
  Apply (rem_512 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_514 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto___aux_17 (key sym (cons _big_a (cons server nil)))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_509.
  Apply (rem_416 _big_a _big_b _big_na); Assumption.
  Apply (rem_513 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_515 : (_big_a,_big_b,_big_na:term)(auto___aux_15 (__aux__vars7 _big_a _big_b _big_na)) -> (auto_knows (crypt (cons _big_na (cons _big_b (cons (key sym (old_session _big_a _big_b _big_na)) (cons (crypt (cons (key sym (old_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil)))) (key sym (cons _big_a (cons server nil))))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_482.
  Apply (rem_508 _big_a _big_b _big_na); Assumption.
  Apply (rem_514 _big_a _big_b _big_na); Assumption.
Qed.

Remark rem_516 : (_big_a,_big_b,_big_na:term)(auto_knows (cons _big_a (cons _big_b (cons _big_na nil)))) -> (auto_knows (crypt (cons _big_na (cons _big_b (cons (key sym (old_session _big_a _big_b _big_na)) (cons (crypt (cons (key sym (old_session _big_a _big_b _big_na)) (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) nil)))) (key sym (cons _big_a (cons server nil))))). (* Cut. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply (rem_515 _big_a _big_b _big_na). Apply (rem_480 _big_a _big_b _big_na); Assumption.
Qed.

Definition infer_intruder_knows_previous_server_messages := rem_516.

Remark rem_517 : (forall _x:term, (auto___aux_42 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_43 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_2; Assumption. Defined.

Remark rem_518 : (forall _x:term, (auto___aux_42 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_42 (crypt _x1 _x2)) -> (auto_knows (crypt _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_42_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_207 _x1 _x2 H); Intros.
  Apply (rem_517 epsilon_m__aux_42_pknows _x1 _x2); Tauto.
Defined.

Remark rem_519 : (_big_msg:term)(auto___aux_42 _big_msg) -> (auto_knows _big_msg). (* Induct. *)
Proof.
   Fix epsilon_m__aux_42_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_518 epsilon_m__aux_42_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_520 : (_big_kab,_big_msg:term)(auto___aux_42 _big_msg) -> (auto___aux_39 _big_kab) -> (auto_knows _big_msg). (* Split. *)
Proof.
   Intros _big_kab _big_msg.
  Cut (auto___aux_42 _big_msg) -> (auto_knows _big_msg). Tauto.
  Exact (rem_519 _big_msg).
Defined.

Remark rem_521 : (forall _x:term, (auto___aux_26 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_28 _x1) -> (auto___aux_29 _x2) -> (auto_knows (crypt _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_4; Assumption. Defined.

Remark rem_522 : forall _x1 _x2 : term, (auto___aux_26 (crypt _x1 _x2)) -> (or_1
    ((auto___aux_28 _x1) /\ (auto___aux_29 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_523 : (forall _x:term, (auto___aux_26 _x) -> (auto_knows _x)) -> forall _x1 _x2 : term, (auto___aux_26 (crypt _x1 _x2)) -> (auto_knows (crypt _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_26_pknows. Intros _x1 _x2. Intro H.
  Elim (rem_522 _x1 _x2 H); Intros.
  Apply (rem_521 epsilon_m__aux_26_pknows _x1 _x2); Tauto.
Defined.

Remark rem_524 : (_big_msg:term)(auto___aux_26 _big_msg) -> (auto_knows _big_msg). (* Induct. *)
Proof.
   Fix epsilon_m__aux_26_pknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_523 epsilon_m__aux_26_pknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_525 : (_big_kab,_big_msg:term)(auto___aux_26 _big_msg) -> (auto___aux_22 _big_kab) -> (auto_knows _big_msg). (* Split. *)
Proof.
   Intros _big_kab _big_msg.
  Cut (auto___aux_26 _big_msg) -> (auto_knows _big_msg). Tauto.
  Exact (rem_524 _big_msg).
Defined.

Remark rem_526 : forall _x1 _x2 : term, (auto___aux_44 (__aux__vars8 _x1 _x2)) -> (or_2
    ((auto___aux_42 _x1) /\ (auto___aux_39 _x2))
    ((auto___aux_26 _x1) /\ (auto___aux_22 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_2_intro_1; Tauto.
  Intros. Apply or_2_intro_2; Tauto.
Qed.

Remark rem_527 : (_big_kab,_big_msg:term)(auto___aux_44 (__aux__vars8 _big_msg _big_kab)) -> (auto_knows _big_msg). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_526 _big_msg _big_kab H); Intros.
  Apply (rem_520 _big_kab _big_msg); Tauto.
  Apply (rem_525 _big_kab _big_msg); Tauto.
Defined.

Remark rem_528 : (_big_kab,_big_msg:term)(auto___aux_26 _big_msg) -> (auto___aux_27 nil) -> (auto___aux_22 _big_kab) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_44___aux__vars8_2; Assumption. Defined.

Remark rem_529 : forall _x1 _x2 : term, (auto___aux_23 (cons _x1 _x2)) -> (or_1
    ((auto___aux_26 _x1) /\ (auto___aux_27 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_530 : (_big_kab,_big_msg:term)(auto___aux_22 _big_kab) -> (auto___aux_23 (cons _big_msg nil)) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intros H1. Intro H.
  Elim (rem_529 _big_msg nil H); Intros.
  Apply (rem_528 _big_kab _big_msg); Tauto.
Defined.

Remark rem_531 : forall _x1 _x2 : term, (auto___aux_21 (cons _x1 _x2)) -> (or_1
    ((auto___aux_22 _x1) /\ (auto___aux_23 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_532 : (_big_kab,_big_msg:term)(auto___aux_21 (cons _big_kab (cons _big_msg nil))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_531 _big_kab (cons _big_msg nil) H); Intros.
  Apply (rem_530 _big_kab _big_msg); Tauto.
Defined.

Remark rem_533 : (auto___aux_20 bob) -> (or_1
    True).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_534 : (_big_kab,_big_msg:term)(auto___aux_20 bob) -> (auto___aux_21 (cons _big_kab (cons _big_msg nil))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_533 H); Intros.
  Apply (rem_532 _big_kab _big_msg); Tauto.
Defined.

Remark rem_535 : forall _x1 _x2 : term, (auto___aux_19 (cons _x1 _x2)) -> (or_1
    ((auto___aux_20 _x1) /\ (auto___aux_21 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_536 : (_big_kab,_big_msg:term)(auto___aux_19 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_535 bob (cons _big_kab (cons _big_msg nil)) H); Intros.
  Apply (rem_534 _big_kab _big_msg); Tauto.
Defined.

Remark rem_537 : (auto___aux_12 nil) -> (or_1
    True).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_538 : (_big_kab,_big_msg:term)(auto___aux_12 nil) -> (auto___aux_19 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_537 H); Intros.
  Apply (rem_536 _big_kab _big_msg); Tauto.
Defined.

Remark rem_539 : (auto___aux_9 bob) -> (or_1
    True).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_540 : (_big_kab,_big_msg:term)(auto___aux_9 bob) -> (auto___aux_12 nil) -> (auto___aux_19 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_539 H); Intros.
  Apply (rem_538 _big_kab _big_msg); Tauto.
Defined.

Remark rem_541 : forall _x1 _x2 : term, (auto___aux_14 (cons _x1 _x2)) -> (or_1
    ((auto___aux_9 _x1) /\ (auto___aux_12 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_542 : (_big_kab,_big_msg:term)(auto___aux_14 (cons bob nil)) -> (auto___aux_19 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_541 bob nil H); Intros.
  Apply (rem_540 _big_kab _big_msg); Tauto.
Defined.

Remark rem_543 : (auto___aux_7 alice) -> (or_1
    True).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_544 : (_big_kab,_big_msg:term)(auto___aux_7 alice) -> (auto___aux_14 (cons bob nil)) -> (auto___aux_19 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_543 H); Intros.
  Apply (rem_542 _big_kab _big_msg); Tauto.
Defined.

Remark rem_545 : forall _x1 _x2 : term, (auto___aux_13 (cons _x1 _x2)) -> (or_1
    ((auto___aux_7 _x1) /\ (auto___aux_14 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_546 : (_big_kab,_big_msg:term)(auto___aux_13 (cons alice (cons bob nil))) -> (auto___aux_19 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_545 alice (cons bob nil) H); Intros.
  Apply (rem_544 _big_kab _big_msg); Tauto.
Defined.

Remark rem_547 : (_big_kab,_big_msg:term)(auto___aux_18 (noncea (cons alice (cons bob nil)))) -> (auto___aux_19 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_257 (cons alice (cons bob nil)) H); Intros.
  Apply (rem_546 _big_kab _big_msg); Tauto.
Defined.

Remark rem_548 : forall _x1 _x2 : term, (auto___aux_16 (cons _x1 _x2)) -> (or_1
    ((auto___aux_18 _x1) /\ (auto___aux_19 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_549 : (_big_kab,_big_msg:term)(auto___aux_16 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_548 (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))) H); Intros.
  Apply (rem_547 _big_kab _big_msg); Tauto.
Defined.

Remark rem_550 : forall _x1 : term, (auto___aux_39 (noncea _x1)) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_551 : (_big_kab,_big_msg:term)(auto___aux_39 (noncea (cons alice (cons bob nil)))) -> (auto___aux_30 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_29 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_550 (cons alice (cons bob nil)) H); Intros.
Defined.

Remark rem_552 : (_big_kab,_big_msg:term)(auto___aux_43 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))))) -> (auto___aux_29 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_159 (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))) H); Intros.
  Apply (rem_551 _big_kab _big_msg); Tauto.
Defined.

Remark rem_553 : (_big_kab,_big_msg:term)(auto___aux_56 sym) -> (auto___aux_57 (cons alice (cons server nil))) -> (auto_knows _big_msg) -> (auto_knows _big_kab) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_279 H); Intros.
Defined.

Remark rem_554 : (_big_kab,_big_msg:term)(auto___aux_59 (cons alice (cons server nil))) -> (auto_knows _big_msg) -> (auto_knows _big_kab) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_100 alice (cons server nil) H); Intros.
Defined.

Remark rem_555 : (auto___aux_58 sym) -> (or_1
    True).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_556 : (_big_kab,_big_msg:term)(auto___aux_58 sym) -> (auto___aux_59 (cons alice (cons server nil))) -> (auto_knows _big_msg) -> (auto_knows _big_kab) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_555 H); Intros.
  Apply (rem_554 _big_kab _big_msg); Tauto.
Defined.

Remark rem_557 : (_big_kab,_big_msg:term)(auto___aux_54 sym) -> (auto_knows _big_msg) -> (auto_knows _big_kab) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_282 H); Intros.
Defined.

Remark rem_558 : (_big_kab,_big_msg:term)(auto___aux_54 sym) -> (auto___aux_55 (cons alice (cons server nil))) -> (auto_knows _big_msg) -> (auto_knows _big_kab) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom by universal clause. *)
Proof.
   Intros _big_kab _big_msg. Intros. Apply (rem_557 _big_kab _big_msg); Assumption.
Defined.

Remark rem_559 : (_big_kab,_big_msg:term)(auto_knows _big_msg) -> (auto_knows _big_kab) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intros H1 H2. Intro H.
  Elim (rem_24 sym (cons alice (cons server nil)) H); Intros.
  Apply (rem_553 _big_kab _big_msg); Tauto.
  Apply (rem_556 _big_kab _big_msg); Tauto.
  Apply (rem_558 _big_kab _big_msg); Tauto.
Defined.

Remark rem_560 : (auto_knows nil) -> (or_1
    True).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_561 : (_big_kab,_big_msg:term)(auto_knows _big_msg) -> (auto_knows nil) -> (auto_knows _big_kab) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intros H1. Intro H.
  Elim (rem_560 H); Intros.
  Apply (rem_559 _big_kab _big_msg); Tauto.
Defined.

Remark rem_562 : (_big_kab,_big_msg:term)(auto_knows _big_kab) -> (auto_knows (cons _big_msg nil)) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intros H1. Intro H.
  Elim (rem_3 _big_msg nil H); Intros.
  Apply (rem_561 _big_kab _big_msg); Tauto.
Defined.

Remark rem_563 : (_big_kab,_big_msg:term)(auto_knows (cons _big_kab (cons _big_msg nil))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_3 _big_kab (cons _big_msg nil) H); Intros.
  Apply (rem_562 _big_kab _big_msg); Tauto.
Defined.

Remark rem_564 : (auto_knows bob) -> (or_1
    True).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_565 : (_big_kab,_big_msg:term)(auto_knows bob) -> (auto_knows (cons _big_kab (cons _big_msg nil))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_564 H); Intros.
  Apply (rem_563 _big_kab _big_msg); Tauto.
Defined.

Remark rem_566 : (_big_kab,_big_msg:term)(auto_knows (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_3 bob (cons _big_kab (cons _big_msg nil)) H); Intros.
  Apply (rem_565 _big_kab _big_msg); Tauto.
Defined.

Remark rem_567 : (_big_kab,_big_msg:term)(auto___aux_12 nil) -> (auto_knows (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_537 H); Intros.
  Apply (rem_566 _big_kab _big_msg); Tauto.
Defined.

Remark rem_568 : (_big_kab,_big_msg:term)(auto___aux_9 bob) -> (auto___aux_12 nil) -> (auto_knows (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_539 H); Intros.
  Apply (rem_567 _big_kab _big_msg); Tauto.
Defined.

Remark rem_569 : (_big_kab,_big_msg:term)(auto___aux_14 (cons bob nil)) -> (auto_knows (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_541 bob nil H); Intros.
  Apply (rem_568 _big_kab _big_msg); Tauto.
Defined.

Remark rem_570 : (_big_kab,_big_msg:term)(auto___aux_7 alice) -> (auto___aux_14 (cons bob nil)) -> (auto_knows (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_543 H); Intros.
  Apply (rem_569 _big_kab _big_msg); Tauto.
Defined.

Remark rem_571 : (_big_kab,_big_msg:term)(auto___aux_13 (cons alice (cons bob nil))) -> (auto_knows (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_545 alice (cons bob nil) H); Intros.
  Apply (rem_570 _big_kab _big_msg); Tauto.
Defined.

Remark rem_572 : (_big_kab,_big_msg:term)(auto_knows (noncea (cons alice (cons bob nil)))) -> (auto_knows (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_378 (cons alice (cons bob nil)) H); Intros.
  Apply (rem_571 _big_kab _big_msg); Tauto.
Defined.

Remark rem_573 : (_big_kab,_big_msg:term)(auto_knows (cons (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_3 (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))) H); Intros.
  Apply (rem_572 _big_kab _big_msg); Tauto.
Defined.

Remark rem_574 : forall _x1 : term, (auto___aux_22 (noncea _x1)) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_575 : (_big_kab,_big_msg:term)(auto___aux_22 (noncea (cons alice (cons bob nil)))) -> (auto___aux_30 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_29 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_574 (cons alice (cons bob nil)) H); Intros.
Defined.

Remark rem_576 : forall _x1 _x2 : term, (auto___aux_28 (cons _x1 _x2)) -> (or_1
    ((auto___aux_22 _x1) /\ (auto___aux_30 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_577 : (_big_kab,_big_msg:term)(auto___aux_28 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))))) -> (auto___aux_29 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_576 (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))) H); Intros.
  Apply (rem_575 _big_kab _big_msg); Tauto.
Defined.

Remark rem_578 : forall _x1 _x2 : term, (auto___aux_49 (cons _x1 _x2)) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_579 : (_big_kab,_big_msg:term)(auto___aux_49 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))))) -> (auto___aux_50 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_578 (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))) H); Intros.
Defined.

Remark rem_580 : forall _x1 _x2 : term, (auto___aux_52 (cons _x1 _x2)) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_581 : (_big_kab,_big_msg:term)(auto___aux_52 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))))) -> (auto___aux_53 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_580 (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))) H); Intros.
Defined.

Remark rem_582 : (_big_kab,_big_msg:term)(auto___aux_42 _big_msg) -> (auto___aux_27 nil) -> (auto___aux_39 _big_kab) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_44___aux__vars8_1; Assumption. Defined.

Remark rem_583 : (_big_kab,_big_msg:term)(auto___aux_39 _big_kab) -> (auto___aux_40 (cons _big_msg nil)) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intros H1. Intro H.
  Elim (rem_214 _big_msg nil H); Intros.
  Apply (rem_582 _big_kab _big_msg); Tauto.
Defined.

Remark rem_584 : (_big_kab,_big_msg:term)(auto___aux_38 (cons _big_kab (cons _big_msg nil))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_219 _big_kab (cons _big_msg nil) H); Intros.
  Apply (rem_583 _big_kab _big_msg); Tauto.
Defined.

Remark rem_585 : (_big_kab,_big_msg:term)(auto___aux_20 bob) -> (auto___aux_38 (cons _big_kab (cons _big_msg nil))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_533 H); Intros.
  Apply (rem_584 _big_kab _big_msg); Tauto.
Defined.

Remark rem_586 : (_big_kab,_big_msg:term)(auto___aux_37 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_224 bob (cons _big_kab (cons _big_msg nil)) H); Intros.
  Apply (rem_585 _big_kab _big_msg); Tauto.
Defined.

Remark rem_587 : (_big_kab,_big_msg:term)(auto___aux_12 nil) -> (auto___aux_37 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_537 H); Intros.
  Apply (rem_586 _big_kab _big_msg); Tauto.
Defined.

Remark rem_588 : (_big_kab,_big_msg:term)(auto___aux_9 bob) -> (auto___aux_12 nil) -> (auto___aux_37 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_539 H); Intros.
  Apply (rem_587 _big_kab _big_msg); Tauto.
Defined.

Remark rem_589 : (_big_kab,_big_msg:term)(auto___aux_14 (cons bob nil)) -> (auto___aux_37 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_541 bob nil H); Intros.
  Apply (rem_588 _big_kab _big_msg); Tauto.
Defined.

Remark rem_590 : (_big_kab,_big_msg:term)(auto___aux_7 alice) -> (auto___aux_14 (cons bob nil)) -> (auto___aux_37 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_543 H); Intros.
  Apply (rem_589 _big_kab _big_msg); Tauto.
Defined.

Remark rem_591 : (_big_kab,_big_msg:term)(auto___aux_13 (cons alice (cons bob nil))) -> (auto___aux_37 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_545 alice (cons bob nil) H); Intros.
  Apply (rem_590 _big_kab _big_msg); Tauto.
Defined.

Remark rem_592 : (_big_kab,_big_msg:term)(auto___aux_18 (noncea (cons alice (cons bob nil)))) -> (auto___aux_37 (cons bob (cons _big_kab (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_257 (cons alice (cons bob nil)) H); Intros.
  Apply (rem_591 _big_kab _big_msg); Tauto.
Defined.

Remark rem_593 : (_big_kab,_big_msg:term)(auto___aux_36 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_262 (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil))) H); Intros.
  Apply (rem_592 _big_kab _big_msg); Tauto.
Defined.

Remark rem_594 : (_big_kab,_big_msg:term)(auto_knows (crypt (cons (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil)))) (key sym (cons alice (cons server nil))))) -> (auto___aux_44 (__aux__vars8 _big_msg _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_msg. Intro H.
  Elim (rem_37 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil)))) (key sym (cons alice (cons server nil))) H); Intros.
  Apply (rem_549 _big_kab _big_msg); Tauto.
  Apply (rem_552 _big_kab _big_msg); Tauto.
  Apply (rem_573 _big_kab _big_msg); Tauto.
  Apply (rem_577 _big_kab _big_msg); Tauto.
  Apply (rem_579 _big_kab _big_msg); Tauto.
  Apply (rem_581 _big_kab _big_msg); Tauto.
  Apply (rem_593 _big_kab _big_msg); Tauto.
Defined.

Remark rem_595 : (_big_kab,_big_msg:term)(auto_knows (crypt (cons (noncea (cons alice (cons bob nil))) (cons bob (cons _big_kab (cons _big_msg nil)))) (key sym (cons alice (cons server nil))))) -> (auto_knows _big_msg). (* Cut. *)
Proof.
   Intros _big_kab _big_msg. Intros. Apply (rem_527 _big_kab _big_msg). Apply (rem_594 _big_kab _big_msg); Assumption.
Qed.

Definition infer_alice_gets_server_message_and_forwards_submessage_to_bob := rem_595.

Remark rem_596 : (__x76,__x77:term)(auto___aux_46 __x76) -> (auto___aux_47 __x77) -> (auto_alice_key (key __x76 __x77)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_alice_key_key_1; Assumption. Defined.

Remark rem_597 : (forall _x:term, (auto___aux_24 _x) -> (auto___aux_46 _x)) -> (auto___aux_24 sym) -> (auto___aux_46 sym). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_46_sym_1; Assumption. Defined.

Remark rem_598 : (_big_mode:term)(auto___aux_24 _big_mode) -> (auto___aux_46 _big_mode). (* Induct. *)
Proof.
   Fix epsilon_m__aux_24_p__aux_46 1.
  Intro _x. Case _x; First [Exact (rem_597 epsilon_m__aux_24_p__aux_46 )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_599 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows _big_y) -> (auto_knows _big_n) -> (auto_knows _big_x) -> (auto___aux_26 _big_msg) -> (auto___aux_24 _big_mode) -> (auto___aux_46 _big_mode). (* Split. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y.
  Cut (auto___aux_24 _big_mode) -> (auto___aux_46 _big_mode). Tauto.
  Exact (rem_598 _big_mode).
Defined.

Remark rem_600 : forall _x1 _x2 _x3 _x4 _x5:term, (auto___aux_45 (__aux__vars9 _x1 _x2 _x3 _x4 _x5)) -> (or_1
    ((auto_knows _x1) /\ (auto_knows _x2) /\ (auto_knows _x3) /\ (auto___aux_26 _x4) /\ (auto___aux_24 _x5))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_601 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)) -> (auto___aux_46 _big_mode). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_600 _big_y _big_n _big_x _big_msg _big_mode H); Intros.
  Apply (rem_599 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_602 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows _big_y) -> (auto_knows _big_n) -> (auto_knows _big_x) -> (auto___aux_26 _big_msg) -> (auto___aux_24 _big_mode) -> (auto___aux_47 (current_session _big_x _big_y _big_n)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_47_current_session_1; Assumption. Defined.

Remark rem_603 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)) -> (auto___aux_47 (current_session _big_x _big_y _big_n)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_600 _big_y _big_n _big_x _big_msg _big_mode H); Intros.
  Apply (rem_602 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_604 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)) -> (auto_alice_key (key _big_mode (current_session _big_x _big_y _big_n))). (* Resolve. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros. Apply rem_596.
  Apply (rem_601 _big_mode _big_msg _big_n _big_x _big_y); Assumption.
  Apply (rem_603 _big_mode _big_msg _big_n _big_x _big_y); Assumption.
Qed.

Remark rem_605 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_26 _big_msg) -> (auto___aux_27 nil) -> (auto_knows _big_x) -> (auto_knows _big_y) -> (auto_knows _big_n) -> (auto___aux_24 _big_mode) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_45___aux__vars9_1; Assumption. Defined.

Remark rem_606 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows _big_x) -> (auto_knows _big_y) -> (auto_knows _big_n) -> (auto___aux_24 _big_mode) -> (auto___aux_23 (cons _big_msg nil)) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros H1 H2 H3 H4. Intro H.
  Elim (rem_529 _big_msg nil H); Intros.
  Apply (rem_605 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_607 : forall _x1 _x2 _x3 : term, (auto___aux_25 (current_session _x1 _x2 _x3)) -> (or_1
    ((auto_knows _x1) /\ (auto_knows _x2) /\ (auto_knows _x3))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_608 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_24 _big_mode) -> (auto___aux_25 (current_session _big_x _big_y _big_n)) -> (auto___aux_23 (cons _big_msg nil)) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros H1. Intro H.
  Elim (rem_607 _big_x _big_y _big_n H); Intros.
  Apply (rem_606 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_609 : forall _x1 _x2 : term, (auto___aux_22 (key _x1 _x2)) -> (or_1
    ((auto___aux_24 _x1) /\ (auto___aux_25 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_610 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_22 (key _big_mode (current_session _big_x _big_y _big_n))) -> (auto___aux_23 (cons _big_msg nil)) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_609 _big_mode (current_session _big_x _big_y _big_n) H); Intros.
  Apply (rem_608 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_611 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_21 (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_531 (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil) H); Intros.
  Apply (rem_610 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_612 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_20 bob) -> (auto___aux_21 (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_533 H); Intros.
  Apply (rem_611 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_613 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_19 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_535 bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)) H); Intros.
  Apply (rem_612 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_614 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_12 nil) -> (auto___aux_19 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_537 H); Intros.
  Apply (rem_613 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_615 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_9 bob) -> (auto___aux_12 nil) -> (auto___aux_19 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_539 H); Intros.
  Apply (rem_614 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_616 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_14 (cons bob nil)) -> (auto___aux_19 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_541 bob nil H); Intros.
  Apply (rem_615 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_617 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_7 alice) -> (auto___aux_14 (cons bob nil)) -> (auto___aux_19 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_543 H); Intros.
  Apply (rem_616 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_618 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_13 (cons alice (cons bob nil))) -> (auto___aux_19 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_545 alice (cons bob nil) H); Intros.
  Apply (rem_617 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_619 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_18 (noncea (cons alice (cons bob nil)))) -> (auto___aux_19 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_257 (cons alice (cons bob nil)) H); Intros.
  Apply (rem_618 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_620 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_16 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_548 (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) H); Intros.
  Apply (rem_619 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_621 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_39 (noncea (cons alice (cons bob nil)))) -> (auto___aux_30 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_29 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_550 (cons alice (cons bob nil)) H); Intros.
Defined.

Remark rem_622 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_43 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))))) -> (auto___aux_29 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_159 (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) H); Intros.
  Apply (rem_621 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_623 : forall _x1 _x2 _x3 : term, (auto___aux_57 (current_session _x1 _x2 _x3)) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_624 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_56 _big_mode) -> (auto___aux_57 (current_session _big_x _big_y _big_n)) -> (auto_knows (cons _big_msg nil)) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros H1. Intro H.
  Elim (rem_623 _big_x _big_y _big_n H); Intros.
Defined.

Remark rem_625 : forall _x1 _x2 _x3 : term, (auto___aux_59 (current_session _x1 _x2 _x3)) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_626 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_58 _big_mode) -> (auto___aux_59 (current_session _big_x _big_y _big_n)) -> (auto_knows (cons _big_msg nil)) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros H1. Intro H.
  Elim (rem_625 _big_x _big_y _big_n H); Intros.
Defined.

Remark rem_627 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_56 sym) -> (auto___aux_57 (cons alice (cons server nil))) -> (auto_knows _big_msg) -> (auto___aux_54 _big_mode) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_279 H); Intros.
Defined.

Remark rem_628 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_59 (cons alice (cons server nil))) -> (auto_knows _big_msg) -> (auto___aux_54 _big_mode) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_100 alice (cons server nil) H); Intros.
Defined.

Remark rem_629 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_58 sym) -> (auto___aux_59 (cons alice (cons server nil))) -> (auto_knows _big_msg) -> (auto___aux_54 _big_mode) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_555 H); Intros.
  Apply (rem_628 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_630 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_54 sym) -> (auto_knows _big_msg) -> (auto___aux_54 _big_mode) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_282 H); Intros.
Defined.

Remark rem_631 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_54 sym) -> (auto___aux_55 (cons alice (cons server nil))) -> (auto_knows _big_msg) -> (auto___aux_54 _big_mode) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom by universal clause. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros. Apply (rem_630 _big_mode _big_msg _big_n _big_x _big_y); Assumption.
Defined.

Remark rem_632 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows _big_msg) -> (auto___aux_54 _big_mode) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros H1 H2. Intro H.
  Elim (rem_24 sym (cons alice (cons server nil)) H); Intros.
  Apply (rem_627 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
  Apply (rem_629 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
  Apply (rem_631 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_633 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows _big_msg) -> (auto_knows nil) -> (auto___aux_54 _big_mode) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros H1. Intro H.
  Elim (rem_560 H); Intros.
  Apply (rem_632 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_634 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_54 _big_mode) -> (auto_knows (cons _big_msg nil)) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros H1. Intro H.
  Elim (rem_3 _big_msg nil H); Intros.
  Apply (rem_633 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_635 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_54 _big_mode) -> (auto___aux_55 (current_session _big_x _big_y _big_n)) -> (auto_knows (cons _big_msg nil)) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom by universal clause. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros. Apply (rem_634 _big_mode _big_msg _big_n _big_x _big_y); Assumption.
Defined.

Remark rem_636 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows (key _big_mode (current_session _big_x _big_y _big_n))) -> (auto_knows (cons _big_msg nil)) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_24 _big_mode (current_session _big_x _big_y _big_n) H); Intros.
  Apply (rem_624 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
  Apply (rem_626 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
  Apply (rem_635 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_637 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_3 (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil) H); Intros.
  Apply (rem_636 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_638 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows bob) -> (auto_knows (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_564 H); Intros.
  Apply (rem_637 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_639 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_3 bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)) H); Intros.
  Apply (rem_638 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_640 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_12 nil) -> (auto_knows (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_537 H); Intros.
  Apply (rem_639 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_641 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_9 bob) -> (auto___aux_12 nil) -> (auto_knows (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_539 H); Intros.
  Apply (rem_640 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_642 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_14 (cons bob nil)) -> (auto_knows (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_541 bob nil H); Intros.
  Apply (rem_641 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_643 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_7 alice) -> (auto___aux_14 (cons bob nil)) -> (auto_knows (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_543 H); Intros.
  Apply (rem_642 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_644 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_13 (cons alice (cons bob nil))) -> (auto_knows (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_545 alice (cons bob nil) H); Intros.
  Apply (rem_643 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_645 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows (noncea (cons alice (cons bob nil)))) -> (auto_knows (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_378 (cons alice (cons bob nil)) H); Intros.
  Apply (rem_644 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_646 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows (cons (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))))) -> (auto_knows (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_3 (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) H); Intros.
  Apply (rem_645 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_647 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_22 (noncea (cons alice (cons bob nil)))) -> (auto___aux_30 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_29 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_574 (cons alice (cons bob nil)) H); Intros.
Defined.

Remark rem_648 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_28 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))))) -> (auto___aux_29 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_576 (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) H); Intros.
  Apply (rem_647 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_649 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_49 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))))) -> (auto___aux_50 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_578 (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) H); Intros.
Defined.

Remark rem_650 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_52 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))))) -> (auto___aux_53 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_580 (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) H); Intros.
Defined.

Remark rem_651 : forall _x1 _x2 _x3 : term, (auto___aux_41 (current_session _x1 _x2 _x3)) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_652 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_24 _big_mode) -> (auto___aux_41 (current_session _big_x _big_y _big_n)) -> (auto___aux_40 (cons _big_msg nil)) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros H1. Intro H.
  Elim (rem_651 _big_x _big_y _big_n H); Intros.
Defined.

Remark rem_653 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_39 (key _big_mode (current_session _big_x _big_y _big_n))) -> (auto___aux_40 (cons _big_msg nil)) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_154 _big_mode (current_session _big_x _big_y _big_n) H); Intros.
  Apply (rem_652 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_654 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_38 (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_219 (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil) H); Intros.
  Apply (rem_653 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_655 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_20 bob) -> (auto___aux_38 (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_533 H); Intros.
  Apply (rem_654 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_656 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_37 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_224 bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)) H); Intros.
  Apply (rem_655 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_657 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_12 nil) -> (auto___aux_37 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_537 H); Intros.
  Apply (rem_656 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_658 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_9 bob) -> (auto___aux_12 nil) -> (auto___aux_37 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_539 H); Intros.
  Apply (rem_657 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_659 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_14 (cons bob nil)) -> (auto___aux_37 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_541 bob nil H); Intros.
  Apply (rem_658 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_660 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_7 alice) -> (auto___aux_14 (cons bob nil)) -> (auto___aux_37 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_543 H); Intros.
  Apply (rem_659 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_661 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_13 (cons alice (cons bob nil))) -> (auto___aux_37 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_545 alice (cons bob nil) H); Intros.
  Apply (rem_660 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_662 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_18 (noncea (cons alice (cons bob nil)))) -> (auto___aux_37 (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_257 (cons alice (cons bob nil)) H); Intros.
  Apply (rem_661 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_663 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto___aux_36 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))))) -> (auto___aux_17 (key sym (cons alice (cons server nil)))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_262 (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil))) H); Intros.
  Apply (rem_662 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_664 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows (crypt (cons (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) (key sym (cons alice (cons server nil))))) -> (auto___aux_45 (__aux__vars9 _big_y _big_n _big_x _big_msg _big_mode)). (* Eliminate negative atom. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intro H.
  Elim (rem_37 (cons (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) (key sym (cons alice (cons server nil))) H); Intros.
  Apply (rem_620 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
  Apply (rem_622 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
  Apply (rem_646 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
  Apply (rem_648 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
  Apply (rem_649 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
  Apply (rem_650 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
  Apply (rem_663 _big_mode _big_msg _big_n _big_x _big_y); Tauto.
Defined.

Remark rem_665 : (_big_mode,_big_msg,_big_n,_big_x,_big_y:term)(auto_knows (crypt (cons (noncea (cons alice (cons bob nil))) (cons bob (cons (key _big_mode (current_session _big_x _big_y _big_n)) (cons _big_msg nil)))) (key sym (cons alice (cons server nil))))) -> (auto_alice_key (key _big_mode (current_session _big_x _big_y _big_n))). (* Cut. *)
Proof.
   Intros _big_mode _big_msg _big_n _big_x _big_y. Intros. Apply (rem_604 _big_mode _big_msg _big_n _big_x _big_y). Apply (rem_664 _big_mode _big_msg _big_n _big_x _big_y); Assumption.
Qed.

Definition infer_alice_gets_server_message_and_stores_current_session_key := rem_665.

Remark rem_666 : (__x78,__x79:term)(auto___aux_49 __x78) -> (auto___aux_50 __x79) -> (auto_knows (crypt __x78 __x79)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_5; Assumption. Defined.

Remark rem_667 : (_big_a,_big_b,_big_kab:term)(auto___aux_31 _big_a) -> (auto___aux_20 _big_b) -> (auto___aux_39 _big_kab) -> (auto___aux_49 (nonceb _big_kab _big_a _big_b)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_49_nonceb_2; Assumption. Defined.

Remark rem_668 : (_big_a,_big_b,_big_kab:term)(auto___aux_31 _big_a) -> (auto___aux_20 _big_b) -> (auto___aux_22 _big_kab) -> (auto___aux_49 (nonceb _big_kab _big_a _big_b)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_49_nonceb_1; Assumption. Defined.

Remark rem_669 : forall _x1 _x2 _x3 : term, (auto___aux_48 (__aux__vars10 _x1 _x2 _x3)) -> (or_2
    ((auto___aux_31 _x1) /\ (auto___aux_20 _x2) /\ (auto___aux_39 _x3))
    ((auto___aux_31 _x1) /\ (auto___aux_20 _x2) /\ (auto___aux_22 _x3))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_2_intro_1; Tauto.
  Intros. Apply or_2_intro_2; Tauto.
Qed.

Remark rem_670 : (_big_a,_big_b,_big_kab:term)(auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)) -> (auto___aux_49 (nonceb _big_kab _big_a _big_b)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_669 _big_a _big_b _big_kab H); Intros.
  Apply (rem_667 _big_a _big_b _big_kab); Tauto.
  Apply (rem_668 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_671 : (forall _x:term, (auto___aux_39 _x) -> (auto___aux_50 _x)) -> forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_41 _x2) -> (auto___aux_50 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_50_key_2; Assumption. Defined.

Remark rem_672 : (forall _x:term, (auto___aux_39 _x) -> (auto___aux_50 _x)) -> forall _x1 _x2 : term, (auto___aux_39 (key _x1 _x2)) -> (auto___aux_50 (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_39_p__aux_50. Intros _x1 _x2. Intro H.
  Elim (rem_154 _x1 _x2 H); Intros.
  Apply (rem_671 epsilon_m__aux_39_p__aux_50 _x1 _x2); Tauto.
Defined.

Remark rem_673 : (_big_kab:term)(auto___aux_39 _big_kab) -> (auto___aux_50 _big_kab). (* Induct. *)
Proof.
   Fix epsilon_m__aux_39_p__aux_50 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_672 epsilon_m__aux_39_p__aux_50 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_674 : (_big_a,_big_b,_big_kab:term)(auto___aux_31 _big_a) -> (auto___aux_20 _big_b) -> (auto___aux_39 _big_kab) -> (auto___aux_50 _big_kab). (* Split. *)
Proof.
   Intros _big_a _big_b _big_kab.
  Cut (auto___aux_39 _big_kab) -> (auto___aux_50 _big_kab). Tauto.
  Exact (rem_673 _big_kab).
Defined.

Remark rem_675 : (forall _x:term, (auto___aux_22 _x) -> (auto___aux_50 _x)) -> forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_25 _x2) -> (auto___aux_50 (key _x1 _x2)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_50_key_1; Assumption. Defined.

Remark rem_676 : (forall _x:term, (auto___aux_22 _x) -> (auto___aux_50 _x)) -> forall _x1 _x2 : term, (auto___aux_22 (key _x1 _x2)) -> (auto___aux_50 (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_22_p__aux_50. Intros _x1 _x2. Intro H.
  Elim (rem_609 _x1 _x2 H); Intros.
  Apply (rem_675 epsilon_m__aux_22_p__aux_50 _x1 _x2); Tauto.
Defined.

Remark rem_677 : (_big_kab:term)(auto___aux_22 _big_kab) -> (auto___aux_50 _big_kab). (* Induct. *)
Proof.
   Fix epsilon_m__aux_22_p__aux_50 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_676 epsilon_m__aux_22_p__aux_50 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_678 : (_big_a,_big_b,_big_kab:term)(auto___aux_31 _big_a) -> (auto___aux_20 _big_b) -> (auto___aux_22 _big_kab) -> (auto___aux_50 _big_kab). (* Split. *)
Proof.
   Intros _big_a _big_b _big_kab.
  Cut (auto___aux_22 _big_kab) -> (auto___aux_50 _big_kab). Tauto.
  Exact (rem_677 _big_kab).
Defined.

Remark rem_679 : (_big_a,_big_b,_big_kab:term)(auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)) -> (auto___aux_50 _big_kab). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_669 _big_a _big_b _big_kab H); Intros.
  Apply (rem_674 _big_a _big_b _big_kab); Tauto.
  Apply (rem_678 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_680 : (_big_a,_big_b,_big_kab:term)(auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)) -> (auto_knows (crypt (nonceb _big_kab _big_a _big_b) _big_kab)). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros. Apply rem_666.
  Apply (rem_670 _big_a _big_b _big_kab); Assumption.
  Apply (rem_679 _big_a _big_b _big_kab); Assumption.
Qed.

Remark rem_681 : (auto___aux_21 nil) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_682 : (_big_a,_big_b,_big_kab:term)(auto___aux_20 _big_a) -> (auto___aux_21 nil) -> (auto___aux_18 _big_kab) -> (auto___aux_17 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1. Intro H.
  Elim (rem_681 H); Intros.
Defined.

Remark rem_683 : (_big_a,_big_b,_big_kab:term)(auto___aux_18 _big_kab) -> (auto___aux_19 (cons _big_a nil)) -> (auto___aux_17 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1. Intro H.
  Elim (rem_535 _big_a nil H); Intros.
  Apply (rem_682 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_684 : (_big_a,_big_b,_big_kab:term)(auto___aux_16 (cons _big_kab (cons _big_a nil))) -> (auto___aux_17 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_548 _big_kab (cons _big_a nil) H); Intros.
  Apply (rem_683 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_685 : (_big_a,_big_b,_big_kab:term)(auto___aux_20 _big_b) -> (auto___aux_33 (cons server nil)) -> (auto___aux_31 _big_a) -> (auto___aux_39 _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_48___aux__vars10_1; Assumption. Defined.

Remark rem_686 : (_big_a,_big_b,_big_kab:term)(auto___aux_32 (cons _big_b (cons server nil))) -> (auto___aux_31 _big_a) -> (auto___aux_39 _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_102 _big_b (cons server nil) H); Intros.
  Apply (rem_685 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_687 : (_big_a,_big_b,_big_kab:term)(auto___aux_24 sym) -> (auto___aux_32 (cons _big_b (cons server nil))) -> (auto___aux_31 _big_a) -> (auto___aux_39 _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_295 H); Intros.
  Apply (rem_686 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_688 : (_big_a,_big_b,_big_kab:term)(auto___aux_31 _big_a) -> (auto___aux_39 _big_kab) -> (auto___aux_29 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1 H2. Intro H.
  Elim (rem_17 sym (cons _big_b (cons server nil)) H); Intros.
  Apply (rem_687 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_689 : (auto___aux_27 nil) -> (or_1
    True).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_690 : (_big_a,_big_b,_big_kab:term)(auto___aux_31 _big_a) -> (auto___aux_27 nil) -> (auto___aux_39 _big_kab) -> (auto___aux_29 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1. Intro H.
  Elim (rem_689 H); Intros.
  Apply (rem_688 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_691 : (_big_a,_big_b,_big_kab:term)(auto___aux_39 _big_kab) -> (auto___aux_30 (cons _big_a nil)) -> (auto___aux_29 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1. Intro H.
  Elim (rem_144 _big_a nil H); Intros.
  Apply (rem_690 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_692 : (_big_a,_big_b,_big_kab:term)(auto___aux_43 (cons _big_kab (cons _big_a nil))) -> (auto___aux_29 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_159 _big_kab (cons _big_a nil) H); Intros.
  Apply (rem_691 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_693 : (_big_a,_big_b,_big_kab:term)(auto___aux_56 sym) -> (auto___aux_57 (cons _big_b (cons server nil))) -> (auto_knows _big_a) -> (auto_knows _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_279 H); Intros.
Defined.

Remark rem_694 : (_big_a,_big_b,_big_kab:term)(auto___aux_59 (cons _big_b (cons server nil))) -> (auto_knows _big_a) -> (auto_knows _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_100 _big_b (cons server nil) H); Intros.
Defined.

Remark rem_695 : (_big_a,_big_b,_big_kab:term)(auto___aux_58 sym) -> (auto___aux_59 (cons _big_b (cons server nil))) -> (auto_knows _big_a) -> (auto_knows _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_555 H); Intros.
  Apply (rem_694 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_696 : (_big_a,_big_b,_big_kab:term)(auto___aux_54 sym) -> (auto_knows _big_a) -> (auto_knows _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_282 H); Intros.
Defined.

Remark rem_697 : (_big_a,_big_b,_big_kab:term)(auto___aux_54 sym) -> (auto___aux_55 (cons _big_b (cons server nil))) -> (auto_knows _big_a) -> (auto_knows _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom by universal clause. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros. Apply (rem_696 _big_a _big_b _big_kab); Assumption.
Defined.

Remark rem_698 : (_big_a,_big_b,_big_kab:term)(auto_knows _big_a) -> (auto_knows _big_kab) -> (auto_knows (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1 H2. Intro H.
  Elim (rem_24 sym (cons _big_b (cons server nil)) H); Intros.
  Apply (rem_693 _big_a _big_b _big_kab); Tauto.
  Apply (rem_695 _big_a _big_b _big_kab); Tauto.
  Apply (rem_697 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_699 : (_big_a,_big_b,_big_kab:term)(auto_knows _big_a) -> (auto_knows nil) -> (auto_knows _big_kab) -> (auto_knows (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1. Intro H.
  Elim (rem_560 H); Intros.
  Apply (rem_698 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_700 : (_big_a,_big_b,_big_kab:term)(auto_knows _big_kab) -> (auto_knows (cons _big_a nil)) -> (auto_knows (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1. Intro H.
  Elim (rem_3 _big_a nil H); Intros.
  Apply (rem_699 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_701 : (_big_a,_big_b,_big_kab:term)(auto_knows (cons _big_kab (cons _big_a nil))) -> (auto_knows (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_3 _big_kab (cons _big_a nil) H); Intros.
  Apply (rem_700 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_702 : (_big_a,_big_b,_big_kab:term)(auto___aux_20 _big_b) -> (auto___aux_33 (cons server nil)) -> (auto___aux_31 _big_a) -> (auto___aux_22 _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_48___aux__vars10_2; Assumption. Defined.

Remark rem_703 : (_big_a,_big_b,_big_kab:term)(auto___aux_32 (cons _big_b (cons server nil))) -> (auto___aux_31 _big_a) -> (auto___aux_22 _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_102 _big_b (cons server nil) H); Intros.
  Apply (rem_702 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_704 : (_big_a,_big_b,_big_kab:term)(auto___aux_24 sym) -> (auto___aux_32 (cons _big_b (cons server nil))) -> (auto___aux_31 _big_a) -> (auto___aux_22 _big_kab) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_295 H); Intros.
  Apply (rem_703 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_705 : (_big_a,_big_b,_big_kab:term)(auto___aux_31 _big_a) -> (auto___aux_22 _big_kab) -> (auto___aux_29 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1 H2. Intro H.
  Elim (rem_17 sym (cons _big_b (cons server nil)) H); Intros.
  Apply (rem_704 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_706 : (_big_a,_big_b,_big_kab:term)(auto___aux_31 _big_a) -> (auto___aux_27 nil) -> (auto___aux_22 _big_kab) -> (auto___aux_29 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1. Intro H.
  Elim (rem_689 H); Intros.
  Apply (rem_705 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_707 : (_big_a,_big_b,_big_kab:term)(auto___aux_22 _big_kab) -> (auto___aux_30 (cons _big_a nil)) -> (auto___aux_29 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1. Intro H.
  Elim (rem_144 _big_a nil H); Intros.
  Apply (rem_706 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_708 : (_big_a,_big_b,_big_kab:term)(auto___aux_28 (cons _big_kab (cons _big_a nil))) -> (auto___aux_29 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_576 _big_kab (cons _big_a nil) H); Intros.
  Apply (rem_707 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_709 : (_big_a,_big_b,_big_kab:term)(auto___aux_49 (cons _big_kab (cons _big_a nil))) -> (auto___aux_50 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_578 _big_kab (cons _big_a nil) H); Intros.
Defined.

Remark rem_710 : (_big_a,_big_b,_big_kab:term)(auto___aux_52 (cons _big_kab (cons _big_a nil))) -> (auto___aux_53 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_580 _big_kab (cons _big_a nil) H); Intros.
Defined.

Remark rem_711 : (auto___aux_38 nil) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_712 : (_big_a,_big_b,_big_kab:term)(auto___aux_20 _big_a) -> (auto___aux_38 nil) -> (auto___aux_18 _big_kab) -> (auto___aux_17 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1. Intro H.
  Elim (rem_711 H); Intros.
Defined.

Remark rem_713 : (_big_a,_big_b,_big_kab:term)(auto___aux_18 _big_kab) -> (auto___aux_37 (cons _big_a nil)) -> (auto___aux_17 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros H1. Intro H.
  Elim (rem_224 _big_a nil H); Intros.
  Apply (rem_712 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_714 : (_big_a,_big_b,_big_kab:term)(auto___aux_36 (cons _big_kab (cons _big_a nil))) -> (auto___aux_17 (key sym (cons _big_b (cons server nil)))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_262 _big_kab (cons _big_a nil) H); Intros.
  Apply (rem_713 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_715 : (_big_a,_big_b,_big_kab:term)(auto_knows (crypt (cons _big_kab (cons _big_a nil)) (key sym (cons _big_b (cons server nil))))) -> (auto___aux_48 (__aux__vars10 _big_a _big_b _big_kab)). (* Eliminate negative atom. *)
Proof.
   Intros _big_a _big_b _big_kab. Intro H.
  Elim (rem_37 (cons _big_kab (cons _big_a nil)) (key sym (cons _big_b (cons server nil))) H); Intros.
  Apply (rem_684 _big_a _big_b _big_kab); Tauto.
  Apply (rem_692 _big_a _big_b _big_kab); Tauto.
  Apply (rem_701 _big_a _big_b _big_kab); Tauto.
  Apply (rem_708 _big_a _big_b _big_kab); Tauto.
  Apply (rem_709 _big_a _big_b _big_kab); Tauto.
  Apply (rem_710 _big_a _big_b _big_kab); Tauto.
  Apply (rem_714 _big_a _big_b _big_kab); Tauto.
Defined.

Remark rem_716 : (_big_a,_big_b,_big_kab:term)(auto_knows (crypt (cons _big_kab (cons _big_a nil)) (key sym (cons _big_b (cons server nil))))) -> (auto_knows (crypt (nonceb _big_kab _big_a _big_b) _big_kab)). (* Cut. *)
Proof.
   Intros _big_a _big_b _big_kab. Intros. Apply (rem_680 _big_a _big_b _big_kab). Apply (rem_715 _big_a _big_b _big_kab); Assumption.
Qed.

Definition infer_agent_B_gets_forwarded_submessage_and_sends_confirmation_challenge := rem_716.

Remark rem_717 : (auto_agent alice). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_agent_alice_1; Assumption. Defined.

Definition infer_alice_is_an_agent := rem_717.

Remark rem_718 : (auto_agent bob). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_agent_bob_1; Assumption. Defined.

Definition infer_bob_is_an_agent := rem_718.

Remark rem_719 : (auto_agent server). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_agent_server_1; Assumption. Defined.

Definition infer_server_is_an_agent := rem_719.

Remark rem_720 : (auto_agent intruder). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_agent_intruder_1; Assumption. Defined.

Definition infer_intruder_is_an_agent := rem_720.

Remark rem_721 : (forall _x:term, (auto_agent _x) -> (auto_knows _x)) -> (auto_agent intruder) -> (auto_knows intruder). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_intruder_1; Assumption. Defined.

Remark rem_722 : (forall _x:term, (auto_agent _x) -> (auto_knows _x)) -> (auto_agent bob) -> (auto_knows bob). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_bob_1; Assumption. Defined.

Remark rem_723 : (forall _x:term, (auto_agent _x) -> (auto_knows _x)) -> (auto_agent server) -> (auto_knows server). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_server_1; Assumption. Defined.

Remark rem_724 : (forall _x:term, (auto_agent _x) -> (auto_knows _x)) -> (auto_agent alice) -> (auto_knows alice). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_alice_1; Assumption. Defined.

Remark rem_725 : (_big_x:term)(auto_agent _big_x) -> (auto_knows _big_x). (* Induct. *)
Proof.
   Fix epsilon_magent_pknows 1.
  Intro _x. Case _x; First [Exact (rem_721 epsilon_magent_pknows )
  | Exact (rem_722 epsilon_magent_pknows )
  | Exact (rem_723 epsilon_magent_pknows )
  | Exact (rem_724 epsilon_magent_pknows )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_726 : (_big_x:term)(auto_agent _big_x) -> (auto_knows _big_x). (* Split. *)
Proof.
   Intros _big_x.
  Cut (auto_agent _big_x) -> (auto_knows _big_x). Tauto.
  Exact (rem_725 _big_x).
Defined.

Definition infer_intruder_knows_all_agents := rem_726.

Remark rem_727 : (__x80,__x81:term)(auto___aux_52 __x80) -> (auto___aux_53 __x81) -> (auto_knows (crypt __x80 __x81)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_crypt_6; Assumption. Defined.

Remark rem_728 : forall _x1 _x2 : term, (auto___aux_47 (cons _x1 _x2)) -> or_0.
Proof.
  Intros. Inversion H.
Qed.

Remark rem_729 : (forall _x:term, (auto___aux_17 _x) -> (auto_alice_key _x) -> False) -> (forall _x:term, (auto___aux_35 _x) -> (auto___aux_47 _x) -> False) -> forall _x1 _x2 : term, (auto___aux_31 _x1) -> (auto___aux_33 _x2) -> (auto___aux_47 (cons _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_17_malice_key epsilon_m__aux_35_m__aux_47. Intros _x1 _x2. Intros H1 H2. Intro H.
  Elim (rem_728 _x1 _x2 H); Intros.
Defined.

Remark rem_730 : (forall _x:term, (auto___aux_17 _x) -> (auto_alice_key _x) -> False) -> (forall _x:term, (auto___aux_35 _x) -> (auto___aux_47 _x) -> False) -> forall _x1 _x2 : term, (auto___aux_35 (cons _x1 _x2)) -> (auto___aux_47 (cons _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_17_malice_key epsilon_m__aux_35_m__aux_47. Intros _x1 _x2. Intro H.
  Elim (rem_268 _x1 _x2 H); Intros.
  Apply (rem_729 epsilon_m__aux_17_malice_key epsilon_m__aux_35_m__aux_47 _x1 _x2); Tauto.
Defined.

Remark rem_731 : (forall _x:term, (auto___aux_17 _x) -> (auto_alice_key _x) -> False) -> (_x2:term)(auto___aux_35 _x2) -> (auto___aux_47 _x2) -> False. (* Induct. *)
Proof.
   Intros epsilon_m__aux_17_malice_key. Fix epsilon_m__aux_35_m__aux_47 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_730 epsilon_m__aux_17_malice_key epsilon_m__aux_35_m__aux_47 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_732 : (forall _x:term, (auto___aux_17 _x) -> (auto_alice_key _x) -> False) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> (auto___aux_24 _x1) -> (auto___aux_35 _x2) -> False. (* Split. *)
Proof.
   Intros epsilon_m__aux_17_malice_key. Intros _x1 _x2.
  Cut (auto___aux_35 _x2) -> (auto___aux_47 _x2) -> False. Clear  epsilon_m__aux_17_malice_key. Tauto.
  Exact (rem_731 epsilon_m__aux_17_malice_key _x2).
Defined.

Remark rem_733 : forall _x1 _x2 : term, (auto_alice_key (key _x1 _x2)) -> (or_1
    ((auto___aux_46 _x1) /\ (auto___aux_47 _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_734 : (forall _x:term, (auto___aux_17 _x) -> (auto_alice_key _x) -> False) -> forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_35 _x2) -> (auto_alice_key (key _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_17_malice_key. Intros _x1 _x2. Intros H1 H2. Intro H.
  Elim (rem_733 _x1 _x2 H); Intros.
  Apply (rem_732 epsilon_m__aux_17_malice_key _x1 _x2); Tauto.
Defined.

Remark rem_735 : (forall _x:term, (auto___aux_17 _x) -> (auto_alice_key _x) -> False) -> forall _x1 _x2 : term, (auto___aux_17 (key _x1 _x2)) -> (auto_alice_key (key _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_17_malice_key. Intros _x1 _x2. Intro H.
  Elim (rem_14 _x1 _x2 H); Intros.
  Apply (rem_734 epsilon_m__aux_17_malice_key _x1 _x2); Tauto.
Defined.

Remark rem_736 : (_big_kab:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> False. (* Induct. *)
Proof.
   Fix epsilon_m__aux_17_malice_key 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_735 epsilon_m__aux_17_malice_key _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_737 : (_big_kab,_big_nb:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_16 _big_nb) -> (auto___aux_52 _big_nb) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Cut False. 2:Apply (rem_736 _big_kab); Assumption.
  Tauto.
Defined.

Remark rem_738 : (_big_kab,_big_nb:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_16 _big_nb) -> (auto___aux_52 _big_nb) \/ (auto___aux_49 _big_nb) \/ False. (* Prove a smaller disjunction. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Case (rem_737 _big_kab _big_nb A1 A2 A3); Tauto.
Defined.

Remark rem_739 : (_big_kab,_big_nb:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_16 _big_nb) -> (auto___aux_52 (s _big_nb)). (* Deduce positive atom. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Case (rem_738 _big_kab _big_nb A1 A2 A3). Clear A1 A2 A3. Intros. Apply trans___aux_52_s_1; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2 A3. Intros. Apply trans___aux_52_s_2; Tauto.
  Clear A1 A2 A3. Tauto.
Defined.

Remark rem_740 : (_big_kab:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> False. (* Induct. *)
Proof.
   Fix epsilon_m__aux_17_malice_key 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_735 epsilon_m__aux_17_malice_key _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_741 : (_big_kab,_big_nb:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_36 _big_nb) -> (auto___aux_52 _big_nb) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Cut False. 2:Apply (rem_740 _big_kab); Assumption.
  Tauto.
Defined.

Remark rem_742 : (_big_kab,_big_nb:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_36 _big_nb) -> (auto___aux_52 _big_nb) \/ (auto___aux_49 _big_nb) \/ False. (* Prove a smaller disjunction. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Case (rem_741 _big_kab _big_nb A1 A2 A3); Tauto.
Defined.

Remark rem_743 : (_big_kab,_big_nb:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_36 _big_nb) -> (auto___aux_52 (s _big_nb)). (* Deduce positive atom. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Case (rem_742 _big_kab _big_nb A1 A2 A3). Clear A1 A2 A3. Intros. Apply trans___aux_52_s_1; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2 A3. Intros. Apply trans___aux_52_s_2; Tauto.
  Clear A1 A2 A3. Tauto.
Defined.

Remark rem_744 : (forall _x:term, (auto___aux_29 _x) -> (auto_alice_key _x) -> False) -> (forall _x:term, (auto___aux_32 _x) -> (auto___aux_47 _x) -> False) -> forall _x1 _x2 : term, (auto___aux_20 _x1) -> (auto___aux_33 _x2) -> (auto___aux_47 (cons _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_29_malice_key epsilon_m__aux_32_m__aux_47. Intros _x1 _x2. Intros H1 H2. Intro H.
  Elim (rem_728 _x1 _x2 H); Intros.
Defined.

Remark rem_745 : (forall _x:term, (auto___aux_29 _x) -> (auto_alice_key _x) -> False) -> (forall _x:term, (auto___aux_32 _x) -> (auto___aux_47 _x) -> False) -> forall _x1 _x2 : term, (auto___aux_32 (cons _x1 _x2)) -> (auto___aux_47 (cons _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_29_malice_key epsilon_m__aux_32_m__aux_47. Intros _x1 _x2. Intro H.
  Elim (rem_102 _x1 _x2 H); Intros.
  Apply (rem_744 epsilon_m__aux_29_malice_key epsilon_m__aux_32_m__aux_47 _x1 _x2); Tauto.
Defined.

Remark rem_746 : (forall _x:term, (auto___aux_29 _x) -> (auto_alice_key _x) -> False) -> (_x2:term)(auto___aux_32 _x2) -> (auto___aux_47 _x2) -> False. (* Induct. *)
Proof.
   Intros epsilon_m__aux_29_malice_key. Fix epsilon_m__aux_32_m__aux_47 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_745 epsilon_m__aux_29_malice_key epsilon_m__aux_32_m__aux_47 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_747 : (forall _x:term, (auto___aux_29 _x) -> (auto_alice_key _x) -> False) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> (auto___aux_24 _x1) -> (auto___aux_32 _x2) -> False. (* Split. *)
Proof.
   Intros epsilon_m__aux_29_malice_key. Intros _x1 _x2.
  Cut (auto___aux_32 _x2) -> (auto___aux_47 _x2) -> False. Clear  epsilon_m__aux_29_malice_key. Tauto.
  Exact (rem_746 epsilon_m__aux_29_malice_key _x2).
Defined.

Remark rem_748 : (forall _x:term, (auto___aux_29 _x) -> (auto_alice_key _x) -> False) -> forall _x1 _x2 : term, (auto___aux_24 _x1) -> (auto___aux_32 _x2) -> (auto_alice_key (key _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_29_malice_key. Intros _x1 _x2. Intros H1 H2. Intro H.
  Elim (rem_733 _x1 _x2 H); Intros.
  Apply (rem_747 epsilon_m__aux_29_malice_key _x1 _x2); Tauto.
Defined.

Remark rem_749 : (forall _x:term, (auto___aux_29 _x) -> (auto_alice_key _x) -> False) -> forall _x1 _x2 : term, (auto___aux_29 (key _x1 _x2)) -> (auto_alice_key (key _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_29_malice_key. Intros _x1 _x2. Intro H.
  Elim (rem_17 _x1 _x2 H); Intros.
  Apply (rem_748 epsilon_m__aux_29_malice_key _x1 _x2); Tauto.
Defined.

Remark rem_750 : (_big_kab:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> False. (* Induct. *)
Proof.
   Fix epsilon_m__aux_29_malice_key 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_749 epsilon_m__aux_29_malice_key _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_751 : (_big_kab,_big_nb:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_28 _big_nb) -> (auto___aux_52 _big_nb) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Cut False. 2:Apply (rem_750 _big_kab); Assumption.
  Tauto.
Defined.

Remark rem_752 : (_big_kab,_big_nb:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_28 _big_nb) -> (auto___aux_52 _big_nb) \/ (auto___aux_49 _big_nb) \/ False. (* Prove a smaller disjunction. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Case (rem_751 _big_kab _big_nb A1 A2 A3); Tauto.
Defined.

Remark rem_753 : (_big_kab,_big_nb:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_28 _big_nb) -> (auto___aux_52 (s _big_nb)). (* Deduce positive atom. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Case (rem_752 _big_kab _big_nb A1 A2 A3). Clear A1 A2 A3. Intros. Apply trans___aux_52_s_1; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2 A3. Intros. Apply trans___aux_52_s_2; Tauto.
  Clear A1 A2 A3. Tauto.
Defined.

Remark rem_754 : (_big_kab,_big_nb:term)(auto___aux_50 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_49 _big_nb) -> (auto___aux_52 (s _big_nb)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_52_s_2; Assumption. Defined.

Remark rem_755 : (_big_kab:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> False. (* Induct. *)
Proof.
   Fix epsilon_m__aux_29_malice_key 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_749 epsilon_m__aux_29_malice_key _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_756 : (_big_kab,_big_nb:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_43 _big_nb) -> (auto___aux_52 _big_nb) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Cut False. 2:Apply (rem_755 _big_kab); Assumption.
  Tauto.
Defined.

Remark rem_757 : (_big_kab,_big_nb:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_43 _big_nb) -> (auto___aux_52 _big_nb) \/ (auto___aux_49 _big_nb) \/ False. (* Prove a smaller disjunction. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Case (rem_756 _big_kab _big_nb A1 A2 A3); Tauto.
Defined.

Remark rem_758 : (_big_kab,_big_nb:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_43 _big_nb) -> (auto___aux_52 (s _big_nb)). (* Deduce positive atom. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Case (rem_757 _big_kab _big_nb A1 A2 A3). Clear A1 A2 A3. Intros. Apply trans___aux_52_s_1; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2 A3. Intros. Apply trans___aux_52_s_2; Tauto.
  Clear A1 A2 A3. Tauto.
Defined.

Remark rem_759 : (_big_kab,_big_nb:term)(auto___aux_53 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_52 _big_nb) -> (auto___aux_52 (s _big_nb)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_52_s_1; Assumption. Defined.

Remark rem_760 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> (forall _x:term, (auto___aux_46 _x) -> (auto___aux_56 _x) -> False) -> (auto___aux_56 sym) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_malice_key_mknows epsilon_m__aux_46_m__aux_56. Intro H.
  Elim (rem_279 H); Intros.
Defined.

Remark rem_761 : (auto___aux_46 sym) -> (or_1
    True).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_762 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> (forall _x:term, (auto___aux_46 _x) -> (auto___aux_56 _x) -> False) -> (auto___aux_46 sym) -> (auto___aux_56 sym) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_malice_key_mknows epsilon_m__aux_46_m__aux_56. Intro H.
  Elim (rem_761 H); Intros.
  Apply (rem_760 epsilon_malice_key_mknows epsilon_m__aux_46_m__aux_56); Tauto.
Defined.

Remark rem_763 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> forall _x1 : term, (auto___aux_46 _x1) -> (auto___aux_56 _x1) -> False. (* Induct. *)
Proof.
   Intros epsilon_malice_key_mknows. Fix epsilon_m__aux_46_m__aux_56 1.
  Intro _x. Case _x; First [Exact (rem_762 epsilon_malice_key_mknows epsilon_m__aux_46_m__aux_56 )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_764 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> forall _x1 _x2 : term, (auto___aux_56 _x1) -> (auto___aux_57 _x2) -> (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> False. (* Split. *)
Proof.
   Intros epsilon_malice_key_mknows. Intros _x1 _x2.
  Cut (auto___aux_46 _x1) -> (auto___aux_56 _x1) -> False. Clear  epsilon_malice_key_mknows. Tauto.
  Exact (rem_763 epsilon_malice_key_mknows _x1).
Defined.

Remark rem_765 : (forall _x:term, (auto___aux_47 _x) -> (auto___aux_59 _x) -> False) -> (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> forall _x1 _x2 _x3 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows _x3) -> (auto___aux_59 (current_session _x1 _x2 _x3)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_47_m__aux_59 epsilon_malice_key_mknows. Intros _x1 _x2 _x3. Intros H1 H2 H3. Intro H.
  Elim (rem_625 _x1 _x2 _x3 H); Intros.
Defined.

Remark rem_766 : forall _x1 _x2 _x3 : term, (auto___aux_47 (current_session _x1 _x2 _x3)) -> (or_1
    ((auto_knows _x1) /\ (auto_knows _x2) /\ (auto_knows _x3))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_1_intro_1; Tauto.
Qed.

Remark rem_767 : (forall _x:term, (auto___aux_47 _x) -> (auto___aux_59 _x) -> False) -> (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> forall _x1 _x2 _x3 : term, (auto___aux_47 (current_session _x1 _x2 _x3)) -> (auto___aux_59 (current_session _x1 _x2 _x3)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_47_m__aux_59 epsilon_malice_key_mknows. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_766 _x1 _x2 _x3 H); Intros.
  Apply (rem_765 epsilon_m__aux_47_m__aux_59 epsilon_malice_key_mknows _x1 _x2 _x3); Tauto.
Defined.

Remark rem_768 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> (_x2:term)(auto___aux_47 _x2) -> (auto___aux_59 _x2) -> False. (* Induct. *)
Proof.
   Intros epsilon_malice_key_mknows. Fix epsilon_m__aux_47_m__aux_59 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_767 epsilon_m__aux_47_m__aux_59 epsilon_malice_key_mknows _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_769 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> forall _x1 _x2 : term, (auto___aux_58 _x1) -> (auto___aux_59 _x2) -> (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> False. (* Split. *)
Proof.
   Intros epsilon_malice_key_mknows. Intros _x1 _x2.
  Cut (auto___aux_47 _x2) -> (auto___aux_59 _x2) -> False. Clear  epsilon_malice_key_mknows. Tauto.
  Exact (rem_768 epsilon_malice_key_mknows _x2).
Defined.

Remark rem_770 : (forall _x:term, (auto___aux_46 _x) -> (auto___aux_54 _x) -> False) -> (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> (auto___aux_54 sym) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_46_m__aux_54 epsilon_malice_key_mknows. Intro H.
  Elim (rem_282 H); Intros.
Defined.

Remark rem_771 : (forall _x:term, (auto___aux_46 _x) -> (auto___aux_54 _x) -> False) -> (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> (auto___aux_46 sym) -> (auto___aux_54 sym) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_46_m__aux_54 epsilon_malice_key_mknows. Intro H.
  Elim (rem_761 H); Intros.
  Apply (rem_770 epsilon_m__aux_46_m__aux_54 epsilon_malice_key_mknows); Tauto.
Defined.

Remark rem_772 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> forall _x1 : term, (auto___aux_46 _x1) -> (auto___aux_54 _x1) -> False. (* Induct. *)
Proof.
   Intros epsilon_malice_key_mknows. Fix epsilon_m__aux_46_m__aux_54 1.
  Intro _x. Case _x; First [Exact (rem_771 epsilon_m__aux_46_m__aux_54 epsilon_malice_key_mknows )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_773 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> False. (* Split. *)
Proof.
   Intros epsilon_malice_key_mknows. Intros _x1 _x2.
  Cut (auto___aux_46 _x1) -> (auto___aux_54 _x1) -> False. Clear  epsilon_malice_key_mknows. Tauto.
  Exact (rem_772 epsilon_malice_key_mknows _x1).
Defined.

Remark rem_774 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> forall _x1 _x2 : term, (auto___aux_54 _x1) -> (auto___aux_55 _x2) -> (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> False. (* Eliminate negative atom by universal clause. *)
Proof.
   Intros epsilon_malice_key_mknows. Intros _x1 _x2. Intros. Apply (rem_773 epsilon_malice_key_mknows _x1 _x2); Assumption.
Defined.

Remark rem_775 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> (auto_knows (key _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_malice_key_mknows. Intros _x1 _x2. Intros H1 H2. Intro H.
  Elim (rem_24 _x1 _x2 H); Intros.
  Apply (rem_764 epsilon_malice_key_mknows _x1 _x2); Tauto.
  Apply (rem_769 epsilon_malice_key_mknows _x1 _x2); Tauto.
  Apply (rem_774 epsilon_malice_key_mknows _x1 _x2); Tauto.
Defined.

Remark rem_776 : (forall _x:term, (auto_alice_key _x) -> (auto_knows _x) -> False) -> forall _x1 _x2 : term, (auto_alice_key (key _x1 _x2)) -> (auto_knows (key _x1 _x2)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros epsilon_malice_key_mknows. Intros _x1 _x2. Intro H.
  Elim (rem_733 _x1 _x2 H); Intros.
  Apply (rem_775 epsilon_malice_key_mknows _x1 _x2); Tauto.
Defined.

Remark rem_777 : (_big_kab:term)(auto_alice_key _big_kab) -> (auto_knows _big_kab) -> False. (* Induct. *)
Proof.
   Fix epsilon_malice_key_mknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_776 epsilon_malice_key_mknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_778 : (_big_kab,_big_nb:term)(auto_alice_key _big_kab) -> (auto_knows _big_kab) -> (auto_knows _big_nb) -> (auto___aux_52 _big_nb) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Cut False. 2:Apply (rem_777 _big_kab); Assumption.
  Tauto.
Defined.

Remark rem_779 : (_big_kab,_big_nb:term)(auto_alice_key _big_kab) -> (auto_knows _big_kab) -> (auto_knows _big_nb) -> (auto___aux_52 _big_nb) \/ (auto___aux_49 _big_nb) \/ False. (* Prove a smaller disjunction. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Case (rem_778 _big_kab _big_nb A1 A2 A3); Tauto.
Defined.

Remark rem_780 : (_big_kab,_big_nb:term)(auto_alice_key _big_kab) -> (auto_knows _big_kab) -> (auto_knows _big_nb) -> (auto___aux_52 (s _big_nb)). (* Deduce positive atom. *)
Proof.
   Intros _big_kab _big_nb. Intros A1 A2 A3.
  Case (rem_779 _big_kab _big_nb A1 A2 A3). Clear A1 A2 A3. Intros. Apply trans___aux_52_s_1; Tauto.
  Intro H; Case H; Clear H. Clear A1 A2 A3. Intros. Apply trans___aux_52_s_2; Tauto.
  Clear A1 A2 A3. Tauto.
Defined.

Remark rem_781 : forall _x1 _x2 : term, (auto___aux_51 (__aux__vars11 _x1 _x2)) -> (or_7
    ((auto___aux_17 _x1) /\ (auto_alice_key _x1) /\ (auto___aux_16 _x2))
    ((auto___aux_17 _x1) /\ (auto_alice_key _x1) /\ (auto___aux_36 _x2))
    ((auto___aux_29 _x1) /\ (auto_alice_key _x1) /\ (auto___aux_28 _x2))
    ((auto___aux_50 _x1) /\ (auto_alice_key _x1) /\ (auto___aux_49 _x2))
    ((auto___aux_29 _x1) /\ (auto_alice_key _x1) /\ (auto___aux_43 _x2))
    ((auto___aux_53 _x1) /\ (auto_alice_key _x1) /\ (auto___aux_52 _x2))
    ((auto_alice_key _x1) /\ (auto_knows _x1) /\ (auto_knows _x2))
).
Proof.
  Intros. Inversion H.
  Intros. Apply or_7_intro_1; Tauto.
  Intros. Apply or_7_intro_2; Tauto.
  Intros. Apply or_7_intro_3; Tauto.
  Intros. Apply or_7_intro_4; Tauto.
  Intros. Apply or_7_intro_5; Tauto.
  Intros. Apply or_7_intro_6; Tauto.
  Intros. Apply or_7_intro_7; Tauto.
Qed.

Remark rem_782 : (_big_kab,_big_nb:term)(auto___aux_51 (__aux__vars11 _big_kab _big_nb)) -> (auto___aux_52 (s _big_nb)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_nb. Intro H.
  Elim (rem_781 _big_kab _big_nb H); Intros.
  Apply (rem_739 _big_kab _big_nb); Tauto.
  Apply (rem_743 _big_kab _big_nb); Tauto.
  Apply (rem_753 _big_kab _big_nb); Tauto.
  Apply (rem_754 _big_kab _big_nb); Tauto.
  Apply (rem_758 _big_kab _big_nb); Tauto.
  Apply (rem_759 _big_kab _big_nb); Tauto.
  Apply (rem_780 _big_kab _big_nb); Tauto.
Defined.

Remark rem_783 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> (forall _x:term, (auto___aux_46 _x) -> (auto___aux_24 _x)) -> (auto___aux_46 sym) -> (auto___aux_24 sym). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_24_sym_1; Assumption. Defined.

Remark rem_784 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 : term, (auto___aux_46 _x1) -> (auto___aux_24 _x1). (* Induct. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Fix epsilon_m__aux_46_p__aux_24 1.
  Intro _x. Case _x; First [Exact (rem_783 epsilon_malice_key_p__aux_53 epsilon_m__aux_46_p__aux_24 )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_785 : (forall _x:term, (auto___aux_47 _x) -> (auto___aux_25 _x)) -> (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 _x3 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows _x3) -> (auto___aux_25 (current_session _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_25_current_session_1; Assumption. Defined.

Remark rem_786 : (forall _x:term, (auto___aux_47 _x) -> (auto___aux_25 _x)) -> (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_47 (current_session _x1 _x2 _x3)) -> (auto___aux_25 (current_session _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_766 _x1 _x2 _x3 H); Intros.
  Apply (rem_785 epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53 _x1 _x2 _x3); Tauto.
Defined.

Remark rem_787 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> (_x2:term)(auto___aux_47 _x2) -> (auto___aux_25 _x2). (* Induct. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Fix epsilon_m__aux_47_p__aux_25 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_786 epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53 _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_788 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> ((auto___aux_24 _x1) /\ (auto___aux_46 _x1) /\ (auto___aux_25 _x2) /\ (auto___aux_47 _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intros A1 A2.
  Cut (auto___aux_24 _x1). 2:Apply (rem_784 epsilon_malice_key_p__aux_53 _x1); Assumption.
  Cut (auto___aux_25 _x2). 2:Apply (rem_787 epsilon_malice_key_p__aux_53 _x2); Assumption.
  Tauto.
Defined.

Remark rem_789 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> (auto___aux_53 (key _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intros A1 A2.
  Case (rem_788 epsilon_malice_key_p__aux_53 _x1 _x2 A1 A2). Clear epsilon_malice_key_p__aux_53 A1 A2. Intros. Apply trans___aux_53_key_1; Tauto.
  Clear epsilon_malice_key_p__aux_53 A1 A2. Tauto.
Defined.

Remark rem_790 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto_alice_key (key _x1 _x2)) -> (auto___aux_53 (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intro H.
  Elim (rem_733 _x1 _x2 H); Intros.
  Apply (rem_789 epsilon_malice_key_p__aux_53 _x1 _x2); Tauto.
Defined.

Remark rem_791 : (_big_kab:term)(auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Induct. *)
Proof.
   Fix epsilon_malice_key_p__aux_53 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_790 epsilon_malice_key_p__aux_53 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_792 : (_big_kab:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Subsumption by simpler clause. *)
Proof.
   Intros _big_kab.
  Cut (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto. Exact (rem_791 _big_kab).
Defined.

Remark rem_793 : (_big_kab,_big_nb:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_16 _big_nb) -> (auto___aux_53 _big_kab). (* Split. *)
Proof.
   Intros _big_kab _big_nb.
  Cut (auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto.
  Exact (rem_792 _big_kab).
Defined.

Remark rem_794 : (_big_kab:term)(auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Induct. *)
Proof.
   Fix epsilon_malice_key_p__aux_53 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_790 epsilon_malice_key_p__aux_53 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_795 : (_big_kab:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Subsumption by simpler clause. *)
Proof.
   Intros _big_kab.
  Cut (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto. Exact (rem_794 _big_kab).
Defined.

Remark rem_796 : (_big_kab,_big_nb:term)(auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_36 _big_nb) -> (auto___aux_53 _big_kab). (* Split. *)
Proof.
   Intros _big_kab _big_nb.
  Cut (auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto.
  Exact (rem_795 _big_kab).
Defined.

Remark rem_797 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> (forall _x:term, (auto___aux_46 _x) -> (auto___aux_24 _x)) -> (auto___aux_46 sym) -> (auto___aux_24 sym). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_24_sym_1; Assumption. Defined.

Remark rem_798 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 : term, (auto___aux_46 _x1) -> (auto___aux_24 _x1). (* Induct. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Fix epsilon_m__aux_46_p__aux_24 1.
  Intro _x. Case _x; First [Exact (rem_797 epsilon_malice_key_p__aux_53 epsilon_m__aux_46_p__aux_24 )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_799 : (forall _x:term, (auto___aux_47 _x) -> (auto___aux_25 _x)) -> (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 _x3 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows _x3) -> (auto___aux_25 (current_session _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_25_current_session_1; Assumption. Defined.

Remark rem_800 : (forall _x:term, (auto___aux_47 _x) -> (auto___aux_25 _x)) -> (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_47 (current_session _x1 _x2 _x3)) -> (auto___aux_25 (current_session _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_766 _x1 _x2 _x3 H); Intros.
  Apply (rem_799 epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53 _x1 _x2 _x3); Tauto.
Defined.

Remark rem_801 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> (_x2:term)(auto___aux_47 _x2) -> (auto___aux_25 _x2). (* Induct. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Fix epsilon_m__aux_47_p__aux_25 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_800 epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53 _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_802 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> ((auto___aux_24 _x1) /\ (auto___aux_46 _x1) /\ (auto___aux_25 _x2) /\ (auto___aux_47 _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intros A1 A2.
  Cut (auto___aux_24 _x1). 2:Apply (rem_798 epsilon_malice_key_p__aux_53 _x1); Assumption.
  Cut (auto___aux_25 _x2). 2:Apply (rem_801 epsilon_malice_key_p__aux_53 _x2); Assumption.
  Tauto.
Defined.

Remark rem_803 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> (auto___aux_53 (key _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intros A1 A2.
  Case (rem_802 epsilon_malice_key_p__aux_53 _x1 _x2 A1 A2). Clear epsilon_malice_key_p__aux_53 A1 A2. Intros. Apply trans___aux_53_key_1; Tauto.
  Clear epsilon_malice_key_p__aux_53 A1 A2. Tauto.
Defined.

Remark rem_804 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto_alice_key (key _x1 _x2)) -> (auto___aux_53 (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intro H.
  Elim (rem_733 _x1 _x2 H); Intros.
  Apply (rem_803 epsilon_malice_key_p__aux_53 _x1 _x2); Tauto.
Defined.

Remark rem_805 : (_big_kab:term)(auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Induct. *)
Proof.
   Fix epsilon_malice_key_p__aux_53 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_804 epsilon_malice_key_p__aux_53 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_806 : (_big_kab:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Subsumption by simpler clause. *)
Proof.
   Intros _big_kab.
  Cut (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto. Exact (rem_805 _big_kab).
Defined.

Remark rem_807 : (_big_kab,_big_nb:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_28 _big_nb) -> (auto___aux_53 _big_kab). (* Split. *)
Proof.
   Intros _big_kab _big_nb.
  Cut (auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto.
  Exact (rem_806 _big_kab).
Defined.

Remark rem_808 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> (forall _x:term, (auto___aux_46 _x) -> (auto___aux_24 _x)) -> (auto___aux_46 sym) -> (auto___aux_24 sym). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_24_sym_1; Assumption. Defined.

Remark rem_809 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 : term, (auto___aux_46 _x1) -> (auto___aux_24 _x1). (* Induct. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Fix epsilon_m__aux_46_p__aux_24 1.
  Intro _x. Case _x; First [Exact (rem_808 epsilon_malice_key_p__aux_53 epsilon_m__aux_46_p__aux_24 )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_810 : (forall _x:term, (auto___aux_47 _x) -> (auto___aux_25 _x)) -> (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 _x3 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows _x3) -> (auto___aux_25 (current_session _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_25_current_session_1; Assumption. Defined.

Remark rem_811 : (forall _x:term, (auto___aux_47 _x) -> (auto___aux_25 _x)) -> (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_47 (current_session _x1 _x2 _x3)) -> (auto___aux_25 (current_session _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_766 _x1 _x2 _x3 H); Intros.
  Apply (rem_810 epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53 _x1 _x2 _x3); Tauto.
Defined.

Remark rem_812 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> (_x2:term)(auto___aux_47 _x2) -> (auto___aux_25 _x2). (* Induct. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Fix epsilon_m__aux_47_p__aux_25 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_811 epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53 _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_813 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> ((auto___aux_24 _x1) /\ (auto___aux_46 _x1) /\ (auto___aux_25 _x2) /\ (auto___aux_47 _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intros A1 A2.
  Cut (auto___aux_24 _x1). 2:Apply (rem_809 epsilon_malice_key_p__aux_53 _x1); Assumption.
  Cut (auto___aux_25 _x2). 2:Apply (rem_812 epsilon_malice_key_p__aux_53 _x2); Assumption.
  Tauto.
Defined.

Remark rem_814 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> (auto___aux_53 (key _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intros A1 A2.
  Case (rem_813 epsilon_malice_key_p__aux_53 _x1 _x2 A1 A2). Clear epsilon_malice_key_p__aux_53 A1 A2. Intros. Apply trans___aux_53_key_1; Tauto.
  Clear epsilon_malice_key_p__aux_53 A1 A2. Tauto.
Defined.

Remark rem_815 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto_alice_key (key _x1 _x2)) -> (auto___aux_53 (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intro H.
  Elim (rem_733 _x1 _x2 H); Intros.
  Apply (rem_814 epsilon_malice_key_p__aux_53 _x1 _x2); Tauto.
Defined.

Remark rem_816 : (_big_kab:term)(auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Induct. *)
Proof.
   Fix epsilon_malice_key_p__aux_53 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_815 epsilon_malice_key_p__aux_53 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_817 : (_big_kab:term)(auto___aux_50 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Subsumption by simpler clause. *)
Proof.
   Intros _big_kab.
  Cut (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto. Exact (rem_816 _big_kab).
Defined.

Remark rem_818 : (_big_kab,_big_nb:term)(auto___aux_50 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_49 _big_nb) -> (auto___aux_53 _big_kab). (* Split. *)
Proof.
   Intros _big_kab _big_nb.
  Cut (auto___aux_50 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto.
  Exact (rem_817 _big_kab).
Defined.

Remark rem_819 : (_big_kab:term)(auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Induct. *)
Proof.
   Fix epsilon_malice_key_p__aux_53 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_815 epsilon_malice_key_p__aux_53 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_820 : (_big_kab:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Subsumption by simpler clause. *)
Proof.
   Intros _big_kab.
  Cut (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto. Exact (rem_819 _big_kab).
Defined.

Remark rem_821 : (_big_kab,_big_nb:term)(auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_43 _big_nb) -> (auto___aux_53 _big_kab). (* Split. *)
Proof.
   Intros _big_kab _big_nb.
  Cut (auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto.
  Exact (rem_820 _big_kab).
Defined.

Remark rem_822 : (_big_kab,_big_nb:term)(auto___aux_53 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_52 _big_nb) -> (auto___aux_53 _big_kab). (* Tautology. *)
Proof. Tauto. Defined.

Remark rem_823 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> (forall _x:term, (auto___aux_46 _x) -> (auto___aux_24 _x)) -> (auto___aux_46 sym) -> (auto___aux_24 sym). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_24_sym_1; Assumption. Defined.

Remark rem_824 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 : term, (auto___aux_46 _x1) -> (auto___aux_24 _x1). (* Induct. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Fix epsilon_m__aux_46_p__aux_24 1.
  Intro _x. Case _x; First [Exact (rem_823 epsilon_malice_key_p__aux_53 epsilon_m__aux_46_p__aux_24 )
  |  Intros until 1; Inversion H].
Defined.

Remark rem_825 : (forall _x:term, (auto___aux_47 _x) -> (auto___aux_25 _x)) -> (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 _x3 : term, (auto_knows _x1) -> (auto_knows _x2) -> (auto_knows _x3) -> (auto___aux_25 (current_session _x1 _x2 _x3)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_25_current_session_1; Assumption. Defined.

Remark rem_826 : (forall _x:term, (auto___aux_47 _x) -> (auto___aux_25 _x)) -> (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 _x3 : term, (auto___aux_47 (current_session _x1 _x2 _x3)) -> (auto___aux_25 (current_session _x1 _x2 _x3)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53. Intros _x1 _x2 _x3. Intro H.
  Elim (rem_766 _x1 _x2 _x3 H); Intros.
  Apply (rem_825 epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53 _x1 _x2 _x3); Tauto.
Defined.

Remark rem_827 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> (_x2:term)(auto___aux_47 _x2) -> (auto___aux_25 _x2). (* Induct. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Fix epsilon_m__aux_47_p__aux_25 1.
  Intro _x. Case _x; First [ Intros _x1 _x2 _x3; Exact (rem_826 epsilon_m__aux_47_p__aux_25 epsilon_malice_key_p__aux_53 _x1 _x2 _x3)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_828 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> ((auto___aux_24 _x1) /\ (auto___aux_46 _x1) /\ (auto___aux_25 _x2) /\ (auto___aux_47 _x2)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intros A1 A2.
  Cut (auto___aux_24 _x1). 2:Apply (rem_824 epsilon_malice_key_p__aux_53 _x1); Assumption.
  Cut (auto___aux_25 _x2). 2:Apply (rem_827 epsilon_malice_key_p__aux_53 _x2); Assumption.
  Tauto.
Defined.

Remark rem_829 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto___aux_46 _x1) -> (auto___aux_47 _x2) -> (auto___aux_53 (key _x1 _x2)). (* Deduce positive atom. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intros A1 A2.
  Case (rem_828 epsilon_malice_key_p__aux_53 _x1 _x2 A1 A2). Clear epsilon_malice_key_p__aux_53 A1 A2. Intros. Apply trans___aux_53_key_1; Tauto.
  Clear epsilon_malice_key_p__aux_53 A1 A2. Tauto.
Defined.

Remark rem_830 : (forall _x:term, (auto_alice_key _x) -> (auto___aux_53 _x)) -> forall _x1 _x2 : term, (auto_alice_key (key _x1 _x2)) -> (auto___aux_53 (key _x1 _x2)). (* Eliminate negative atom. *)
Proof.
   Intros epsilon_malice_key_p__aux_53. Intros _x1 _x2. Intro H.
  Elim (rem_733 _x1 _x2 H); Intros.
  Apply (rem_829 epsilon_malice_key_p__aux_53 _x1 _x2); Tauto.
Defined.

Remark rem_831 : (_big_kab:term)(auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). (* Induct. *)
Proof.
   Fix epsilon_malice_key_p__aux_53 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_830 epsilon_malice_key_p__aux_53 _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_832 : (_big_kab:term)(auto_alice_key _big_kab) -> (auto_knows _big_kab) -> (auto___aux_53 _big_kab). (* Subsumption by simpler clause. *)
Proof.
   Intros _big_kab.
  Cut (auto_alice_key _big_kab) -> (auto___aux_53 _big_kab). Tauto. Exact (rem_831 _big_kab).
Defined.

Remark rem_833 : (_big_kab,_big_nb:term)(auto_alice_key _big_kab) -> (auto_knows _big_kab) -> (auto_knows _big_nb) -> (auto___aux_53 _big_kab). (* Split. *)
Proof.
   Intros _big_kab _big_nb.
  Cut (auto_alice_key _big_kab) -> (auto_knows _big_kab) -> (auto___aux_53 _big_kab). Tauto.
  Exact (rem_832 _big_kab).
Defined.

Remark rem_834 : (_big_kab,_big_nb:term)(auto___aux_51 (__aux__vars11 _big_kab _big_nb)) -> (auto___aux_53 _big_kab). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_nb. Intro H.
  Elim (rem_781 _big_kab _big_nb H); Intros.
  Apply (rem_793 _big_kab _big_nb); Tauto.
  Apply (rem_796 _big_kab _big_nb); Tauto.
  Apply (rem_807 _big_kab _big_nb); Tauto.
  Apply (rem_818 _big_kab _big_nb); Tauto.
  Apply (rem_821 _big_kab _big_nb); Tauto.
  Apply (rem_822 _big_kab _big_nb); Tauto.
  Apply (rem_833 _big_kab _big_nb); Tauto.
Defined.

Remark rem_835 : (_big_kab,_big_nb:term)(auto___aux_51 (__aux__vars11 _big_kab _big_nb)) -> (auto_knows (crypt (s _big_nb) _big_kab)). (* Resolve. *)
Proof.
   Intros _big_kab _big_nb. Intros. Apply rem_727.
  Apply (rem_782 _big_kab _big_nb); Assumption.
  Apply (rem_834 _big_kab _big_nb); Assumption.
Qed.

Remark rem_836 : (_big_kab,_big_nb:term)(auto___aux_16 _big_nb) -> (auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_51 (__aux__vars11 _big_kab _big_nb)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_51___aux__vars11_1; Assumption. Defined.

Remark rem_837 : (_big_kab,_big_nb:term)(auto___aux_43 _big_nb) -> (auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_51 (__aux__vars11 _big_kab _big_nb)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_51___aux__vars11_5; Assumption. Defined.

Remark rem_838 : (_big_kab,_big_nb:term)(auto_knows _big_nb) -> (auto_knows _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_51 (__aux__vars11 _big_kab _big_nb)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_51___aux__vars11_7; Assumption. Defined.

Remark rem_839 : (_big_kab,_big_nb:term)(auto___aux_28 _big_nb) -> (auto___aux_29 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_51 (__aux__vars11 _big_kab _big_nb)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_51___aux__vars11_3; Assumption. Defined.

Remark rem_840 : (_big_kab,_big_nb:term)(auto___aux_49 _big_nb) -> (auto___aux_50 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_51 (__aux__vars11 _big_kab _big_nb)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_51___aux__vars11_4; Assumption. Defined.

Remark rem_841 : (_big_kab,_big_nb:term)(auto___aux_52 _big_nb) -> (auto___aux_53 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_51 (__aux__vars11 _big_kab _big_nb)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_51___aux__vars11_6; Assumption. Defined.

Remark rem_842 : (_big_kab,_big_nb:term)(auto___aux_36 _big_nb) -> (auto___aux_17 _big_kab) -> (auto_alice_key _big_kab) -> (auto___aux_51 (__aux__vars11 _big_kab _big_nb)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_51___aux__vars11_2; Assumption. Defined.

Remark rem_843 : (_big_kab,_big_nb:term)(auto_knows (crypt _big_nb _big_kab)) -> (auto_alice_key _big_kab) -> (auto___aux_51 (__aux__vars11 _big_kab _big_nb)). (* Eliminate negative atom. *)
Proof.
   Intros _big_kab _big_nb. Intro H.
  Elim (rem_37 _big_nb _big_kab H); Intros.
  Apply (rem_836 _big_kab _big_nb); Tauto.
  Apply (rem_837 _big_kab _big_nb); Tauto.
  Apply (rem_838 _big_kab _big_nb); Tauto.
  Apply (rem_839 _big_kab _big_nb); Tauto.
  Apply (rem_840 _big_kab _big_nb); Tauto.
  Apply (rem_841 _big_kab _big_nb); Tauto.
  Apply (rem_842 _big_kab _big_nb); Tauto.
Defined.

Remark rem_844 : (_big_kab,_big_nb:term)(auto_knows (crypt _big_nb _big_kab)) -> (auto_alice_key _big_kab) -> (auto_knows (crypt (s _big_nb) _big_kab)). (* Cut. *)
Proof.
   Intros _big_kab _big_nb. Intros. Apply (rem_835 _big_kab _big_nb). Apply (rem_843 _big_kab _big_nb); Assumption.
Qed.

Definition infer_alice_answers_confirmation_challenge := rem_844.

Remark rem_845 : (__x82,__x83:term)(auto___aux_54 __x82) -> (auto___aux_55 __x83) -> (auto_knows (key __x82 __x83)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_3; Assumption. Defined.

Remark rem_846 : (auto___aux_54 pub). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_54_pub_1; Assumption. Defined.

Remark rem_847 : (_big_x:term)(auto___aux_55 _big_x). (* Subsumed by universal clause. *)
Proof. Intros. Apply trans___aux_55_1. Defined.

Remark rem_848 : (_big_x:term)(auto_knows (key pub _big_x)). (* Resolve. *)
Proof.
   Intros _big_x. Intros. Apply rem_845.
  Apply rem_846; Assumption.
  Apply (rem_847 _big_x); Assumption.
Qed.

Definition infer_intruder_knows_every_public_key := rem_848.

Remark rem_849 : (__x84,__x85:term)(auto___aux_56 __x84) -> (auto___aux_57 __x85) -> (auto_knows (key __x84 __x85)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_1; Assumption. Defined.

Remark rem_850 : (auto___aux_56 prv). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_56_prv_1; Assumption. Defined.

Remark rem_851 : (auto___aux_57 intruder). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_57_intruder_1; Assumption. Defined.

Remark rem_852 : (auto_knows (key prv intruder)). (* Resolve. *)
Proof.
   Intros. Apply rem_849.
  Apply rem_850; Assumption.
  Apply rem_851; Assumption.
Qed.

Definition infer_intruder_knows_own_private_key := rem_852.

Remark rem_853 : (__x86,__x87:term)(auto___aux_58 __x86) -> (auto___aux_59 __x87) -> (auto_knows (key __x86 __x87)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans_knows_key_2; Assumption. Defined.

Remark rem_854 : (auto___aux_58 sym). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_58_sym_1; Assumption. Defined.

Remark rem_855 : (_big_a,_big_b,_big_na:term)(auto___aux_59 (old_session _big_a _big_b _big_na)). (* Subsumed by automaton clause. *)
Proof. Intros. Apply trans___aux_59_old_session_1; Assumption. Defined.

Remark rem_856 : (_big_a,_big_b,_big_na:term)(auto_knows (key sym (old_session _big_a _big_b _big_na))). (* Resolve. *)
Proof.
   Intros _big_a _big_b _big_na. Intros. Apply rem_853.
  Apply rem_854; Assumption.
  Apply (rem_855 _big_a _big_b _big_na); Assumption.
Qed.

Definition infer_intruder_knows_all_previous_session_keys := rem_856.

Remark rem_857 : (_big_na:term)(auto___aux_56 sym) -> (auto___aux_57 (current_session alice bob _big_na)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros _big_na. Intro H.
  Elim (rem_279 H); Intros.
Defined.

Remark rem_858 : (_big_na:term)(auto___aux_59 (current_session alice bob _big_na)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros _big_na. Intro H.
  Elim (rem_625 alice bob _big_na H); Intros.
Defined.

Remark rem_859 : (_big_na:term)(auto___aux_58 sym) -> (auto___aux_59 (current_session alice bob _big_na)) -> False. (* Eliminate negative atom. *)
Proof.
   Intros _big_na. Intro H.
  Elim (rem_555 H); Intros.
  Apply (rem_858 _big_na); Tauto.
Defined.

Remark rem_860 : (auto___aux_54 sym) -> False. (* Eliminate negative atom. *)
Proof.
   Intro H.
  Elim (rem_282 H); Intros.
Defined.

Remark rem_861 : (_big_na:term)(auto___aux_54 sym) -> (auto___aux_55 (current_session alice bob _big_na)) -> False. (* Eliminate negative atom by universal clause. *)
Proof.
   Intros _big_na. Intros. Apply rem_860; Assumption.
Defined.

Remark rem_862 : (_big_na:term)(auto_knows (key sym (current_session alice bob _big_na))) -> False. (* Eliminate negative atom. *)
Proof.
   Intros _big_na. Intro H.
  Elim (rem_24 sym (current_session alice bob _big_na) H); Intros.
  Apply (rem_857 _big_na); Tauto.
  Apply (rem_859 _big_na); Tauto.
  Apply (rem_861 _big_na); Tauto.
Defined.

Definition infer_intruder_knows_session_key_generated_by_server := rem_862.

Remark rem_863 : (_big_kab:term)(auto_alice_key _big_kab) -> (auto_knows _big_kab) -> False. (* Induct. *)
Proof.
   Fix epsilon_malice_key_mknows 1.
  Intro _x. Case _x; First [ Intros _x1 _x2; Exact (rem_776 epsilon_malice_key_mknows _x1 _x2)
  |  Intros until 1; Inversion H].
Defined.

Remark rem_864 : (_big_kab:term)(auto_knows _big_kab) -> (auto_alice_key _big_kab) -> False. (* Split. *)
Proof.
   Intros _big_kab.
  Cut (auto_alice_key _big_kab) -> (auto_knows _big_kab) -> False. Tauto.
  Exact (rem_863 _big_kab).
Defined.

Definition infer_intruder_knows_session_key_as_seen_by_alice := rem_864.
