(* [sigd] Signature definition. *)

Inductive term : Set :=
    alice : term
  | bob : term
  | cons : term -> term -> term
  | crypt : term -> term -> term
  | dec : term -> term -> term
  | enc : term -> term -> term
  | i : term
  | key : term -> term -> term
  | nil : term
  | noncea_current : term -> term -> term
  | noncea_old : term -> term -> term
  | nonceb_current : term -> term -> term
  | nonceb_old : term -> term -> term
  | p : term -> term
  | passwd_current : term -> term -> term
  | passwd_old : term -> term -> term
  | prv : term
  | pub : term
  | r_current : term -> term -> term
  | r_old : term -> term -> term
  | s : term -> term
  | server : term
  | session_current : term -> term -> term
  | session_old : term -> term -> term
  | sym : term
.

(* [modd] Model definition. *)

Inductive auto___type_9 : term -> Prop :=
    trans___type_9_1 : forall X:term, auto___type_9 X
with auto___type_10 : term -> Prop :=
    trans___type_10_1 : forall X:term, auto___type_10 X
with auto___def_9 : term -> Prop :=
    trans___def_9_nil_1 : auto___def_9 nil
with auto_alice_key_old : term -> term -> Prop :=
    trans_alice_key_old_1 : forall X1 X2:term, auto_alice_key_old X1 X2
with auto___type_12 : term -> Prop :=
    trans___type_12_crypt_1 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_2 : forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_3 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_4 : forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_5 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_6 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_bob_1 : auto___type_12 bob
  | trans___type_12_p_1 : forall X1:term, auto_testable_old X1 -> auto___type_12 (p X1)
  | trans___type_12_alice_1 : auto___type_12 alice
  | trans___type_12_dec_1 : forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_12 (dec X1 X2)
  | trans___type_12_enc_1 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___type_12 (enc X1 X2)
  | trans___type_12_enc_2 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___type_12 (enc X1 X2)
  | trans___type_12_enc_3 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___type_12 (enc X1 X2)
  | trans___type_12_enc_4 : forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_12 (enc X1 X2)
  | trans___type_12_cons_1 : forall X1 X2:term, auto_testable_old X2 -> auto___type_12 (cons X1 X2)
  | trans___type_12_cons_2 : forall X1 X2:term, auto_testable_old X1 -> auto___type_12 (cons X1 X2)
  | trans___type_12_s_1 : forall X1:term, auto_testable_old X1 -> auto___type_12 (s X1)
  | trans___type_12_i_1 : auto___type_12 i
  | trans___type_12_nil_1 : auto___type_12 nil
  | trans___type_12_server_1 : auto___type_12 server
  | trans___type_12_key_1 : forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_12 (key X1 X2)
  | trans___type_12_key_2 : forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___type_12 (key X1 X2)
  | trans___type_12_key_3 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_12 (key X1 X2)
with auto___def_25 : term -> Prop :=
    trans___def_25_key_1 : forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto___def_25 (key X1 X2)
with auto___def_53 : term -> Prop :=
    trans___def_53_pub_1 : auto___def_53 pub
with auto___type_27 : term -> Prop :=
    trans___type_27_crypt_1 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_crypt_2 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_crypt_3 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_crypt_4 : forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_crypt_5 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_crypt_6 : forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_crypt_7 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_crypt_8 : forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_crypt_9 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_crypt_10 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_crypt_11 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_27 (crypt X1 X2)
  | trans___type_27_bob_1 : auto___type_27 bob
  | trans___type_27_noncea_old_1 : forall X1 X2:term, auto___type_27 (noncea_old X1 X2)
  | trans___type_27_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___type_27 (r_old X1 X2)
  | trans___type_27_p_1 : forall X1:term, auto_testable_current X1 -> auto___type_27 (p X1)
  | trans___type_27_passwd_old_1 : forall X1 X2:term, auto___type_27 (passwd_old X1 X2)
  | trans___type_27_alice_1 : auto___type_27 alice
  | trans___type_27_nonceb_old_1 : forall X1 X2:term, auto___type_27 (nonceb_old X1 X2)
  | trans___type_27_dec_1 : forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_27 (dec X1 X2)
  | trans___type_27_enc_1 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_27 (enc X1 X2)
  | trans___type_27_enc_2 : forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_27 (enc X1 X2)
  | trans___type_27_enc_3 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_27 (enc X1 X2)
  | trans___type_27_enc_4 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_27 (enc X1 X2)
  | trans___type_27_cons_1 : forall X1 X2:term, auto_testable_current X2 -> auto___type_27 (cons X1 X2)
  | trans___type_27_cons_2 : forall X1 X2:term, auto_testable_current X1 -> auto___type_27 (cons X1 X2)
  | trans___type_27_s_1 : forall X1:term, auto_testable_current X1 -> auto___type_27 (s X1)
  | trans___type_27_i_1 : auto___type_27 i
  | trans___type_27_nil_1 : auto___type_27 nil
  | trans___type_27_server_1 : auto___type_27 server
  | trans___type_27_key_1 : forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_27 (key X1 X2)
  | trans___type_27_key_2 : forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___type_27 (key X1 X2)
  | trans___type_27_key_3 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_27 (key X1 X2)
  | trans___type_27_key_4 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_27 (key X1 X2)
with auto___def_114 : term -> Prop :=
    trans___def_114_prv_1 : auto___def_114 prv
with auto___type_20 : term -> Prop :=
    trans___type_20_nonceb_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___type_20 (nonceb_current X1 X2)
  | trans___type_20_cons_1 : forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_20 (cons X1 X2)
  | trans___type_20_noncea_current_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_20 (noncea_current X1 X2)
with auto___def_10 : term -> Prop :=
    trans___def_10_key_1 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_10 (key X1 X2)
with auto___def_87 : term -> term -> term -> Prop :=
    trans___def_87_1 : forall X1 X2 X3:term, auto___type_22 X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3
  | trans___def_87_2 : forall X1 X2 X3:term, auto___def_96 X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3
  | trans___def_87_3 : forall X1 X2 X3:term, auto___def_84 X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3
with auto___def_57 : term -> Prop :=
    trans___def_57_sym_1 : auto___def_57 sym
with auto_alice_key_current : term -> term -> Prop :=
    trans_alice_key_current_1 : forall X1 X2:term, auto_agent X1 -> auto___def_94 X2 -> auto___def_77 X2 -> auto_alice_key_current X1 X2
with auto___def_90 : term -> Prop :=
    trans___def_90_cons_1 : forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> auto___def_90 (cons X1 X2)
with auto___def_75 : term -> Prop :=
    trans___def_75_crypt_1 : forall X1 X2:term, auto___def_77 X1 -> auto___type_17 X2 -> auto___def_75 (crypt X1 X2)
with auto___def_58 : term -> Prop :=
    trans___def_58_prv_1 : auto___def_58 prv
with auto___def_105 : term -> Prop :=
    trans___def_105_sym_1 : auto___def_105 sym
with auto___def_93 : term -> Prop :=
    trans___def_93_sym_1 : auto___def_93 sym
with auto___def_28 : term -> Prop :=
    trans___def_28_cons_1 : forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> auto___def_28 (cons X1 X2)
with auto___type_29 : term -> Prop :=
    trans___type_29_session_old_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_29 (session_old X1 X2)
  | trans___type_29_bob_1 : auto___type_29 bob
  | trans___type_29_alice_1 : auto___type_29 alice
  | trans___type_29_i_1 : auto___type_29 i
  | trans___type_29_server_1 : auto___type_29 server
with auto___def_27 : term -> term -> term -> Prop :=
    trans___def_27_1 : forall X1 X2 X3:term, auto___def_24 X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3
  | trans___def_27_2 : forall X1 X2 X3:term, auto___def_28 X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3
  | trans___def_27_3 : forall X1 X2 X3:term, auto___type_7 X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3
with auto___def_31 : term -> Prop :=
    trans___def_31_nonceb_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___def_31 (nonceb_old X1 X2)
with auto___def_5 : term -> term -> Prop :=
    trans___def_5_1 : forall X1 X2:term, auto___def_42 X1 -> auto___def_36 X2 -> auto___def_5 X1 X2
  | trans___def_5_2 : forall X1 X2:term, auto___type_8 X1 -> auto___type_7 X2 -> auto___def_5 X1 X2
  | trans___def_5_3 : forall X1 X2:term, auto___type_4 X1 -> auto___def_24 X2 -> auto___def_5 X1 X2
with auto___def_4 : term -> Prop :=
    trans___def_4_bob_1 : auto___def_4 bob
  | trans___def_4_alice_1 : auto___def_4 alice
  | trans___def_4_i_1 : auto___def_4 i
  | trans___def_4_server_1 : auto___def_4 server
with auto___type_22 : term -> Prop :=
    trans___type_22_nonceb_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___type_22 (nonceb_current X1 X2)
with auto___def_34 : term -> Prop :=
    trans___def_34_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___def_34 (r_old X1 X2)
with auto___def_67 : term -> term -> Prop :=
    trans___def_67_1 : forall X1 X2:term, auto___type_19 X1 -> auto___def_84 X2 -> auto___def_67 X1 X2
  | trans___def_67_2 : forall X1 X2:term, auto___def_42 X1 -> auto___def_36 X2 -> auto___def_67 X1 X2
  | trans___def_67_3 : forall X1 X2:term, auto___type_23 X1 -> auto___type_22 X2 -> auto___def_67 X1 X2
  | trans___def_67_4 : forall X1 X2:term, auto___type_8 X1 -> auto___type_7 X2 -> auto___def_67 X1 X2
  | trans___def_67_5 : forall X1 X2:term, auto___def_102 X1 -> auto___def_96 X2 -> auto___def_67 X1 X2
  | trans___def_67_6 : forall X1 X2:term, auto___type_4 X1 -> auto___def_24 X2 -> auto___def_67 X1 X2
with auto___def_41 : term -> Prop :=
    trans___def_41_sym_1 : auto___def_41 sym
with auto___def_102 : term -> Prop :=
    trans___def_102_r_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_102 (r_current X1 X2)
with auto___type_2 : term -> Prop :=
    trans___type_2_crypt_1 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 (crypt X1 X2)
  | trans___type_2_crypt_2 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_2 (crypt X1 X2)
  | trans___type_2_key_1 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_2 (key X1 X2)
with auto_testable_old : term -> Prop :=
    trans_testable_old_crypt_1 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_testable_old (crypt X1 X2)
  | trans_testable_old_crypt_2 : forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto_testable_old (crypt X1 X2)
  | trans_testable_old_crypt_3 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_testable_old (crypt X1 X2)
  | trans_testable_old_crypt_4 : forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto_testable_old (crypt X1 X2)
  | trans_testable_old_crypt_5 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_testable_old (crypt X1 X2)
  | trans_testable_old_crypt_6 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old (crypt X1 X2)
  | trans_testable_old_bob_1 : auto_testable_old bob
  | trans_testable_old_p_1 : forall X1:term, auto_testable_old X1 -> auto_testable_old (p X1)
  | trans_testable_old_alice_1 : auto_testable_old alice
  | trans_testable_old_dec_1 : forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old (dec X1 X2)
  | trans_testable_old_enc_1 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_testable_old (enc X1 X2)
  | trans_testable_old_enc_2 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_testable_old (enc X1 X2)
  | trans_testable_old_enc_3 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_testable_old (enc X1 X2)
  | trans_testable_old_enc_4 : forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old (enc X1 X2)
  | trans_testable_old_cons_1 : forall X1 X2:term, auto_testable_old X2 -> auto_testable_old (cons X1 X2)
  | trans_testable_old_cons_2 : forall X1 X2:term, auto_testable_old X1 -> auto_testable_old (cons X1 X2)
  | trans_testable_old_s_1 : forall X1:term, auto_testable_old X1 -> auto_testable_old (s X1)
  | trans_testable_old_i_1 : auto_testable_old i
  | trans_testable_old_nil_1 : auto_testable_old nil
  | trans_testable_old_server_1 : auto_testable_old server
  | trans_testable_old_key_1 : forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto_testable_old (key X1 X2)
  | trans_testable_old_key_2 : forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto_testable_old (key X1 X2)
  | trans_testable_old_key_3 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_testable_old (key X1 X2)
with auto___def_14 : term -> term -> term -> Prop :=
    trans___def_14_1 : forall X1 X2 X3:term, auto___def_19 X2 -> auto_knows_old X3 -> auto___def_14 X1 X2 X3
  | trans___def_14_2 : forall X1 X2 X3:term, auto_agent X1 -> auto___def_10 X2 -> auto_agent X3 -> auto___def_14 X1 X2 X3
  | trans___def_14_3 : forall X1 X2 X3:term, auto___def_15 X2 -> auto_knows_old X3 -> auto___def_14 X1 X2 X3
with auto___def_99 : term -> Prop :=
    trans___def_99_nonceb_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_99 (nonceb_current X1 X2)
with auto___type_8 : term -> Prop :=
    trans___type_8_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___type_8 (r_old X1 X2)
with auto___type_6 : term -> Prop :=
    trans___type_6_noncea_old_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_6 (noncea_old X1 X2)
  | trans___type_6_nonceb_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___type_6 (nonceb_old X1 X2)
  | trans___type_6_cons_1 : forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___type_6 (cons X1 X2)
with auto___def_76 : term -> Prop :=
    trans___def_76_passwd_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_76 (passwd_current X1 X2)
with auto___def_2 : term -> Prop :=
    trans___def_2_i_1 : auto___def_2 i
with auto___def_51 : term -> Prop :=
    trans___def_51_pub_1 : auto___def_51 pub
with auto___def_92 : term -> Prop :=
    trans___def_92_nil_1 : auto___def_92 nil
with auto___def_111 : term -> Prop :=
    trans___def_111_key_1 : forall X1 X2:term, auto___def_112 X1 -> auto___def_64 X2 -> auto___def_111 (key X1 X2)
with auto___def_20 : term -> Prop :=
    trans___def_20_passwd_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___def_20 (passwd_old X1 X2)
with auto_testable_current : term -> Prop :=
    trans_testable_current_crypt_1 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_crypt_2 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_crypt_3 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_crypt_4 : forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_crypt_5 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_crypt_6 : forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_crypt_7 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_crypt_8 : forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_crypt_9 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_crypt_10 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_crypt_11 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto_testable_current (crypt X1 X2)
  | trans_testable_current_bob_1 : auto_testable_current bob
  | trans_testable_current_noncea_old_1 : forall X1 X2:term, auto_testable_current (noncea_old X1 X2)
  | trans_testable_current_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto_testable_current (r_old X1 X2)
  | trans_testable_current_p_1 : forall X1:term, auto_testable_current X1 -> auto_testable_current (p X1)
  | trans_testable_current_passwd_old_1 : forall X1 X2:term, auto_testable_current (passwd_old X1 X2)
  | trans_testable_current_alice_1 : auto_testable_current alice
  | trans_testable_current_nonceb_old_1 : forall X1 X2:term, auto_testable_current (nonceb_old X1 X2)
  | trans_testable_current_dec_1 : forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current (dec X1 X2)
  | trans_testable_current_enc_1 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto_testable_current (enc X1 X2)
  | trans_testable_current_enc_2 : forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current (enc X1 X2)
  | trans_testable_current_enc_3 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto_testable_current (enc X1 X2)
  | trans_testable_current_enc_4 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto_testable_current (enc X1 X2)
  | trans_testable_current_cons_1 : forall X1 X2:term, auto_testable_current X2 -> auto_testable_current (cons X1 X2)
  | trans_testable_current_cons_2 : forall X1 X2:term, auto_testable_current X1 -> auto_testable_current (cons X1 X2)
  | trans_testable_current_s_1 : forall X1:term, auto_testable_current X1 -> auto_testable_current (s X1)
  | trans_testable_current_i_1 : auto_testable_current i
  | trans_testable_current_nil_1 : auto_testable_current nil
  | trans_testable_current_server_1 : auto_testable_current server
  | trans_testable_current_key_1 : forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto_testable_current (key X1 X2)
  | trans_testable_current_key_2 : forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto_testable_current (key X1 X2)
  | trans_testable_current_key_3 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_testable_current (key X1 X2)
  | trans_testable_current_key_4 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_testable_current (key X1 X2)
with auto___def_23 : term -> term -> term -> Prop :=
    trans___def_23_1 : forall X1 X2 X3:term, auto___def_17 X1 -> auto_agent X2 -> auto_agent X3 -> auto___def_23 X1 X2 X3
with auto___def_72 : term -> Prop :=
    trans___def_72_passwd_current_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___def_72 (passwd_current X1 X2)
with auto___type_7 : term -> Prop :=
    trans___type_7_nonceb_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___type_7 (nonceb_old X1 X2)
with auto___type_15 : term -> Prop :=
    trans___type_15_i_1 : auto___type_15 i
with auto___def_66 : term -> Prop :=
    trans___def_66_session_old_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___def_66 (session_old X1 X2)
  | trans___def_66_bob_1 : auto___def_66 bob
  | trans___def_66_alice_1 : auto___def_66 alice
  | trans___def_66_i_1 : auto___def_66 i
  | trans___def_66_server_1 : auto___def_66 server
with auto___def_79 : term -> Prop :=
    trans___def_79_crypt_1 : forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> auto___def_79 (crypt X1 X2)
with auto___def_35 : term -> term -> term -> Prop :=
    trans___def_35_1 : forall X1 X2 X3:term, auto___def_24 X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3
  | trans___def_35_2 : forall X1 X2 X3:term, auto___def_28 X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3
  | trans___def_35_3 : forall X1 X2 X3:term, auto___type_7 X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3
with auto___def_103 : term -> term -> Prop :=
    trans___def_103_1 : forall X1 X2:term, auto___def_94 X1 -> auto___def_77 X1 -> auto___def_91 X2 -> auto___def_103 X1 X2
with auto___def_94 : term -> Prop :=
    trans___def_94_r_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_94 (r_current X1 X2)
with auto___def_96 : term -> Prop :=
    trans___def_96_cons_1 : forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___def_96 (cons X1 X2)
with auto___type_25 : term -> Prop :=
    trans___type_25_crypt_1 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_25 (crypt X1 X2)
  | trans___type_25_crypt_2 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_25 (crypt X1 X2)
  | trans___type_25_crypt_3 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_25 (crypt X1 X2)
  | trans___type_25_crypt_4 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_25 (crypt X1 X2)
  | trans___type_25_crypt_5 : forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_25 (crypt X1 X2)
  | trans___type_25_crypt_6 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_25 (crypt X1 X2)
  | trans___type_25_crypt_7 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_25 (crypt X1 X2)
  | trans___type_25_crypt_8 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_25 (crypt X1 X2)
  | trans___type_25_crypt_9 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_25 (crypt X1 X2)
  | trans___type_25_bob_1 : auto___type_25 bob
  | trans___type_25_noncea_old_1 : forall X1 X2:term, auto___type_25 (noncea_old X1 X2)
  | trans___type_25_p_1 : forall X1:term, auto_knows_current X1 -> auto___type_25 (p X1)
  | trans___type_25_passwd_old_1 : forall X1 X2:term, auto___type_25 (passwd_old X1 X2)
  | trans___type_25_alice_1 : auto___type_25 alice
  | trans___type_25_nonceb_old_1 : forall X1 X2:term, auto___type_25 (nonceb_old X1 X2)
  | trans___type_25_dec_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_25 (dec X1 X2)
  | trans___type_25_enc_1 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_25 (enc X1 X2)
  | trans___type_25_enc_2 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_25 (enc X1 X2)
  | trans___type_25_enc_3 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_25 (enc X1 X2)
  | trans___type_25_enc_4 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_25 (enc X1 X2)
  | trans___type_25_cons_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_25 (cons X1 X2)
  | trans___type_25_s_1 : forall X1:term, auto_knows_current X1 -> auto___type_25 (s X1)
  | trans___type_25_i_1 : auto___type_25 i
  | trans___type_25_nil_1 : auto___type_25 nil
  | trans___type_25_server_1 : auto___type_25 server
  | trans___type_25_key_1 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___type_25 (key X1 X2)
  | trans___type_25_key_2 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_25 (key X1 X2)
  | trans___type_25_key_3 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_25 (key X1 X2)
with auto___def_73 : term -> Prop :=
    trans___def_73_session_current_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___def_73 (session_current X1 X2)
with auto___def_44 : term -> Prop :=
    trans___def_44_key_1 : forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> auto___def_44 (key X1 X2)
with auto___def_117 : term -> Prop :=
    trans___def_117_prv_1 : auto___def_117 prv
with auto___def_77 : term -> Prop :=
    trans___def_77_r_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_77 (r_current X1 X2)
with auto___def_109 : term -> term -> Prop :=
    trans___def_109_1 : forall X1 X2:term, auto_knows_current X2 -> auto___def_109 X1 X2
with auto___def_63 : term -> term -> Prop :=
    trans___def_63_1 : forall X1 X2:term, auto_agent X1 -> auto_knows_current X2 -> auto___def_63 X1 X2
  | trans___def_63_2 : forall X1 X2:term, auto___def_13 X1 -> auto_knows_current X2 -> auto___def_63 X1 X2
  | trans___def_63_3 : forall X1 X2:term, auto___def_13 X1 -> auto___def_17 X2 -> auto___def_63 X1 X2
with auto___def_22 : term -> Prop :=
    trans___def_22_dec_1 : forall X1 X2:term, auto___type_3 X1 -> auto___def_20 X2 -> auto___def_22 (dec X1 X2)
with auto___def_108 : term -> Prop :=
    trans___def_108_r_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_108 (r_current X1 X2)
with auto___def_106 : term -> term -> term -> term -> Prop :=
    trans___def_106_1 : forall X1 X2 X3 X4:term, auto___def_94 X1 -> auto_agent X2 -> auto___def_91 X3 -> auto_agent X4 -> auto___def_106 X1 X2 X3 X4
with auto___type_4 : term -> Prop :=
    trans___type_4_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___type_4 (r_old X1 X2)
with auto___def_84 : term -> Prop :=
    trans___def_84_noncea_current_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___def_84 (noncea_current X1 X2)
with auto___def_38 : term -> Prop :=
    trans___def_38_cons_1 : forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto___def_38 (cons X1 X2)
with auto___def_61 : term -> Prop :=
    trans___def_61_prv_1 : auto___def_61 prv
with auto___type_11 : term -> Prop :=
    trans___type_11_crypt_1 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_2 : forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_3 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_4 : forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_5 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_6 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_bob_1 : auto___type_11 bob
  | trans___type_11_p_1 : forall X1:term, auto_testable_old X1 -> auto___type_11 (p X1)
  | trans___type_11_alice_1 : auto___type_11 alice
  | trans___type_11_dec_1 : forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_11 (dec X1 X2)
  | trans___type_11_enc_1 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___type_11 (enc X1 X2)
  | trans___type_11_enc_2 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___type_11 (enc X1 X2)
  | trans___type_11_enc_3 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___type_11 (enc X1 X2)
  | trans___type_11_enc_4 : forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_11 (enc X1 X2)
  | trans___type_11_cons_1 : forall X1 X2:term, auto_testable_old X2 -> auto___type_11 (cons X1 X2)
  | trans___type_11_cons_2 : forall X1 X2:term, auto_testable_old X1 -> auto___type_11 (cons X1 X2)
  | trans___type_11_s_1 : forall X1:term, auto_testable_old X1 -> auto___type_11 (s X1)
  | trans___type_11_i_1 : auto___type_11 i
  | trans___type_11_nil_1 : auto___type_11 nil
  | trans___type_11_server_1 : auto___type_11 server
  | trans___type_11_key_1 : forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_11 (key X1 X2)
  | trans___type_11_key_2 : forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___type_11 (key X1 X2)
  | trans___type_11_key_3 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_11 (key X1 X2)
with auto___def_81 : term -> Prop :=
    trans___def_81_r_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_81 (r_current X1 X2)
with auto_bob_key_current : term -> term -> Prop :=
    trans_bob_key_current_1 : forall X1 X2:term, auto___type_24 X1 -> auto___def_108 X2 -> auto_bob_key_current X1 X2
with auto___def_42 : term -> Prop :=
    trans___def_42_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___def_42 (r_old X1 X2)
with auto___def_85 : term -> Prop :=
    trans___def_85_key_1 : forall X1 X2:term, auto___def_86 X1 -> auto___type_19 X2 -> auto___def_85 (key X1 X2)
with auto___def_70 : term -> Prop :=
    trans___def_70_enc_1 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_70 (enc X1 X2)
with auto___def_1 : term -> term -> Prop :=
    trans___def_1_1 : forall X1 X2:term, auto_agent X1 -> auto_knows_old X2 -> auto___def_1 X1 X2
with auto___def_110 : term -> Prop :=
    trans___def_110_r_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_110 (r_current X1 X2)
with auto___def_86 : term -> Prop :=
    trans___def_86_sym_1 : auto___def_86 sym
with auto_knows_current : term -> Prop :=
    trans_knows_current_crypt_1 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_2 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_3 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_4 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_5 : forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_6 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_7 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_8 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_9 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_bob_1 : auto_knows_current bob
  | trans_knows_current_noncea_old_1 : forall X1 X2:term, auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_p_1 : forall X1:term, auto_knows_current X1 -> auto_knows_current (p X1)
  | trans_knows_current_passwd_old_1 : forall X1 X2:term, auto_knows_current (passwd_old X1 X2)
  | trans_knows_current_alice_1 : auto_knows_current alice
  | trans_knows_current_nonceb_old_1 : forall X1 X2:term, auto_knows_current (nonceb_old X1 X2)
  | trans_knows_current_dec_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (dec X1 X2)
  | trans_knows_current_enc_1 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto_knows_current (enc X1 X2)
  | trans_knows_current_enc_2 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (enc X1 X2)
  | trans_knows_current_enc_3 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto_knows_current (enc X1 X2)
  | trans_knows_current_enc_4 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto_knows_current (enc X1 X2)
  | trans_knows_current_cons_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (cons X1 X2)
  | trans_knows_current_s_1 : forall X1:term, auto_knows_current X1 -> auto_knows_current (s X1)
  | trans_knows_current_i_1 : auto_knows_current i
  | trans_knows_current_nil_1 : auto_knows_current nil
  | trans_knows_current_server_1 : auto_knows_current server
  | trans_knows_current_key_1 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_2 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_3 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_knows_current (key X1 X2)
with auto___def_19 : term -> Prop :=
    trans___def_19_crypt_1 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_19 (crypt X1 X2)
with auto___def_50 : term -> Prop :=
    trans___def_50_r_old_1 : forall X1 X2:term, auto___def_50 (r_old X1 X2)
with auto___def_30 : term -> Prop :=
    trans___def_30_cons_1 : forall X1 X2:term, auto___def_31 X1 -> auto___def_32 X2 -> auto___def_30 (cons X1 X2)
with auto___def_48 : term -> Prop :=
    trans___def_48_r_old_1 : forall X1 X2:term, auto___def_48 (r_old X1 X2)
with auto___def_39 : term -> Prop :=
    trans___def_39_nonceb_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___def_39 (nonceb_old X1 X2)
with auto_bob_key_old : term -> term -> Prop :=
    trans_bob_key_old_1 : forall X1 X2:term, auto_bob_key_old X1 X2
with auto___def_11 : term -> Prop :=
    trans___def_11_passwd_old_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___def_11 (passwd_old X1 X2)
with auto___def_78 : term -> term -> Prop :=
    trans___def_78_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___def_78 X1 X2
with auto___def_82 : term -> Prop :=
    trans___def_82_dec_1 : forall X1 X2:term, auto___type_18 X1 -> auto___def_80 X2 -> auto___def_82 (dec X1 X2)
with auto___type_5 : term -> Prop :=
    trans___type_5_noncea_old_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_5 (noncea_old X1 X2)
  | trans___type_5_nonceb_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___type_5 (nonceb_old X1 X2)
  | trans___type_5_cons_1 : forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___type_5 (cons X1 X2)
with auto___type_13 : term -> Prop :=
    trans___type_13_crypt_1 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_2 : forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_3 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_4 : forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_5 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_6 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_bob_1 : auto___type_13 bob
  | trans___type_13_p_1 : forall X1:term, auto_testable_old X1 -> auto___type_13 (p X1)
  | trans___type_13_alice_1 : auto___type_13 alice
  | trans___type_13_dec_1 : forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_13 (dec X1 X2)
  | trans___type_13_enc_1 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___type_13 (enc X1 X2)
  | trans___type_13_enc_2 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___type_13 (enc X1 X2)
  | trans___type_13_enc_3 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___type_13 (enc X1 X2)
  | trans___type_13_enc_4 : forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_13 (enc X1 X2)
  | trans___type_13_cons_1 : forall X1 X2:term, auto_testable_old X2 -> auto___type_13 (cons X1 X2)
  | trans___type_13_cons_2 : forall X1 X2:term, auto_testable_old X1 -> auto___type_13 (cons X1 X2)
  | trans___type_13_s_1 : forall X1:term, auto_testable_old X1 -> auto___type_13 (s X1)
  | trans___type_13_i_1 : auto___type_13 i
  | trans___type_13_nil_1 : auto___type_13 nil
  | trans___type_13_server_1 : auto___type_13 server
  | trans___type_13_key_1 : forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_13 (key X1 X2)
  | trans___type_13_key_2 : forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___type_13 (key X1 X2)
  | trans___type_13_key_3 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_13 (key X1 X2)
with auto___def_101 : term -> Prop :=
    trans___def_101_sym_1 : auto___def_101 sym
with auto___def_49 : term -> term -> Prop :=
    trans___def_49_1 : forall X1 X2:term, auto___def_49 X1 X2
with auto___def_7 : term -> Prop :=
    trans___def_7_cons_1 : forall X1 X2:term, auto___def_8 X1 -> auto___def_9 X2 -> auto___def_7 (cons X1 X2)
with auto___def_91 : term -> Prop :=
    trans___def_91_nonceb_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_91 (nonceb_current X1 X2)
with auto___def_46 : term -> term -> term -> term -> Prop :=
    trans___def_46_1 : forall X1 X2 X3 X4:term, auto___def_46 X1 X2 X3 X4
with auto___def_118 : term -> Prop :=
    trans___def_118_pub_1 : auto___def_118 pub
with auto___type_30 : term -> Prop :=
    trans___type_30_i_1 : auto___type_30 i
with auto___type_31 : term -> Prop :=
    trans___type_31_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___type_31 (r_old X1 X2)
  | trans___type_31_r_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___type_31 (r_current X1 X2)
with auto___def_24 : term -> Prop :=
    trans___def_24_noncea_old_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___def_24 (noncea_old X1 X2)
with auto___def_100 : term -> Prop :=
    trans___def_100_nil_1 : auto___def_100 nil
with auto___def_119 : term -> Prop :=
    trans___def_119_sym_1 : auto___def_119 sym
with auto___def_60 : term -> Prop :=
    trans___def_60_sym_1 : auto___def_60 sym
with auto___def_55 : term -> Prop :=
    trans___def_55_prv_1 : auto___def_55 prv
with auto___def_47 : term -> term -> Prop :=
    trans___def_47_1 : forall X1 X2:term, auto___def_47 X1 X2
with auto___def_45 : term -> Prop :=
    trans___def_45_sym_1 : auto___def_45 sym
with auto___def_54 : term -> Prop :=
    trans___def_54_key_1 : forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_54 (key X1 X2)
with auto___def_52 : term -> Prop :=
    trans___def_52_key_1 : forall X1 X2:term, auto___def_53 X1 -> auto___def_2 X2 -> auto___def_52 (key X1 X2)
with auto___type_24 : term -> Prop :=
    trans___type_24_crypt_1 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_24 (crypt X1 X2)
  | trans___type_24_crypt_2 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_24 (crypt X1 X2)
  | trans___type_24_crypt_3 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_24 (crypt X1 X2)
  | trans___type_24_crypt_4 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (crypt X1 X2)
  | trans___type_24_crypt_5 : forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_24 (crypt X1 X2)
  | trans___type_24_crypt_6 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_24 (crypt X1 X2)
  | trans___type_24_crypt_7 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_24 (crypt X1 X2)
  | trans___type_24_crypt_8 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_24 (crypt X1 X2)
  | trans___type_24_crypt_9 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_24 (crypt X1 X2)
  | trans___type_24_bob_1 : auto___type_24 bob
  | trans___type_24_noncea_old_1 : forall X1 X2:term, auto___type_24 (noncea_old X1 X2)
  | trans___type_24_p_1 : forall X1:term, auto_knows_current X1 -> auto___type_24 (p X1)
  | trans___type_24_passwd_old_1 : forall X1 X2:term, auto___type_24 (passwd_old X1 X2)
  | trans___type_24_alice_1 : auto___type_24 alice
  | trans___type_24_nonceb_old_1 : forall X1 X2:term, auto___type_24 (nonceb_old X1 X2)
  | trans___type_24_dec_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (dec X1 X2)
  | trans___type_24_enc_1 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_24 (enc X1 X2)
  | trans___type_24_enc_2 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (enc X1 X2)
  | trans___type_24_enc_3 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_24 (enc X1 X2)
  | trans___type_24_enc_4 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_24 (enc X1 X2)
  | trans___type_24_cons_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (cons X1 X2)
  | trans___type_24_s_1 : forall X1:term, auto_knows_current X1 -> auto___type_24 (s X1)
  | trans___type_24_i_1 : auto___type_24 i
  | trans___type_24_nil_1 : auto___type_24 nil
  | trans___type_24_server_1 : auto___type_24 server
  | trans___type_24_key_1 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___type_24 (key X1 X2)
  | trans___type_24_key_2 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_24 (key X1 X2)
  | trans___type_24_key_3 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_24 (key X1 X2)
with auto___def_26 : term -> Prop :=
    trans___def_26_sym_1 : auto___def_26 sym
with auto___def_116 : term -> Prop :=
    trans___def_116_sym_1 : auto___def_116 sym
with auto___def_80 : term -> Prop :=
    trans___def_80_passwd_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_80 (passwd_current X1 X2)
with auto___type_16 : term -> Prop :=
    trans___type_16_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___type_16 (r_old X1 X2)
with auto___def_12 : term -> Prop :=
    trans___def_12_pub_1 : auto___def_12 pub
with auto___def_65 : term -> term -> Prop :=
    trans___def_65_1 : forall X1 X2:term, auto___def_62 X1 -> auto_knows_current X2 -> auto___def_65 X1 X2
with auto___def_113 : term -> Prop :=
    trans___def_113_key_1 : forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_113 (key X1 X2)
with auto___def_3 : term -> term -> Prop :=
    trans___def_3_1 : forall X1 X2:term, auto___def_62 X1 -> auto_knows_old X2 -> auto___def_3 X1 X2
with auto___def_88 : term -> Prop :=
    trans___def_88_cons_1 : forall X1 X2:term, auto___type_20 X1 -> auto___def_90 X2 -> auto___def_88 (cons X1 X2)
with auto___def_89 : term -> Prop :=
    trans___def_89_key_1 : forall X1 X2:term, auto___def_93 X1 -> auto___def_94 X2 -> auto___def_89 (key X1 X2)
with auto___def_104 : term -> Prop :=
    trans___def_104_key_1 : forall X1 X2:term, auto___def_105 X1 -> auto___type_23 X2 -> auto___def_104 (key X1 X2)
with auto___def_32 : term -> Prop :=
    trans___def_32_nil_1 : auto___def_32 nil
with auto___def_62 : term -> Prop :=
    trans___def_62_i_1 : auto___def_62 i
with auto___type_28 : term -> Prop :=
    trans___type_28_crypt_1 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_crypt_2 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_crypt_3 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_crypt_4 : forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_crypt_5 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_crypt_6 : forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_crypt_7 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_crypt_8 : forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_crypt_9 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_crypt_10 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_crypt_11 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_28 (crypt X1 X2)
  | trans___type_28_bob_1 : auto___type_28 bob
  | trans___type_28_noncea_old_1 : forall X1 X2:term, auto___type_28 (noncea_old X1 X2)
  | trans___type_28_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___type_28 (r_old X1 X2)
  | trans___type_28_p_1 : forall X1:term, auto_testable_current X1 -> auto___type_28 (p X1)
  | trans___type_28_passwd_old_1 : forall X1 X2:term, auto___type_28 (passwd_old X1 X2)
  | trans___type_28_alice_1 : auto___type_28 alice
  | trans___type_28_nonceb_old_1 : forall X1 X2:term, auto___type_28 (nonceb_old X1 X2)
  | trans___type_28_dec_1 : forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_28 (dec X1 X2)
  | trans___type_28_enc_1 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_28 (enc X1 X2)
  | trans___type_28_enc_2 : forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_28 (enc X1 X2)
  | trans___type_28_enc_3 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_28 (enc X1 X2)
  | trans___type_28_enc_4 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_28 (enc X1 X2)
  | trans___type_28_cons_1 : forall X1 X2:term, auto_testable_current X2 -> auto___type_28 (cons X1 X2)
  | trans___type_28_cons_2 : forall X1 X2:term, auto_testable_current X1 -> auto___type_28 (cons X1 X2)
  | trans___type_28_s_1 : forall X1:term, auto_testable_current X1 -> auto___type_28 (s X1)
  | trans___type_28_i_1 : auto___type_28 i
  | trans___type_28_nil_1 : auto___type_28 nil
  | trans___type_28_server_1 : auto___type_28 server
  | trans___type_28_key_1 : forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_28 (key X1 X2)
  | trans___type_28_key_2 : forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___type_28 (key X1 X2)
  | trans___type_28_key_3 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_28 (key X1 X2)
  | trans___type_28_key_4 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_28 (key X1 X2)
with auto___def_83 : term -> term -> term -> Prop :=
    trans___def_83_1 : forall X1 X2 X3:term, auto___def_77 X1 -> auto_agent X2 -> auto_agent X3 -> auto___def_83 X1 X2 X3
with auto___def_17 : term -> Prop :=
    trans___def_17_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___def_17 (r_old X1 X2)
with auto___def_59 : term -> Prop :=
    trans___def_59_pub_1 : auto___def_59 pub
with auto___def_97 : term -> Prop :=
    trans___def_97_key_1 : forall X1 X2:term, auto___def_101 X1 -> auto___def_102 X2 -> auto___def_97 (key X1 X2)
with auto___def_98 : term -> Prop :=
    trans___def_98_cons_1 : forall X1 X2:term, auto___def_99 X1 -> auto___def_100 X2 -> auto___def_98 (cons X1 X2)
with auto___def_71 : term -> Prop :=
    trans___def_71_key_1 : forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___def_71 (key X1 X2)
with auto_agent : term -> Prop :=
    trans_agent_bob_1 : auto_agent bob
  | trans_agent_alice_1 : auto_agent alice
  | trans_agent_i_1 : auto_agent i
  | trans_agent_server_1 : auto_agent server
with auto___def_69 : term -> Prop :=
    trans___def_69_cons_1 : forall X1 X2:term, auto___def_70 X1 -> auto___def_9 X2 -> auto___def_69 (cons X1 X2)
with auto___def_33 : term -> Prop :=
    trans___def_33_sym_1 : auto___def_33 sym
with auto___type_14 : term -> Prop :=
    trans___type_14_bob_1 : auto___type_14 bob
  | trans___type_14_alice_1 : auto___type_14 alice
  | trans___type_14_i_1 : auto___type_14 i
  | trans___type_14_server_1 : auto___type_14 server
with auto___type_19 : term -> Prop :=
    trans___type_19_r_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___type_19 (r_current X1 X2)
with auto_knows_old : term -> Prop :=
    trans_knows_old_crypt_1 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_2 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_3 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_4 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_bob_1 : auto_knows_old bob
  | trans_knows_old_p_1 : forall X1:term, auto_knows_old X1 -> auto_knows_old (p X1)
  | trans_knows_old_alice_1 : auto_knows_old alice
  | trans_knows_old_dec_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (dec X1 X2)
  | trans_knows_old_enc_1 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_knows_old (enc X1 X2)
  | trans_knows_old_enc_2 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_knows_old (enc X1 X2)
  | trans_knows_old_enc_3 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_knows_old (enc X1 X2)
  | trans_knows_old_enc_4 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (enc X1 X2)
  | trans_knows_old_cons_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (cons X1 X2)
  | trans_knows_old_s_1 : forall X1:term, auto_knows_old X1 -> auto_knows_old (s X1)
  | trans_knows_old_i_1 : auto_knows_old i
  | trans_knows_old_nil_1 : auto_knows_old nil
  | trans_knows_old_server_1 : auto_knows_old server
  | trans_knows_old_key_1 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_2 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_knows_old (key X1 X2)
with auto___def_37 : term -> Prop :=
    trans___def_37_key_1 : forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> auto___def_37 (key X1 X2)
with auto___def_112 : term -> Prop :=
    trans___def_112_pub_1 : auto___def_112 pub
with auto___def_13 : term -> Prop :=
    trans___def_13_session_old_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___def_13 (session_old X1 X2)
with auto___def_40 : term -> Prop :=
    trans___def_40_nil_1 : auto___def_40 nil
with auto___def_64 : term -> Prop :=
    trans___def_64_i_1 : auto___def_64 i
with auto___def_8 : term -> Prop :=
    trans___def_8_enc_1 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_8 (enc X1 X2)
with auto___type_3 : term -> Prop :=
    trans___type_3_crypt_1 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_3 (crypt X1 X2)
  | trans___type_3_crypt_2 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_3 (crypt X1 X2)
  | trans___type_3_crypt_3 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_3 (crypt X1 X2)
  | trans___type_3_crypt_4 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_3 (crypt X1 X2)
  | trans___type_3_bob_1 : auto___type_3 bob
  | trans___type_3_p_1 : forall X1:term, auto_knows_old X1 -> auto___type_3 (p X1)
  | trans___type_3_alice_1 : auto___type_3 alice
  | trans___type_3_dec_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_3 (dec X1 X2)
  | trans___type_3_enc_1 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___type_3 (enc X1 X2)
  | trans___type_3_enc_2 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___type_3 (enc X1 X2)
  | trans___type_3_enc_3 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___type_3 (enc X1 X2)
  | trans___type_3_enc_4 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_3 (enc X1 X2)
  | trans___type_3_cons_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_3 (cons X1 X2)
  | trans___type_3_s_1 : forall X1:term, auto_knows_old X1 -> auto___type_3 (s X1)
  | trans___type_3_i_1 : auto___type_3 i
  | trans___type_3_nil_1 : auto___type_3 nil
  | trans___type_3_server_1 : auto___type_3 server
  | trans___type_3_key_1 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___type_3 (key X1 X2)
  | trans___type_3_key_2 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_3 (key X1 X2)
with auto___def_36 : term -> Prop :=
    trans___def_36_cons_1 : forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___def_36 (cons X1 X2)
with auto___type_1 : term -> Prop :=
    trans___type_1_bob_1 : auto___type_1 bob
  | trans___type_1_alice_1 : auto___type_1 alice
  | trans___type_1_i_1 : auto___type_1 i
  | trans___type_1_server_1 : auto___type_1 server
with auto___def_29 : term -> Prop :=
    trans___def_29_key_1 : forall X1 X2:term, auto___def_33 X1 -> auto___def_34 X2 -> auto___def_29 (key X1 X2)
with auto___type_26 : term -> Prop :=
    trans___type_26_crypt_1 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_crypt_2 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_crypt_3 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_crypt_4 : forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_crypt_5 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_crypt_6 : forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_crypt_7 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_crypt_8 : forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_crypt_9 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_crypt_10 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_crypt_11 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_26 (crypt X1 X2)
  | trans___type_26_bob_1 : auto___type_26 bob
  | trans___type_26_noncea_old_1 : forall X1 X2:term, auto___type_26 (noncea_old X1 X2)
  | trans___type_26_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___type_26 (r_old X1 X2)
  | trans___type_26_p_1 : forall X1:term, auto_testable_current X1 -> auto___type_26 (p X1)
  | trans___type_26_passwd_old_1 : forall X1 X2:term, auto___type_26 (passwd_old X1 X2)
  | trans___type_26_alice_1 : auto___type_26 alice
  | trans___type_26_nonceb_old_1 : forall X1 X2:term, auto___type_26 (nonceb_old X1 X2)
  | trans___type_26_dec_1 : forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_26 (dec X1 X2)
  | trans___type_26_enc_1 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_26 (enc X1 X2)
  | trans___type_26_enc_2 : forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_26 (enc X1 X2)
  | trans___type_26_enc_3 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_26 (enc X1 X2)
  | trans___type_26_enc_4 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_26 (enc X1 X2)
  | trans___type_26_cons_1 : forall X1 X2:term, auto_testable_current X2 -> auto___type_26 (cons X1 X2)
  | trans___type_26_cons_2 : forall X1 X2:term, auto_testable_current X1 -> auto___type_26 (cons X1 X2)
  | trans___type_26_s_1 : forall X1:term, auto_testable_current X1 -> auto___type_26 (s X1)
  | trans___type_26_i_1 : auto___type_26 i
  | trans___type_26_nil_1 : auto___type_26 nil
  | trans___type_26_server_1 : auto___type_26 server
  | trans___type_26_key_1 : forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_26 (key X1 X2)
  | trans___type_26_key_2 : forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___type_26 (key X1 X2)
  | trans___type_26_key_3 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_26 (key X1 X2)
  | trans___type_26_key_4 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_26 (key X1 X2)
with auto___type_17 : term -> Prop :=
    trans___type_17_crypt_1 : forall X1 X2:term, auto___def_77 X1 -> auto___type_17 X2 -> auto___type_17 (crypt X1 X2)
  | trans___type_17_crypt_2 : forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> auto___type_17 (crypt X1 X2)
  | trans___type_17_key_1 : forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___type_17 (key X1 X2)
with auto___type_18 : term -> Prop :=
    trans___type_18_crypt_1 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_18 (crypt X1 X2)
  | trans___type_18_crypt_2 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_18 (crypt X1 X2)
  | trans___type_18_crypt_3 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_18 (crypt X1 X2)
  | trans___type_18_crypt_4 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_18 (crypt X1 X2)
  | trans___type_18_crypt_5 : forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_18 (crypt X1 X2)
  | trans___type_18_crypt_6 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_18 (crypt X1 X2)
  | trans___type_18_crypt_7 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_18 (crypt X1 X2)
  | trans___type_18_crypt_8 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_18 (crypt X1 X2)
  | trans___type_18_crypt_9 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_18 (crypt X1 X2)
  | trans___type_18_bob_1 : auto___type_18 bob
  | trans___type_18_noncea_old_1 : forall X1 X2:term, auto___type_18 (noncea_old X1 X2)
  | trans___type_18_p_1 : forall X1:term, auto_knows_current X1 -> auto___type_18 (p X1)
  | trans___type_18_passwd_old_1 : forall X1 X2:term, auto___type_18 (passwd_old X1 X2)
  | trans___type_18_alice_1 : auto___type_18 alice
  | trans___type_18_nonceb_old_1 : forall X1 X2:term, auto___type_18 (nonceb_old X1 X2)
  | trans___type_18_dec_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_18 (dec X1 X2)
  | trans___type_18_enc_1 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_18 (enc X1 X2)
  | trans___type_18_enc_2 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_18 (enc X1 X2)
  | trans___type_18_enc_3 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_18 (enc X1 X2)
  | trans___type_18_enc_4 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_18 (enc X1 X2)
  | trans___type_18_cons_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_18 (cons X1 X2)
  | trans___type_18_s_1 : forall X1:term, auto_knows_current X1 -> auto___type_18 (s X1)
  | trans___type_18_i_1 : auto___type_18 i
  | trans___type_18_nil_1 : auto___type_18 nil
  | trans___type_18_server_1 : auto___type_18 server
  | trans___type_18_key_1 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___type_18 (key X1 X2)
  | trans___type_18_key_2 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_18 (key X1 X2)
  | trans___type_18_key_3 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_18 (key X1 X2)
with auto___def_107 : term -> term -> Prop :=
    trans___def_107_1 : forall X1 X2:term, auto_knows_current X2 -> auto___def_107 X1 X2
with auto___def_74 : term -> term -> term -> Prop :=
    trans___def_74_1 : forall X1 X2 X3:term, auto___def_75 X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3
  | trans___def_74_2 : forall X1 X2 X3:term, auto___def_79 X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3
  | trans___def_74_3 : forall X1 X2 X3:term, auto_agent X1 -> auto___def_71 X2 -> auto_agent X3 -> auto___def_74 X1 X2 X3
with auto___def_15 : term -> Prop :=
    trans___def_15_crypt_1 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_15 (crypt X1 X2)
with auto___type_23 : term -> Prop :=
    trans___type_23_r_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___type_23 (r_current X1 X2)
with auto___def_18 : term -> term -> Prop :=
    trans___def_18_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___def_18 X1 X2
with auto___def_95 : term -> term -> term -> Prop :=
    trans___def_95_1 : forall X1 X2 X3:term, auto___type_22 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3
  | trans___def_95_2 : forall X1 X2 X3:term, auto___def_96 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3
  | trans___def_95_3 : forall X1 X2 X3:term, auto___def_84 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3
with auto___def_21 : term -> Prop :=
    trans___def_21_r_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___def_21 (r_old X1 X2)
with auto___def_16 : term -> Prop :=
    trans___def_16_passwd_old_1 : forall X1 X2:term, auto_knows_old X1 -> auto___def_16 (passwd_old X1 X2)
with auto___def_43 : term -> term -> Prop :=
    trans___def_43_1 : forall X1 X2:term, auto___def_42 X1 -> auto___def_17 X1 -> auto___def_39 X2 -> auto___def_43 X1 X2
with auto___type_21 : term -> Prop :=
    trans___type_21_nonceb_current_1 : forall X1 X2:term, auto_knows_current X1 -> auto___type_21 (nonceb_current X1 X2)
  | trans___type_21_cons_1 : forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_21 (cons X1 X2)
  | trans___type_21_noncea_current_1 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_21 (noncea_current X1 X2)
with auto___def_6 : term -> Prop :=
with auto___def_68 : term -> Prop :=
with auto___def_56 : term -> Prop :=
with auto___def_115 : term -> Prop :=
with auto___query__intruder_knows_session_key_as_seen_by_bob : Prop :=
with auto___query__intruder_knows_session_key_as_seen_by_alice : Prop :=
.

(* [defp] Proofs that all definitions hold. *)


Remark rem_1 : forall X1 X2:term, auto___def_47 X2 X1 -> auto___type_9 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_9_1. Qed.

Remark rem_2 : forall X1:term, auto___def_26 X1 -> auto___def_26 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3 : forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto___def_26 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_26 X1 -> auto___def_26 X1). tauto. exact (rem_2 X1).
Qed.

Remark rem_4 : forall X2:term, auto___type_4 X2 -> auto___type_4 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5 : forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto___type_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_4 X2 -> auto___type_4 X2). tauto. exact (rem_4 X2).
Qed.

Remark rem_6 : forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> (auto___def_26 X1 /\ auto___type_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_26 X1). 2:apply (rem_3 X1 X2);  assumption.
  cut (auto___type_4 X2). 2:apply (rem_5 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_7 : forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto___def_25 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_25_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8 : forall X1 X2:term, auto___type_4 X2 -> auto___def_26 X1 -> auto___def_25 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_26 X1 -> auto___type_4 X2 -> auto___def_25 (key X1 X2)). tauto. exact (rem_7 X1 X2).
Qed.

Remark rem_9 : (forall X:term, auto___def_77 X -> auto___type_23 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_10 : (forall X:term, auto___def_77 X -> auto___type_23 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_77_p__type_23. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_9 epsilon_m__def_77_p__type_23 X1);  assumption.
  tauto.
Defined.

Remark rem_11 : (forall X:term, auto___def_77 X -> auto___type_23 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_23 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_77_p__type_23. intros X1 X2. intros A1.
  case (rem_10 epsilon_m__def_77_p__type_23 X1 A1). clear  epsilon_m__def_77_p__type_23 A1. intros. apply trans___type_23_r_current_1;  tauto.
 clear  epsilon_m__def_77_p__type_23 A1. tauto.
Defined.

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

Remark rem_12 : forall X1 X2:term, auto___def_77 (r_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_13 : (forall X:term, auto___def_77 X -> auto___type_23 X)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___type_23 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_p__type_23. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_11 epsilon_m__def_77_p__type_23 X1 X2);  tauto.
Defined.

Inductive or_0 : Prop :=
.

Remark rem_14 : forall X1 X2:term, auto___def_77 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_15 : forall X1 X2:term, auto___def_77 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_16 : forall X1 X2:term, auto___def_77 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_17 : auto___def_77 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_18 : forall X1 X2:term, auto___def_77 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_19 : forall X1 X2:term, auto___def_77 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_20 : forall X1:term, auto___def_77 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_21 : auto___def_77 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_22 : forall X1 X2:term, auto___def_77 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_23 : forall X1 X2:term, auto___def_77 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_24 : auto___def_77 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_25 : auto___def_77 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_26 : forall X1 X2:term, auto___def_77 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_27 : forall X1 X2:term, auto___def_77 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_28 : forall X1 X2:term, auto___def_77 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_29 : forall X1 X2:term, auto___def_77 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_30 : forall X1:term, auto___def_77 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_31 : auto___def_77 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_32 : forall X1 X2:term, auto___def_77 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_33 : auto___def_77 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_34 : auto___def_77 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_35 : auto___def_77 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_36 : forall X1 X2:term, auto___def_77 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_37 : forall X1 X2:term, auto___def_77 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_38 : forall X1:term, auto___def_77 X1 -> auto___type_23 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_77_p__type_23 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_13 epsilon_m__def_77_p__type_23 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_39 : forall X1 X2:term, auto___def_77 X1 -> auto___def_91 X2 -> auto___def_94 X1 -> auto___type_23 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_77 X1 -> auto___type_23 X1). tauto. exact (rem_38 X1).
Qed.

Remark rem_40 : forall X1 X2:term, auto___def_94 X1 -> auto___def_77 X1 -> auto___def_91 X2 -> auto___type_23 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_91 X2 -> auto___def_94 X1 -> auto___type_23 X1). tauto. exact (rem_39 X1 X2).
Qed.

Remark rem_41 : forall X1 X2:term, auto___def_103 X1 X2 -> or_1
    (auto___def_94 X1 /\ auto___def_77 X1 /\ auto___def_91 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_42 : forall X1 X2:term, auto___def_103 X1 X2 -> auto___type_23 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_41 X1 X2 H);  intros.
  apply (rem_40 X1 X2);  tauto.
Qed.

Remark rem_43 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_44 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_43 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_45 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_46 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_45 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_47 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_44 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_46 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_48 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_47 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_crypt_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_49 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___type_12 X1 -> auto___type_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_50 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___type_12 X1 -> auto___type_12 X1). tauto. exact (rem_49 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_51 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto___def_54 X2 -> auto___def_54 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_52 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___def_54 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_54 X2 -> auto___def_54 X2). tauto. exact (rem_51 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_53 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> (auto___type_12 X1 /\ auto___def_54 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_50 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto___def_54 X2). 2:apply (rem_52 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_54 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_53 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_crypt_2;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_55 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_56 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_55 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_57 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_58 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_57 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_59 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_56 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_58 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_60 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_59 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_crypt_3;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_61 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___type_11 X1 -> auto___type_11 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_62 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___type_11 X1 -> auto___type_11 X1). tauto. exact (rem_61 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_63 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_64 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_63 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_65 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> (auto___type_11 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_62 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_64 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_66 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_65 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_crypt_4;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_67 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_68 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_67 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_69 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_70 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_69 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_71 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_68 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_70 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_72 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_71 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_crypt_5;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_73 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_74 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_73 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_75 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_76 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_75 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_77 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_74 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_76 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_78 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_77 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_crypt_6;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Inductive or_6(H1 H2 H3 H4 H5 H6:Prop) : Prop :=
    or_6_intro_1 : H1 -> (or_6 H1 H2 H3 H4 H5 H6)
  | or_6_intro_2 : H2 -> (or_6 H1 H2 H3 H4 H5 H6)
  | or_6_intro_3 : H3 -> (or_6 H1 H2 H3 H4 H5 H6)
  | or_6_intro_4 : H4 -> (or_6 H1 H2 H3 H4 H5 H6)
  | or_6_intro_5 : H5 -> (or_6 H1 H2 H3 H4 H5 H6)
  | or_6_intro_6 : H6 -> (or_6 H1 H2 H3 H4 H5 H6)
.

Remark rem_79 : forall X1 X2:term, auto_testable_old (crypt X1 X2) -> or_6
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___type_12 X1 /\ auto___def_54 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_11 X1 /\ auto___def_52 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_6_intro_1; tauto.
  intros. apply or_6_intro_2; tauto.
  intros. apply or_6_intro_3; tauto.
  intros. apply or_6_intro_4; tauto.
  intros. apply or_6_intro_5; tauto.
  intros. apply or_6_intro_6; tauto.
Qed.

Remark rem_80 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old (crypt X1 X2) -> auto___type_13 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intro H. intros.
  elim (rem_79 X1 X2 H);  intros.
  apply (rem_48 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_54 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_60 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_66 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_72 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_78 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
Defined.

Remark rem_81 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13.  tauto.
Defined.

Remark rem_82 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> auto___type_13 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13.  case (rem_81 epsilon_mtestable_old_p__type_13). clear  epsilon_mtestable_old_p__type_13. intros. apply trans___type_13_bob_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13. tauto.
Defined.

Remark rem_83 : auto_testable_old bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_84 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> auto_testable_old bob -> auto___type_13 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intro H. intros.
  elim (rem_83 H);  intros.
  apply (rem_82 epsilon_mtestable_old_p__type_13);  tauto.
Defined.

Remark rem_85 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_86 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1. intros A1.
  cut (auto_testable_old X1). 2:apply (rem_85 epsilon_mtestable_old_p__type_13 X1);  assumption.
  tauto.
Defined.

Remark rem_87 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto_testable_old X1 -> auto___type_13 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1. intros A1.
  case (rem_86 epsilon_mtestable_old_p__type_13 X1 A1). clear  epsilon_mtestable_old_p__type_13 A1. intros. apply trans___type_13_p_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1. tauto.
Defined.

Remark rem_88 : forall X1:term, auto_testable_old (p X1) -> or_1
    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_89 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto_testable_old (p X1) -> auto___type_13 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1. intro H. intros.
  elim (rem_88 X1 H);  intros.
  apply (rem_87 epsilon_mtestable_old_p__type_13 X1);  tauto.
Defined.

Remark rem_90 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> auto___type_13 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13.  case (rem_81 epsilon_mtestable_old_p__type_13). clear  epsilon_mtestable_old_p__type_13. intros. apply trans___type_13_alice_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13. tauto.
Defined.

Remark rem_91 : auto_testable_old alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_92 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> auto_testable_old alice -> auto___type_13 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intro H. intros.
  elim (rem_91 H);  intros.
  apply (rem_90 epsilon_mtestable_old_p__type_13);  tauto.
Defined.

Remark rem_93 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto_testable_old X1 -> auto_testable_old X1). tauto. exact (rem_85 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_94 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_75 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_95 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> (auto_testable_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto_testable_old X1). 2:apply (rem_93 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_94 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_96 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_13 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_95 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_dec_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_97 : forall X1 X2:term, auto_testable_old (dec X1 X2) -> or_1
    (auto_testable_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_98 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old (dec X1 X2) -> auto___type_13 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intro H. intros.
  elim (rem_97 X1 X2 H);  intros.
  apply (rem_96 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
Defined.

Remark rem_99 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___def_10 X1 -> auto___def_10 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_100 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_10 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_10 X1). tauto. exact (rem_99 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_101 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto___def_11 X2 -> auto___def_11 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_102 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_11 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_11 X2 -> auto___def_11 X2). tauto. exact (rem_101 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_103 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto___def_10 X1 /\ auto___def_11 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_10 X1). 2:apply (rem_100 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto___def_11 X2). 2:apply (rem_102 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_104 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___type_13 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_103 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_enc_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_105 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___def_15 X1 -> auto___def_15 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_106 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_15 X1 -> auto___def_15 X1). tauto. exact (rem_105 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_107 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto___def_16 X2 -> auto___def_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_108 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_16 X2 -> auto___def_16 X2). tauto. exact (rem_107 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_109 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto___def_15 X1 /\ auto___def_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_15 X1). 2:apply (rem_106 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto___def_16 X2). 2:apply (rem_108 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_110 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___type_13 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_109 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_enc_2;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_111 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___def_19 X1 -> auto___def_19 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_112 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_19 X1 -> auto___def_19 X1). tauto. exact (rem_111 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_113 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto___def_20 X2 -> auto___def_20 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_114 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_20 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_20 X2 -> auto___def_20 X2). tauto. exact (rem_113 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_115 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto___def_19 X1 /\ auto___def_20 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_19 X1). 2:apply (rem_112 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto___def_20 X2). 2:apply (rem_114 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_116 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___type_13 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_115 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_enc_3;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_117 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_13 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_95 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_enc_4;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Inductive or_4(H1 H2 H3 H4:Prop) : Prop :=
    or_4_intro_1 : H1 -> (or_4 H1 H2 H3 H4)
  | or_4_intro_2 : H2 -> (or_4 H1 H2 H3 H4)
  | or_4_intro_3 : H3 -> (or_4 H1 H2 H3 H4)
  | or_4_intro_4 : H4 -> (or_4 H1 H2 H3 H4)
.

Remark rem_118 : forall X1 X2:term, auto_testable_old (enc X1 X2) -> or_4
    (auto___def_10 X1 /\ auto___def_11 X2)
    (auto___def_15 X1 /\ auto___def_16 X2)
    (auto___def_19 X1 /\ auto___def_20 X2)
    (auto_testable_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_119 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old (enc X1 X2) -> auto___type_13 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intro H. intros.
  elim (rem_118 X1 X2 H);  intros.
  apply (rem_104 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_110 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_116 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_117 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
Defined.

Remark rem_120 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_121 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X2. intros A1.
  cut (auto_testable_old X2). 2:apply (rem_120 epsilon_mtestable_old_p__type_13 X2);  assumption.
  tauto.
Defined.

Remark rem_122 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old X2 -> auto___type_13 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1.
  case (rem_121 epsilon_mtestable_old_p__type_13 X2 A1). clear  epsilon_mtestable_old_p__type_13 A1. intros. apply trans___type_13_cons_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1. tauto.
Defined.

Remark rem_123 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto___type_13 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1.
  case (rem_86 epsilon_mtestable_old_p__type_13 X1 A1). clear  epsilon_mtestable_old_p__type_13 A1. intros. apply trans___type_13_cons_2;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1. tauto.
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_124 : forall X1 X2:term, auto_testable_old (cons X1 X2) -> or_2
    (auto_testable_old X2)    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_125 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old (cons X1 X2) -> auto___type_13 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intro H. intros.
  elim (rem_124 X1 X2 H);  intros.
  apply (rem_122 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_123 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
Defined.

Remark rem_126 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto_testable_old X1 -> auto___type_13 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1. intros A1.
  case (rem_86 epsilon_mtestable_old_p__type_13 X1 A1). clear  epsilon_mtestable_old_p__type_13 A1. intros. apply trans___type_13_s_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1. tauto.
Defined.

Remark rem_127 : forall X1:term, auto_testable_old (s X1) -> or_1
    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_128 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto_testable_old (s X1) -> auto___type_13 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1. intro H. intros.
  elim (rem_127 X1 H);  intros.
  apply (rem_126 epsilon_mtestable_old_p__type_13 X1);  tauto.
Defined.

Remark rem_129 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> auto___type_13 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13.  case (rem_81 epsilon_mtestable_old_p__type_13). clear  epsilon_mtestable_old_p__type_13. intros. apply trans___type_13_i_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13. tauto.
Defined.

Remark rem_130 : auto_testable_old i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_131 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> auto_testable_old i -> auto___type_13 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intro H. intros.
  elim (rem_130 H);  intros.
  apply (rem_129 epsilon_mtestable_old_p__type_13);  tauto.
Defined.

Remark rem_132 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> auto___type_13 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13.  case (rem_81 epsilon_mtestable_old_p__type_13). clear  epsilon_mtestable_old_p__type_13. intros. apply trans___type_13_nil_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13. tauto.
Defined.

Remark rem_133 : auto_testable_old nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_134 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> auto_testable_old nil -> auto___type_13 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intro H. intros.
  elim (rem_133 H);  intros.
  apply (rem_132 epsilon_mtestable_old_p__type_13);  tauto.
Defined.

Remark rem_135 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> auto___type_13 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13.  case (rem_81 epsilon_mtestable_old_p__type_13). clear  epsilon_mtestable_old_p__type_13. intros. apply trans___type_13_server_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13. tauto.
Defined.

Remark rem_136 : auto_testable_old server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_137 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> auto_testable_old server -> auto___type_13 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intro H. intros.
  elim (rem_136 H);  intros.
  apply (rem_135 epsilon_mtestable_old_p__type_13);  tauto.
Defined.

Remark rem_138 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___def_60 X1 -> auto___def_60 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_139 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___def_60 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_60 X1 -> auto___def_60 X1). tauto. exact (rem_138 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_140 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto___type_16 X2 -> auto___type_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_141 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___type_16 X2 -> auto___type_16 X2). tauto. exact (rem_140 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_142 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> (auto___def_60 X1 /\ auto___type_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_60 X1). 2:apply (rem_139 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto___type_16 X2). 2:apply (rem_141 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_143 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_13 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_142 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_key_1;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_144 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___def_55 X1 -> auto___def_55 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_145 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_55 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_55 X1 -> auto___def_55 X1). tauto. exact (rem_144 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_146 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto___def_4 X2 -> auto___def_4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_147 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_4 X2 -> auto___def_4 X2). tauto. exact (rem_146 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_148 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> (auto___def_55 X1 /\ auto___def_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_55 X1). 2:apply (rem_145 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto___def_4 X2). 2:apply (rem_147 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_149 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___type_13 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_148 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_key_2;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
Defined.

Remark rem_150 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_151 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_150 epsilon_mtestable_old_p__type_13 X1).
Defined.

Remark rem_152 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_153 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_152 epsilon_mtestable_old_p__type_13 X2).
Defined.

Remark rem_154 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_151 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_153 epsilon_mtestable_old_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_155 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_13 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_154 epsilon_mtestable_old_p__type_13 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_13 A1 A2. intros. apply trans___type_13_key_3;  tauto.
 clear  epsilon_mtestable_old_p__type_13 A1 A2. tauto.
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_156 : forall X1 X2:term, auto_testable_old (key X1 X2) -> or_3
    (auto___def_60 X1 /\ auto___type_16 X2)
    (auto___def_55 X1 /\ auto___def_4 X2)
    (auto___def_51 X1 /\ auto_agent 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_157 : (forall X:term, auto_testable_old X -> auto___type_13 X)
    -> forall X1 X2:term, auto_testable_old (key X1 X2) -> auto___type_13 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_13. intros X1 X2. intro H. intros.
  elim (rem_156 X1 X2 H);  intros.
  apply (rem_143 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_149 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
  apply (rem_155 epsilon_mtestable_old_p__type_13 X1 X2);  tauto.
Defined.

Remark rem_158 : forall X1 X2:term, auto_testable_old (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_159 : forall X1 X2:term, auto_testable_old (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_160 : forall X1 X2:term, auto_testable_old (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_161 : forall X1 X2:term, auto_testable_old (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_162 : forall X1 X2:term, auto_testable_old (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_163 : auto_testable_old pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_164 : forall X1 X2:term, auto_testable_old (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_165 : forall X1 X2:term, auto_testable_old (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_166 : auto_testable_old prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_167 : forall X1 X2:term, auto_testable_old (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_168 : auto_testable_old sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_169 : forall X1 X2:term, auto_testable_old (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_170 : forall X1 X2:term, auto_testable_old (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_171 : forall X1:term, auto_testable_old X1 -> auto___type_13 X1. (* Induct. *)
Proof.
  fix epsilon_mtestable_old_p__type_13 1.
  intro X. case X.
  exact (rem_92 epsilon_mtestable_old_p__type_13 ).
  exact (rem_84 epsilon_mtestable_old_p__type_13 ).
  intros X1 X2;  exact (rem_125 epsilon_mtestable_old_p__type_13 X1 X2).
  intros X1 X2;  exact (rem_80 epsilon_mtestable_old_p__type_13 X1 X2).
  intros X1 X2;  exact (rem_98 epsilon_mtestable_old_p__type_13 X1 X2).
  intros X1 X2;  exact (rem_119 epsilon_mtestable_old_p__type_13 X1 X2).
  exact (rem_131 epsilon_mtestable_old_p__type_13 ).
  intros X1 X2;  exact (rem_157 epsilon_mtestable_old_p__type_13 X1 X2).
  exact (rem_134 epsilon_mtestable_old_p__type_13 ).
  intros X1 X2. intro H. elim (rem_170 X1 X2 H).
  intros X1 X2. intro H. elim (rem_160 X1 X2 H).
  intros X1 X2. intro H. elim (rem_158 X1 X2 H).
  intros X1 X2. intro H. elim (rem_167 X1 X2 H).
  intros X1;  exact (rem_89 epsilon_mtestable_old_p__type_13 X1).
  intros X1 X2. intro H. elim (rem_165 X1 X2 H).
  intros X1 X2. intro H. elim (rem_164 X1 X2 H).
   intro H. elim (rem_166  H).
   intro H. elim (rem_163  H).
  intros X1 X2. intro H. elim (rem_162 X1 X2 H).
  intros X1 X2. intro H. elim (rem_161 X1 X2 H).
  intros X1;  exact (rem_128 epsilon_mtestable_old_p__type_13 X1).
  exact (rem_137 epsilon_mtestable_old_p__type_13 ).
  intros X1 X2. intro H. elim (rem_169 X1 X2 H).
  intros X1 X2. intro H. elim (rem_159 X1 X2 H).
   intro H. elim (rem_168  H).
Qed.

Remark rem_172 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_173 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_172 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_174 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_175 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_174 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_176 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_173 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_175 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_177 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_176 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_crypt_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_178 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___type_12 X1 -> auto___type_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_179 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___type_12 X1 -> auto___type_12 X1). tauto. exact (rem_178 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_180 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto___def_54 X2 -> auto___def_54 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_181 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___def_54 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_54 X2 -> auto___def_54 X2). tauto. exact (rem_180 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_182 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> (auto___type_12 X1 /\ auto___def_54 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_179 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto___def_54 X2). 2:apply (rem_181 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_183 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_182 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_crypt_2;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_184 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_185 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_184 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_186 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_187 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_186 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_188 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_185 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_187 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_189 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_188 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_crypt_3;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_190 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___type_11 X1 -> auto___type_11 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_191 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___type_11 X1 -> auto___type_11 X1). tauto. exact (rem_190 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_192 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_193 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_192 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_194 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> (auto___type_11 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_191 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_193 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_195 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_194 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_196 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_197 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_196 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_198 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_199 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_198 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_200 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_197 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_199 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_201 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_200 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_crypt_5;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_202 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_203 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_202 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_204 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_205 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_204 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_206 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_203 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_205 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_207 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_206 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_crypt_6;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_208 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old (crypt X1 X2) -> auto___type_12 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_79 X1 X2 H);  intros.
  apply (rem_177 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_183 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_189 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_195 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_201 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_207 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_209 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12.  tauto.
Defined.

Remark rem_210 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> auto___type_12 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12.  case (rem_209 epsilon_mtestable_old_p__type_12). clear  epsilon_mtestable_old_p__type_12. intros. apply trans___type_12_bob_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12. tauto.
Defined.

Remark rem_211 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> auto_testable_old bob -> auto___type_12 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intro H. intros.
  elim (rem_83 H);  intros.
  apply (rem_210 epsilon_mtestable_old_p__type_12);  tauto.
Defined.

Remark rem_212 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_213 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1. intros A1.
  cut (auto_testable_old X1). 2:apply (rem_212 epsilon_mtestable_old_p__type_12 X1);  assumption.
  tauto.
Defined.

Remark rem_214 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto_testable_old X1 -> auto___type_12 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1. intros A1.
  case (rem_213 epsilon_mtestable_old_p__type_12 X1 A1). clear  epsilon_mtestable_old_p__type_12 A1. intros. apply trans___type_12_p_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1. tauto.
Defined.

Remark rem_215 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto_testable_old (p X1) -> auto___type_12 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1. intro H. intros.
  elim (rem_88 X1 H);  intros.
  apply (rem_214 epsilon_mtestable_old_p__type_12 X1);  tauto.
Defined.

Remark rem_216 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> auto___type_12 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12.  case (rem_209 epsilon_mtestable_old_p__type_12). clear  epsilon_mtestable_old_p__type_12. intros. apply trans___type_12_alice_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12. tauto.
Defined.

Remark rem_217 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> auto_testable_old alice -> auto___type_12 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intro H. intros.
  elim (rem_91 H);  intros.
  apply (rem_216 epsilon_mtestable_old_p__type_12);  tauto.
Defined.

Remark rem_218 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto_testable_old X1 -> auto_testable_old X1). tauto. exact (rem_212 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_219 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_204 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_220 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> (auto_testable_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto_testable_old X1). 2:apply (rem_218 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_219 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_221 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_12 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_220 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_dec_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_222 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old (dec X1 X2) -> auto___type_12 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_97 X1 X2 H);  intros.
  apply (rem_221 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_223 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___def_10 X1 -> auto___def_10 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_224 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_10 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_10 X1). tauto. exact (rem_223 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_225 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto___def_11 X2 -> auto___def_11 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_226 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_11 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_11 X2 -> auto___def_11 X2). tauto. exact (rem_225 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_227 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto___def_10 X1 /\ auto___def_11 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_10 X1). 2:apply (rem_224 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto___def_11 X2). 2:apply (rem_226 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_228 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___type_12 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_227 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_enc_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_229 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___def_15 X1 -> auto___def_15 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_230 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_15 X1 -> auto___def_15 X1). tauto. exact (rem_229 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_231 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto___def_16 X2 -> auto___def_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_232 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_16 X2 -> auto___def_16 X2). tauto. exact (rem_231 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_233 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto___def_15 X1 /\ auto___def_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_15 X1). 2:apply (rem_230 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto___def_16 X2). 2:apply (rem_232 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_234 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___type_12 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_233 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_enc_2;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_235 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___def_19 X1 -> auto___def_19 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_236 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_19 X1 -> auto___def_19 X1). tauto. exact (rem_235 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_237 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto___def_20 X2 -> auto___def_20 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_238 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_20 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_20 X2 -> auto___def_20 X2). tauto. exact (rem_237 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_239 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto___def_19 X1 /\ auto___def_20 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_19 X1). 2:apply (rem_236 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto___def_20 X2). 2:apply (rem_238 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_240 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___type_12 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_239 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_enc_3;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_241 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_12 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_220 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_enc_4;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_242 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old (enc X1 X2) -> auto___type_12 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_118 X1 X2 H);  intros.
  apply (rem_228 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_234 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_240 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_241 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_243 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_244 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X2. intros A1.
  cut (auto_testable_old X2). 2:apply (rem_243 epsilon_mtestable_old_p__type_12 X2);  assumption.
  tauto.
Defined.

Remark rem_245 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X2 -> auto___type_12 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1.
  case (rem_244 epsilon_mtestable_old_p__type_12 X2 A1). clear  epsilon_mtestable_old_p__type_12 A1. intros. apply trans___type_12_cons_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1. tauto.
Defined.

Remark rem_246 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto___type_12 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1.
  case (rem_213 epsilon_mtestable_old_p__type_12 X1 A1). clear  epsilon_mtestable_old_p__type_12 A1. intros. apply trans___type_12_cons_2;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1. tauto.
Defined.

Remark rem_247 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old (cons X1 X2) -> auto___type_12 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_124 X1 X2 H);  intros.
  apply (rem_245 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_246 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_248 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto_testable_old X1 -> auto___type_12 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1. intros A1.
  case (rem_213 epsilon_mtestable_old_p__type_12 X1 A1). clear  epsilon_mtestable_old_p__type_12 A1. intros. apply trans___type_12_s_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1. tauto.
Defined.

Remark rem_249 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto_testable_old (s X1) -> auto___type_12 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1. intro H. intros.
  elim (rem_127 X1 H);  intros.
  apply (rem_248 epsilon_mtestable_old_p__type_12 X1);  tauto.
Defined.

Remark rem_250 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> auto___type_12 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12.  case (rem_209 epsilon_mtestable_old_p__type_12). clear  epsilon_mtestable_old_p__type_12. intros. apply trans___type_12_i_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12. tauto.
Defined.

Remark rem_251 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> auto_testable_old i -> auto___type_12 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intro H. intros.
  elim (rem_130 H);  intros.
  apply (rem_250 epsilon_mtestable_old_p__type_12);  tauto.
Defined.

Remark rem_252 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> auto___type_12 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12.  case (rem_209 epsilon_mtestable_old_p__type_12). clear  epsilon_mtestable_old_p__type_12. intros. apply trans___type_12_nil_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12. tauto.
Defined.

Remark rem_253 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> auto_testable_old nil -> auto___type_12 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intro H. intros.
  elim (rem_133 H);  intros.
  apply (rem_252 epsilon_mtestable_old_p__type_12);  tauto.
Defined.

Remark rem_254 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> auto___type_12 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12.  case (rem_209 epsilon_mtestable_old_p__type_12). clear  epsilon_mtestable_old_p__type_12. intros. apply trans___type_12_server_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12. tauto.
Defined.

Remark rem_255 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> auto_testable_old server -> auto___type_12 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intro H. intros.
  elim (rem_136 H);  intros.
  apply (rem_254 epsilon_mtestable_old_p__type_12);  tauto.
Defined.

Remark rem_256 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___def_60 X1 -> auto___def_60 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_257 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___def_60 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_60 X1 -> auto___def_60 X1). tauto. exact (rem_256 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_258 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto___type_16 X2 -> auto___type_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_259 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___type_16 X2 -> auto___type_16 X2). tauto. exact (rem_258 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_260 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> (auto___def_60 X1 /\ auto___type_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_60 X1). 2:apply (rem_257 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto___type_16 X2). 2:apply (rem_259 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_261 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_260 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_key_1;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_262 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___def_55 X1 -> auto___def_55 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_263 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_55 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_55 X1 -> auto___def_55 X1). tauto. exact (rem_262 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_264 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto___def_4 X2 -> auto___def_4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_265 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_4 X2 -> auto___def_4 X2). tauto. exact (rem_264 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_266 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> (auto___def_55 X1 /\ auto___def_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_55 X1). 2:apply (rem_263 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto___def_4 X2). 2:apply (rem_265 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_267 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_266 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_key_2;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_268 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_269 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_268 epsilon_mtestable_old_p__type_12 X1).
Defined.

Remark rem_270 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_271 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_270 epsilon_mtestable_old_p__type_12 X2).
Defined.

Remark rem_272 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_269 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_271 epsilon_mtestable_old_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_273 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_272 epsilon_mtestable_old_p__type_12 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_12 A1 A2. intros. apply trans___type_12_key_3;  tauto.
 clear  epsilon_mtestable_old_p__type_12 A1 A2. tauto.
Defined.

Remark rem_274 : (forall X:term, auto_testable_old X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old (key X1 X2) -> auto___type_12 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_156 X1 X2 H);  intros.
  apply (rem_261 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_267 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
  apply (rem_273 epsilon_mtestable_old_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_275 : forall X1:term, auto_testable_old X1 -> auto___type_12 X1. (* Induct. *)
Proof.
  fix epsilon_mtestable_old_p__type_12 1.
  intro X. case X.
  exact (rem_217 epsilon_mtestable_old_p__type_12 ).
  exact (rem_211 epsilon_mtestable_old_p__type_12 ).
  intros X1 X2;  exact (rem_247 epsilon_mtestable_old_p__type_12 X1 X2).
  intros X1 X2;  exact (rem_208 epsilon_mtestable_old_p__type_12 X1 X2).
  intros X1 X2;  exact (rem_222 epsilon_mtestable_old_p__type_12 X1 X2).
  intros X1 X2;  exact (rem_242 epsilon_mtestable_old_p__type_12 X1 X2).
  exact (rem_251 epsilon_mtestable_old_p__type_12 ).
  intros X1 X2;  exact (rem_274 epsilon_mtestable_old_p__type_12 X1 X2).
  exact (rem_253 epsilon_mtestable_old_p__type_12 ).
  intros X1 X2. intro H. elim (rem_170 X1 X2 H).
  intros X1 X2. intro H. elim (rem_160 X1 X2 H).
  intros X1 X2. intro H. elim (rem_158 X1 X2 H).
  intros X1 X2. intro H. elim (rem_167 X1 X2 H).
  intros X1;  exact (rem_215 epsilon_mtestable_old_p__type_12 X1).
  intros X1 X2. intro H. elim (rem_165 X1 X2 H).
  intros X1 X2. intro H. elim (rem_164 X1 X2 H).
   intro H. elim (rem_166  H).
   intro H. elim (rem_163  H).
  intros X1 X2. intro H. elim (rem_162 X1 X2 H).
  intros X1 X2. intro H. elim (rem_161 X1 X2 H).
  intros X1;  exact (rem_249 epsilon_mtestable_old_p__type_12 X1).
  exact (rem_255 epsilon_mtestable_old_p__type_12 ).
  intros X1 X2. intro H. elim (rem_169 X1 X2 H).
  intros X1 X2. intro H. elim (rem_159 X1 X2 H).
   intro H. elim (rem_168  H).
Qed.

Remark rem_276 : forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_277 : forall X1 X3:term, auto___def_24 X3 -> auto_knows_old X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_278 : forall X1 X3:term, auto___def_24 X3 -> auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_277 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_279 : forall X1 X2 X3:term, auto___def_24 X3 -> auto_knows_old X1 -> auto___def_34 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_278 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_34_r_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_280 : forall X1 X3:term, auto___def_28 X3 -> auto_knows_old X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_281 : forall X1 X3:term, auto___def_28 X3 -> auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_280 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_282 : forall X1 X2 X3:term, auto___def_28 X3 -> auto_knows_old X1 -> auto___def_34 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_281 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_34_r_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_283 : forall X1 X3:term, auto___type_7 X3 -> auto_knows_old X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_284 : forall X1 X3:term, auto___type_7 X3 -> auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_283 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_285 : forall X1 X2 X3:term, auto___type_7 X3 -> auto_knows_old X1 -> auto___def_34 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_284 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_34_r_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_286 : forall X1 X2 X3:term, auto___def_27 X1 X2 X3 -> or_3
    (auto___def_24 X2 /\ auto_knows_old X3)
    (auto___def_28 X2 /\ auto_knows_old X3)
    (auto___type_7 X2 /\ auto_knows_old X3)
.
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_287 : forall X1 X2 X3:term, auto___def_27 X2 X3 X1 -> auto___def_34 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_286 X2 X3 X1 H);  intros.
  apply (rem_279 X1 X2 X3);  tauto.
  apply (rem_282 X1 X2 X3);  tauto.
  apply (rem_285 X1 X2 X3);  tauto.
Qed.

Remark rem_288 : forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_289 : forall X1 X3:term, auto___type_22 X3 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_290 : forall X1 X3:term, auto___type_22 X3 -> auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_289 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_291 : forall X1 X2 X3:term, auto___type_22 X3 -> auto_knows_current X1 -> auto___def_102 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_290 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_102_r_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_292 : forall X1 X3:term, auto___def_96 X3 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_293 : forall X1 X3:term, auto___def_96 X3 -> auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_292 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_294 : forall X1 X2 X3:term, auto___def_96 X3 -> auto_knows_current X1 -> auto___def_102 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_293 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_102_r_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_295 : forall X1 X3:term, auto___def_84 X3 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_296 : forall X1 X3:term, auto___def_84 X3 -> auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_295 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_297 : forall X1 X2 X3:term, auto___def_84 X3 -> auto_knows_current X1 -> auto___def_102 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_296 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_102_r_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_298 : forall X1 X2 X3:term, auto___def_95 X1 X2 X3 -> or_3
    (auto___type_22 X2 /\ auto_knows_current X3)
    (auto___def_96 X2 /\ auto_knows_current X3)
    (auto___def_84 X2 /\ auto_knows_current X3)
.
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_299 : forall X1 X2 X3:term, auto___def_95 X2 X3 X1 -> auto___def_102 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_298 X2 X3 X1 H);  intros.
  apply (rem_291 X1 X2 X3);  tauto.
  apply (rem_294 X1 X2 X3);  tauto.
  apply (rem_297 X1 X2 X3);  tauto.
Qed.

Remark rem_300 : forall X1 X2 X3 X4:term, auto_knows_old (crypt (cons (noncea_old X4 X2) (cons X3 nil)) (key sym X1)) -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1.
  tauto.
Qed.

Remark rem_301 : forall X1 X2 X3 X4:term, auto_knows_old (crypt (cons (noncea_old X4 X2) (cons X3 nil)) (key sym X1)) -> auto___def_46 X1 X2 X3 X4. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1.
  case (rem_300 X1 X2 X3 X4 A1). clear  A1. intros. apply trans___def_46_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_302 : (forall X:term, auto___def_77 X -> auto___type_19 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_303 : (forall X:term, auto___def_77 X -> auto___type_19 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_77_p__type_19. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_302 epsilon_m__def_77_p__type_19 X1);  assumption.
  tauto.
Defined.

Remark rem_304 : (forall X:term, auto___def_77 X -> auto___type_19 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_19 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_77_p__type_19. intros X1 X2. intros A1.
  case (rem_303 epsilon_m__def_77_p__type_19 X1 A1). clear  epsilon_m__def_77_p__type_19 A1. intros. apply trans___type_19_r_current_1;  tauto.
 clear  epsilon_m__def_77_p__type_19 A1. tauto.
Defined.

Remark rem_305 : (forall X:term, auto___def_77 X -> auto___type_19 X)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___type_19 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_p__type_19. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_304 epsilon_m__def_77_p__type_19 X1 X2);  tauto.
Defined.

Remark rem_306 : forall X1:term, auto___def_77 X1 -> auto___type_19 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_77_p__type_19 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_305 epsilon_m__def_77_p__type_19 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_307 : forall X1 X2 X3:term, auto___def_77 X1 -> auto_agent X2 -> auto_agent X3 -> auto___type_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_77 X1 -> auto___type_19 X1). tauto. exact (rem_306 X1).
Qed.

Remark rem_308 : forall X1 X2 X3:term, auto___def_83 X1 X2 X3 -> or_1
    (auto___def_77 X1 /\ auto_agent X2 /\ auto_agent X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_309 : forall X1 X2 X3:term, auto___def_83 X1 X2 X3 -> auto___type_19 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_308 X1 X2 X3 H);  intros.
  apply (rem_307 X1 X2 X3);  tauto.
Qed.

Remark rem_310 : (forall X:term, auto___def_62 X -> auto___type_30 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_62_p__type_30.  tauto.
Defined.

Remark rem_311 : (forall X:term, auto___def_62 X -> auto___type_30 X)
    -> auto___type_30 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_62_p__type_30.  case (rem_310 epsilon_m__def_62_p__type_30). clear  epsilon_m__def_62_p__type_30. intros. apply trans___type_30_i_1;  tauto.
 clear  epsilon_m__def_62_p__type_30. tauto.
Defined.

Remark rem_312 : auto___def_62 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_313 : (forall X:term, auto___def_62 X -> auto___type_30 X)
    -> auto___def_62 i -> auto___type_30 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_p__type_30. intro H. intros.
  elim (rem_312 H);  intros.
  apply (rem_311 epsilon_m__def_62_p__type_30);  tauto.
Defined.

Remark rem_314 : forall X1 X2:term, auto___def_62 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_315 : forall X1 X2:term, auto___def_62 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_316 : forall X1 X2:term, auto___def_62 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_317 : auto___def_62 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_318 : forall X1 X2:term, auto___def_62 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_319 : forall X1 X2:term, auto___def_62 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_320 : forall X1 X2:term, auto___def_62 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_321 : forall X1:term, auto___def_62 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_322 : auto___def_62 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_323 : forall X1 X2:term, auto___def_62 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_324 : forall X1 X2:term, auto___def_62 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_325 : auto___def_62 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_326 : auto___def_62 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_327 : forall X1 X2:term, auto___def_62 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_328 : forall X1 X2:term, auto___def_62 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_329 : forall X1 X2:term, auto___def_62 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_330 : forall X1 X2:term, auto___def_62 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_331 : forall X1:term, auto___def_62 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_332 : auto___def_62 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_333 : forall X1 X2:term, auto___def_62 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_334 : auto___def_62 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_335 : auto___def_62 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_336 : forall X1 X2:term, auto___def_62 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_337 : forall X1 X2:term, auto___def_62 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_338 : forall X1:term, auto___def_62 X1 -> auto___type_30 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_62_p__type_30 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_313 epsilon_m__def_62_p__type_30 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_339 : forall X1 X2:term, auto___def_62 X1 -> auto_knows_current X2 -> auto_testable_current X2 -> auto___type_30 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_62 X1 -> auto___type_30 X1). tauto. exact (rem_338 X1).
Qed.

Remark rem_340 : forall X1 X2:term, auto___def_65 X1 X2 -> or_1
    (auto___def_62 X1 /\ auto_knows_current X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_341 : forall X1 X2:term, auto___def_65 X1 X2 -> auto_testable_current X2 -> auto___type_30 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_340 X1 X2 H);  intros.
  apply (rem_339 X1 X2);  tauto.
Qed.

Remark rem_342 : forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_343 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_342 X1).
Qed.

Remark rem_344 : forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_345 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_344 X2).
Qed.

Remark rem_346 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_343 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_345 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_347 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_70 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_346 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_70_enc_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_348 : forall X1 X2:term, auto___def_72 X2 -> auto___def_71 X1 -> auto___def_70 (enc X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_72 X2 -> auto___def_70 (enc X1 X2)). tauto. exact (rem_347 X1 X2).
Qed.

Remark rem_349 : forall X1 X2 X3:term, auto___type_22 X3 -> auto_knows_current X1 -> auto___def_99 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_290 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_99_nonceb_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_350 : forall X1 X2 X3:term, auto___def_96 X3 -> auto_knows_current X1 -> auto___def_99 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_293 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_99_nonceb_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_351 : forall X1 X2 X3:term, auto___def_84 X3 -> auto_knows_current X1 -> auto___def_99 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_296 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_99_nonceb_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_352 : forall X1 X2 X3:term, auto___def_95 X2 X3 X1 -> auto___def_99 (nonceb_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_298 X2 X3 X1 H);  intros.
  apply (rem_349 X1 X2 X3);  tauto.
  apply (rem_350 X1 X2 X3);  tauto.
  apply (rem_351 X1 X2 X3);  tauto.
Qed.

Remark rem_353 : forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_288 X1);  assumption.
  tauto.
Qed.

Remark rem_354 : forall X1 X2:term, auto_knows_current X1 -> auto___def_108 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1.
  case (rem_353 X1 A1). clear  A1. intros. apply trans___def_108_r_current_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_355 : forall X1 X2:term, auto___def_107 X1 X2 -> or_1
    (auto_knows_current X2).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_356 : forall X1 X2:term, auto___def_107 X2 X1 -> auto___def_108 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_355 X2 X1 H);  intros.
  apply (rem_354 X1 X2);  tauto.
Qed.

Remark rem_357 : (forall X:term, auto___type_19 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_358 : (forall X:term, auto___type_19 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_19_p__type_31. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_357 epsilon_m__type_19_p__type_31 X1);  assumption.
  tauto.
Defined.

Remark rem_359 : (forall X:term, auto___type_19 X -> auto___type_31 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_31 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_19_p__type_31. intros X1 X2. intros A1.
  case (rem_358 epsilon_m__type_19_p__type_31 X1 A1). clear  epsilon_m__type_19_p__type_31 A1. intros. apply trans___type_31_r_current_1;  tauto.
 clear  epsilon_m__type_19_p__type_31 A1. tauto.
Defined.

Remark rem_360 : forall X1 X2:term, auto___type_19 (r_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_361 : (forall X:term, auto___type_19 X -> auto___type_31 X)
    -> forall X1 X2:term, auto___type_19 (r_current X1 X2) -> auto___type_31 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_19_p__type_31. intros X1 X2. intro H. intros.
  elim (rem_360 X1 X2 H);  intros.
  apply (rem_359 epsilon_m__type_19_p__type_31 X1 X2);  tauto.
Defined.

Remark rem_362 : forall X1 X2:term, auto___type_19 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_363 : forall X1 X2:term, auto___type_19 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_364 : forall X1 X2:term, auto___type_19 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_365 : auto___type_19 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_366 : forall X1 X2:term, auto___type_19 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_367 : forall X1 X2:term, auto___type_19 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_368 : forall X1:term, auto___type_19 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_369 : auto___type_19 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_370 : forall X1 X2:term, auto___type_19 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_371 : forall X1 X2:term, auto___type_19 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_372 : auto___type_19 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_373 : auto___type_19 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_374 : forall X1 X2:term, auto___type_19 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_375 : forall X1 X2:term, auto___type_19 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_376 : forall X1 X2:term, auto___type_19 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_377 : forall X1 X2:term, auto___type_19 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_378 : forall X1:term, auto___type_19 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_379 : auto___type_19 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_380 : forall X1 X2:term, auto___type_19 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_381 : auto___type_19 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_382 : auto___type_19 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_383 : auto___type_19 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_384 : forall X1 X2:term, auto___type_19 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_385 : forall X1 X2:term, auto___type_19 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_386 : forall X1:term, auto___type_19 X1 -> auto___type_31 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_19_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_372  H).
   intro H. elim (rem_365  H).
  intros X1 X2. intro H. elim (rem_377 X1 X2 H).
  intros X1 X2. intro H. elim (rem_362 X1 X2 H).
  intros X1 X2. intro H. elim (rem_375 X1 X2 H).
  intros X1 X2. intro H. elim (rem_376 X1 X2 H).
   intro H. elim (rem_381  H).
  intros X1 X2. intro H. elim (rem_385 X1 X2 H).
   intro H. elim (rem_382  H).
  intros X1 X2. intro H. elim (rem_384 X1 X2 H).
  intros X1 X2. intro H. elim (rem_366 X1 X2 H).
  intros X1 X2. intro H. elim (rem_363 X1 X2 H).
  intros X1 X2. intro H. elim (rem_374 X1 X2 H).
  intros X1. intro H. elim (rem_368 X1 H).
  intros X1 X2. intro H. elim (rem_371 X1 X2 H).
  intros X1 X2. intro H. elim (rem_370 X1 X2 H).
   intro H. elim (rem_373  H).
   intro H. elim (rem_369  H).
  intros X1 X2;  exact (rem_361 epsilon_m__type_19_p__type_31 X1 X2).
  intros X1 X2. intro H. elim (rem_367 X1 X2 H).
  intros X1. intro H. elim (rem_378 X1 H).
   intro H. elim (rem_383  H).
  intros X1 X2. intro H. elim (rem_380 X1 X2 H).
  intros X1 X2. intro H. elim (rem_364 X1 X2 H).
   intro H. elim (rem_379  H).
Qed.

Remark rem_387 : forall X1 X2:term, auto___def_84 X2 -> auto___type_19 X1 -> auto_testable_current X2 -> auto___type_31 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_19 X1 -> auto___type_31 X1). tauto. exact (rem_386 X1).
Qed.

Remark rem_388 : forall X1 X2:term, auto___type_19 X1 -> auto___def_84 X2 -> auto_testable_current X2 -> auto___type_31 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_84 X2 -> auto___type_19 X1 -> auto_testable_current X2 -> auto___type_31 X1). tauto. exact (rem_387 X1 X2).
Qed.

Remark rem_389 : (forall X:term, auto___def_42 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_390 : (forall X:term, auto___def_42 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_42_p__type_31. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_389 epsilon_m__def_42_p__type_31 X1);  assumption.
  tauto.
Defined.

Remark rem_391 : (forall X:term, auto___def_42 X -> auto___type_31 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_31 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_42_p__type_31. intros X1 X2. intros A1.
  case (rem_390 epsilon_m__def_42_p__type_31 X1 A1). clear  epsilon_m__def_42_p__type_31 A1. intros. apply trans___type_31_r_old_1;  tauto.
 clear  epsilon_m__def_42_p__type_31 A1. tauto.
Defined.

Remark rem_392 : forall X1 X2:term, auto___def_42 (r_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_393 : (forall X:term, auto___def_42 X -> auto___type_31 X)
    -> forall X1 X2:term, auto___def_42 (r_old X1 X2) -> auto___type_31 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_42_p__type_31. intros X1 X2. intro H. intros.
  elim (rem_392 X1 X2 H);  intros.
  apply (rem_391 epsilon_m__def_42_p__type_31 X1 X2);  tauto.
Defined.

Remark rem_394 : forall X1 X2:term, auto___def_42 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_395 : forall X1 X2:term, auto___def_42 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_396 : forall X1 X2:term, auto___def_42 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_397 : auto___def_42 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_398 : forall X1 X2:term, auto___def_42 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_399 : forall X1 X2:term, auto___def_42 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_400 : forall X1:term, auto___def_42 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_401 : auto___def_42 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_402 : forall X1 X2:term, auto___def_42 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_403 : forall X1 X2:term, auto___def_42 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_404 : auto___def_42 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_405 : auto___def_42 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_406 : forall X1 X2:term, auto___def_42 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_407 : forall X1 X2:term, auto___def_42 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_408 : forall X1 X2:term, auto___def_42 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_409 : forall X1 X2:term, auto___def_42 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_410 : forall X1:term, auto___def_42 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_411 : auto___def_42 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_412 : forall X1 X2:term, auto___def_42 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_413 : auto___def_42 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_414 : auto___def_42 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_415 : auto___def_42 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_416 : forall X1 X2:term, auto___def_42 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_417 : forall X1 X2:term, auto___def_42 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_418 : forall X1:term, auto___def_42 X1 -> auto___type_31 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_42_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_404  H).
   intro H. elim (rem_397  H).
  intros X1 X2. intro H. elim (rem_409 X1 X2 H).
  intros X1 X2. intro H. elim (rem_394 X1 X2 H).
  intros X1 X2. intro H. elim (rem_407 X1 X2 H).
  intros X1 X2. intro H. elim (rem_408 X1 X2 H).
   intro H. elim (rem_413  H).
  intros X1 X2. intro H. elim (rem_417 X1 X2 H).
   intro H. elim (rem_414  H).
  intros X1 X2. intro H. elim (rem_416 X1 X2 H).
  intros X1 X2. intro H. elim (rem_398 X1 X2 H).
  intros X1 X2. intro H. elim (rem_395 X1 X2 H).
  intros X1 X2. intro H. elim (rem_406 X1 X2 H).
  intros X1. intro H. elim (rem_400 X1 H).
  intros X1 X2. intro H. elim (rem_403 X1 X2 H).
  intros X1 X2. intro H. elim (rem_402 X1 X2 H).
   intro H. elim (rem_405  H).
   intro H. elim (rem_401  H).
  intros X1 X2. intro H. elim (rem_399 X1 X2 H).
  intros X1 X2;  exact (rem_393 epsilon_m__def_42_p__type_31 X1 X2).
  intros X1. intro H. elim (rem_410 X1 H).
   intro H. elim (rem_415  H).
  intros X1 X2. intro H. elim (rem_412 X1 X2 H).
  intros X1 X2. intro H. elim (rem_396 X1 X2 H).
   intro H. elim (rem_411  H).
Qed.

Remark rem_419 : forall X1 X2:term, auto___def_36 X2 -> auto___def_42 X1 -> auto_testable_current X2 -> auto___type_31 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_42 X1 -> auto___type_31 X1). tauto. exact (rem_418 X1).
Qed.

Remark rem_420 : forall X1 X2:term, auto___def_42 X1 -> auto___def_36 X2 -> auto_testable_current X2 -> auto___type_31 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X2 -> auto___def_42 X1 -> auto_testable_current X2 -> auto___type_31 X1). tauto. exact (rem_419 X1 X2).
Qed.

Remark rem_421 : (forall X:term, auto___type_23 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_422 : (forall X:term, auto___type_23 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_23_p__type_31. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_421 epsilon_m__type_23_p__type_31 X1);  assumption.
  tauto.
Defined.

Remark rem_423 : (forall X:term, auto___type_23 X -> auto___type_31 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_31 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_23_p__type_31. intros X1 X2. intros A1.
  case (rem_422 epsilon_m__type_23_p__type_31 X1 A1). clear  epsilon_m__type_23_p__type_31 A1. intros. apply trans___type_31_r_current_1;  tauto.
 clear  epsilon_m__type_23_p__type_31 A1. tauto.
Defined.

Remark rem_424 : forall X1 X2:term, auto___type_23 (r_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_425 : (forall X:term, auto___type_23 X -> auto___type_31 X)
    -> forall X1 X2:term, auto___type_23 (r_current X1 X2) -> auto___type_31 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_23_p__type_31. intros X1 X2. intro H. intros.
  elim (rem_424 X1 X2 H);  intros.
  apply (rem_423 epsilon_m__type_23_p__type_31 X1 X2);  tauto.
Defined.

Remark rem_426 : forall X1 X2:term, auto___type_23 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_427 : forall X1 X2:term, auto___type_23 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_428 : forall X1 X2:term, auto___type_23 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_429 : auto___type_23 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_430 : forall X1 X2:term, auto___type_23 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_431 : forall X1 X2:term, auto___type_23 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_432 : forall X1:term, auto___type_23 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_433 : auto___type_23 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_434 : forall X1 X2:term, auto___type_23 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_435 : forall X1 X2:term, auto___type_23 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_436 : auto___type_23 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_437 : auto___type_23 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_438 : forall X1 X2:term, auto___type_23 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_439 : forall X1 X2:term, auto___type_23 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_440 : forall X1 X2:term, auto___type_23 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_441 : forall X1 X2:term, auto___type_23 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_442 : forall X1:term, auto___type_23 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_443 : auto___type_23 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_444 : forall X1 X2:term, auto___type_23 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_445 : auto___type_23 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_446 : auto___type_23 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_447 : auto___type_23 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_448 : forall X1 X2:term, auto___type_23 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_449 : forall X1 X2:term, auto___type_23 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_450 : forall X1:term, auto___type_23 X1 -> auto___type_31 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_23_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_436  H).
   intro H. elim (rem_429  H).
  intros X1 X2. intro H. elim (rem_441 X1 X2 H).
  intros X1 X2. intro H. elim (rem_426 X1 X2 H).
  intros X1 X2. intro H. elim (rem_439 X1 X2 H).
  intros X1 X2. intro H. elim (rem_440 X1 X2 H).
   intro H. elim (rem_445  H).
  intros X1 X2. intro H. elim (rem_449 X1 X2 H).
   intro H. elim (rem_446  H).
  intros X1 X2. intro H. elim (rem_448 X1 X2 H).
  intros X1 X2. intro H. elim (rem_430 X1 X2 H).
  intros X1 X2. intro H. elim (rem_427 X1 X2 H).
  intros X1 X2. intro H. elim (rem_438 X1 X2 H).
  intros X1. intro H. elim (rem_432 X1 H).
  intros X1 X2. intro H. elim (rem_435 X1 X2 H).
  intros X1 X2. intro H. elim (rem_434 X1 X2 H).
   intro H. elim (rem_437  H).
   intro H. elim (rem_433  H).
  intros X1 X2;  exact (rem_425 epsilon_m__type_23_p__type_31 X1 X2).
  intros X1 X2. intro H. elim (rem_431 X1 X2 H).
  intros X1. intro H. elim (rem_442 X1 H).
   intro H. elim (rem_447  H).
  intros X1 X2. intro H. elim (rem_444 X1 X2 H).
  intros X1 X2. intro H. elim (rem_428 X1 X2 H).
   intro H. elim (rem_443  H).
Qed.

Remark rem_451 : forall X1 X2:term, auto___type_22 X2 -> auto___type_23 X1 -> auto_testable_current X2 -> auto___type_31 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_23 X1 -> auto___type_31 X1). tauto. exact (rem_450 X1).
Qed.

Remark rem_452 : forall X1 X2:term, auto___type_23 X1 -> auto___type_22 X2 -> auto_testable_current X2 -> auto___type_31 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___type_22 X2 -> auto___type_23 X1 -> auto_testable_current X2 -> auto___type_31 X1). tauto. exact (rem_451 X1 X2).
Qed.

Remark rem_453 : (forall X:term, auto___type_8 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_454 : (forall X:term, auto___type_8 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_8_p__type_31. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_453 epsilon_m__type_8_p__type_31 X1);  assumption.
  tauto.
Defined.

Remark rem_455 : (forall X:term, auto___type_8 X -> auto___type_31 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_31 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_p__type_31. intros X1 X2. intros A1.
  case (rem_454 epsilon_m__type_8_p__type_31 X1 A1). clear  epsilon_m__type_8_p__type_31 A1. intros. apply trans___type_31_r_old_1;  tauto.
 clear  epsilon_m__type_8_p__type_31 A1. tauto.
Defined.

Remark rem_456 : forall X1 X2:term, auto___type_8 (r_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_457 : (forall X:term, auto___type_8 X -> auto___type_31 X)
    -> forall X1 X2:term, auto___type_8 (r_old X1 X2) -> auto___type_31 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_p__type_31. intros X1 X2. intro H. intros.
  elim (rem_456 X1 X2 H);  intros.
  apply (rem_455 epsilon_m__type_8_p__type_31 X1 X2);  tauto.
Defined.

Remark rem_458 : forall X1 X2:term, auto___type_8 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_459 : forall X1 X2:term, auto___type_8 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_460 : forall X1 X2:term, auto___type_8 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_461 : auto___type_8 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_462 : forall X1 X2:term, auto___type_8 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_463 : forall X1 X2:term, auto___type_8 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_464 : forall X1:term, auto___type_8 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_465 : auto___type_8 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_466 : forall X1 X2:term, auto___type_8 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_467 : forall X1 X2:term, auto___type_8 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_468 : auto___type_8 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_469 : auto___type_8 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_470 : forall X1 X2:term, auto___type_8 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_471 : forall X1 X2:term, auto___type_8 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_472 : forall X1 X2:term, auto___type_8 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_473 : forall X1 X2:term, auto___type_8 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_474 : forall X1:term, auto___type_8 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_475 : auto___type_8 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_476 : forall X1 X2:term, auto___type_8 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_477 : auto___type_8 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_478 : auto___type_8 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_479 : auto___type_8 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_480 : forall X1 X2:term, auto___type_8 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_481 : forall X1 X2:term, auto___type_8 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_482 : forall X1:term, auto___type_8 X1 -> auto___type_31 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_8_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_468  H).
   intro H. elim (rem_461  H).
  intros X1 X2. intro H. elim (rem_473 X1 X2 H).
  intros X1 X2. intro H. elim (rem_458 X1 X2 H).
  intros X1 X2. intro H. elim (rem_471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_472 X1 X2 H).
   intro H. elim (rem_477  H).
  intros X1 X2. intro H. elim (rem_481 X1 X2 H).
   intro H. elim (rem_478  H).
  intros X1 X2. intro H. elim (rem_480 X1 X2 H).
  intros X1 X2. intro H. elim (rem_462 X1 X2 H).
  intros X1 X2. intro H. elim (rem_459 X1 X2 H).
  intros X1 X2. intro H. elim (rem_470 X1 X2 H).
  intros X1. intro H. elim (rem_464 X1 H).
  intros X1 X2. intro H. elim (rem_467 X1 X2 H).
  intros X1 X2. intro H. elim (rem_466 X1 X2 H).
   intro H. elim (rem_469  H).
   intro H. elim (rem_465  H).
  intros X1 X2. intro H. elim (rem_463 X1 X2 H).
  intros X1 X2;  exact (rem_457 epsilon_m__type_8_p__type_31 X1 X2).
  intros X1. intro H. elim (rem_474 X1 H).
   intro H. elim (rem_479  H).
  intros X1 X2. intro H. elim (rem_476 X1 X2 H).
  intros X1 X2. intro H. elim (rem_460 X1 X2 H).
   intro H. elim (rem_475  H).
Qed.

Remark rem_483 : forall X1 X2:term, auto___type_7 X2 -> auto___type_8 X1 -> auto_testable_current X2 -> auto___type_31 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_8 X1 -> auto___type_31 X1). tauto. exact (rem_482 X1).
Qed.

Remark rem_484 : forall X1 X2:term, auto___type_8 X1 -> auto___type_7 X2 -> auto_testable_current X2 -> auto___type_31 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___type_7 X2 -> auto___type_8 X1 -> auto_testable_current X2 -> auto___type_31 X1). tauto. exact (rem_483 X1 X2).
Qed.

Remark rem_485 : (forall X:term, auto___def_102 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_486 : (forall X:term, auto___def_102 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_102_p__type_31. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_485 epsilon_m__def_102_p__type_31 X1);  assumption.
  tauto.
Defined.

Remark rem_487 : (forall X:term, auto___def_102 X -> auto___type_31 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_31 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_102_p__type_31. intros X1 X2. intros A1.
  case (rem_486 epsilon_m__def_102_p__type_31 X1 A1). clear  epsilon_m__def_102_p__type_31 A1. intros. apply trans___type_31_r_current_1;  tauto.
 clear  epsilon_m__def_102_p__type_31 A1. tauto.
Defined.

Remark rem_488 : forall X1 X2:term, auto___def_102 (r_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_489 : (forall X:term, auto___def_102 X -> auto___type_31 X)
    -> forall X1 X2:term, auto___def_102 (r_current X1 X2) -> auto___type_31 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_102_p__type_31. intros X1 X2. intro H. intros.
  elim (rem_488 X1 X2 H);  intros.
  apply (rem_487 epsilon_m__def_102_p__type_31 X1 X2);  tauto.
Defined.

Remark rem_490 : forall X1 X2:term, auto___def_102 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_491 : forall X1 X2:term, auto___def_102 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_492 : forall X1 X2:term, auto___def_102 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_493 : auto___def_102 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_494 : forall X1 X2:term, auto___def_102 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_495 : forall X1 X2:term, auto___def_102 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_496 : forall X1:term, auto___def_102 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_497 : auto___def_102 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_498 : forall X1 X2:term, auto___def_102 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_499 : forall X1 X2:term, auto___def_102 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_500 : auto___def_102 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_501 : auto___def_102 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_502 : forall X1 X2:term, auto___def_102 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_503 : forall X1 X2:term, auto___def_102 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_504 : forall X1 X2:term, auto___def_102 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_505 : forall X1 X2:term, auto___def_102 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_506 : forall X1:term, auto___def_102 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_507 : auto___def_102 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_508 : forall X1 X2:term, auto___def_102 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_509 : auto___def_102 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_510 : auto___def_102 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_511 : auto___def_102 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_512 : forall X1 X2:term, auto___def_102 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_513 : forall X1 X2:term, auto___def_102 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_514 : forall X1:term, auto___def_102 X1 -> auto___type_31 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_102_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_500  H).
   intro H. elim (rem_493  H).
  intros X1 X2. intro H. elim (rem_505 X1 X2 H).
  intros X1 X2. intro H. elim (rem_490 X1 X2 H).
  intros X1 X2. intro H. elim (rem_503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_504 X1 X2 H).
   intro H. elim (rem_509  H).
  intros X1 X2. intro H. elim (rem_513 X1 X2 H).
   intro H. elim (rem_510  H).
  intros X1 X2. intro H. elim (rem_512 X1 X2 H).
  intros X1 X2. intro H. elim (rem_494 X1 X2 H).
  intros X1 X2. intro H. elim (rem_491 X1 X2 H).
  intros X1 X2. intro H. elim (rem_502 X1 X2 H).
  intros X1. intro H. elim (rem_496 X1 H).
  intros X1 X2. intro H. elim (rem_499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_498 X1 X2 H).
   intro H. elim (rem_501  H).
   intro H. elim (rem_497  H).
  intros X1 X2;  exact (rem_489 epsilon_m__def_102_p__type_31 X1 X2).
  intros X1 X2. intro H. elim (rem_495 X1 X2 H).
  intros X1. intro H. elim (rem_506 X1 H).
   intro H. elim (rem_511  H).
  intros X1 X2. intro H. elim (rem_508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_492 X1 X2 H).
   intro H. elim (rem_507  H).
Qed.

Remark rem_515 : forall X1 X2:term, auto___def_102 X1 -> auto___def_96 X2 -> auto_testable_current X2 -> auto___type_31 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_102 X1 -> auto___type_31 X1). tauto. exact (rem_514 X1).
Qed.

Remark rem_516 : (forall X:term, auto___type_4 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_517 : (forall X:term, auto___type_4 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_4_p__type_31. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_516 epsilon_m__type_4_p__type_31 X1);  assumption.
  tauto.
Defined.

Remark rem_518 : (forall X:term, auto___type_4 X -> auto___type_31 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_31 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_p__type_31. intros X1 X2. intros A1.
  case (rem_517 epsilon_m__type_4_p__type_31 X1 A1). clear  epsilon_m__type_4_p__type_31 A1. intros. apply trans___type_31_r_old_1;  tauto.
 clear  epsilon_m__type_4_p__type_31 A1. tauto.
Defined.

Remark rem_519 : forall X1 X2:term, auto___type_4 (r_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_520 : (forall X:term, auto___type_4 X -> auto___type_31 X)
    -> forall X1 X2:term, auto___type_4 (r_old X1 X2) -> auto___type_31 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_p__type_31. intros X1 X2. intro H. intros.
  elim (rem_519 X1 X2 H);  intros.
  apply (rem_518 epsilon_m__type_4_p__type_31 X1 X2);  tauto.
Defined.

Remark rem_521 : forall X1 X2:term, auto___type_4 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_522 : forall X1 X2:term, auto___type_4 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_523 : forall X1 X2:term, auto___type_4 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_524 : auto___type_4 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_525 : forall X1 X2:term, auto___type_4 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_526 : forall X1 X2:term, auto___type_4 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_527 : forall X1:term, auto___type_4 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_528 : auto___type_4 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_529 : forall X1 X2:term, auto___type_4 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_530 : forall X1 X2:term, auto___type_4 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_531 : auto___type_4 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_532 : auto___type_4 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_533 : forall X1 X2:term, auto___type_4 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_534 : forall X1 X2:term, auto___type_4 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_535 : forall X1 X2:term, auto___type_4 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_536 : forall X1 X2:term, auto___type_4 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_537 : forall X1:term, auto___type_4 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_538 : auto___type_4 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_539 : forall X1 X2:term, auto___type_4 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_540 : auto___type_4 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_541 : auto___type_4 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_542 : auto___type_4 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_543 : forall X1 X2:term, auto___type_4 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_544 : forall X1 X2:term, auto___type_4 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_545 : forall X1:term, auto___type_4 X1 -> auto___type_31 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_4_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_531  H).
   intro H. elim (rem_524  H).
  intros X1 X2. intro H. elim (rem_536 X1 X2 H).
  intros X1 X2. intro H. elim (rem_521 X1 X2 H).
  intros X1 X2. intro H. elim (rem_534 X1 X2 H).
  intros X1 X2. intro H. elim (rem_535 X1 X2 H).
   intro H. elim (rem_540  H).
  intros X1 X2. intro H. elim (rem_544 X1 X2 H).
   intro H. elim (rem_541  H).
  intros X1 X2. intro H. elim (rem_543 X1 X2 H).
  intros X1 X2. intro H. elim (rem_525 X1 X2 H).
  intros X1 X2. intro H. elim (rem_522 X1 X2 H).
  intros X1 X2. intro H. elim (rem_533 X1 X2 H).
  intros X1. intro H. elim (rem_527 X1 H).
  intros X1 X2. intro H. elim (rem_530 X1 X2 H).
  intros X1 X2. intro H. elim (rem_529 X1 X2 H).
   intro H. elim (rem_532  H).
   intro H. elim (rem_528  H).
  intros X1 X2. intro H. elim (rem_526 X1 X2 H).
  intros X1 X2;  exact (rem_520 epsilon_m__type_4_p__type_31 X1 X2).
  intros X1. intro H. elim (rem_537 X1 H).
   intro H. elim (rem_542  H).
  intros X1 X2. intro H. elim (rem_539 X1 X2 H).
  intros X1 X2. intro H. elim (rem_523 X1 X2 H).
   intro H. elim (rem_538  H).
Qed.

Remark rem_546 : forall X1 X2:term, auto___def_24 X2 -> auto___type_4 X1 -> auto_testable_current X2 -> auto___type_31 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_31 X1). tauto. exact (rem_545 X1).
Qed.

Remark rem_547 : forall X1 X2:term, auto___type_4 X1 -> auto___def_24 X2 -> auto_testable_current X2 -> auto___type_31 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X2 -> auto___type_4 X1 -> auto_testable_current X2 -> auto___type_31 X1). tauto. exact (rem_546 X1 X2).
Qed.

Remark rem_548 : forall X1 X2:term, auto___def_67 X1 X2 -> or_6
    (auto___type_19 X1 /\ auto___def_84 X2)
    (auto___def_42 X1 /\ auto___def_36 X2)
    (auto___type_23 X1 /\ auto___type_22 X2)
    (auto___type_8 X1 /\ auto___type_7 X2)
    (auto___def_102 X1 /\ auto___def_96 X2)
    (auto___type_4 X1 /\ auto___def_24 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_6_intro_1; tauto.
  intros. apply or_6_intro_2; tauto.
  intros. apply or_6_intro_3; tauto.
  intros. apply or_6_intro_4; tauto.
  intros. apply or_6_intro_5; tauto.
  intros. apply or_6_intro_6; tauto.
Qed.

Remark rem_549 : forall X1 X2:term, auto___def_67 X1 X2 -> auto_testable_current X2 -> auto___type_31 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_548 X1 X2 H);  intros.
  apply (rem_388 X1 X2);  tauto.
  apply (rem_420 X1 X2);  tauto.
  apply (rem_452 X1 X2);  tauto.
  apply (rem_484 X1 X2);  tauto.
  apply (rem_515 X1 X2);  tauto.
  apply (rem_547 X1 X2);  tauto.
Qed.

Remark rem_550 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_551 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_550 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_552 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_553 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_552 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_554 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_551 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_553 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_555 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_554 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_556 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_557 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_556 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_558 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_559 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_558 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_560 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_557 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_559 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_561 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_560 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_2;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_562 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_563 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_562 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_564 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_565 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_564 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_566 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_563 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_565 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_567 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_566 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_3;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_568 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___type_26 X1 -> auto___type_26 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_569 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_26 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___type_26 X1 -> auto___type_26 X1). tauto. exact (rem_568 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_570 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_111 X2 -> auto___def_111 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_571 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___def_111 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_111 X2 -> auto___def_111 X2). tauto. exact (rem_570 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_572 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> (auto___type_26 X1 /\ auto___def_111 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___type_26 X1). 2:apply (rem_569 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_111 X2). 2:apply (rem_571 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_573 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_572 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_4;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_574 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_575 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_574 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_576 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_577 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_576 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_578 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_575 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_577 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_579 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_578 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_5;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_580 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_581 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_580 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_582 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_583 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_582 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_584 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_581 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_583 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_585 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_584 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_6;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_586 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_587 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_586 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_588 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_589 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_588 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_590 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_587 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_589 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_591 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_590 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_7;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_592 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___type_27 X1 -> auto___type_27 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_593 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_27 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___type_27 X1 -> auto___type_27 X1). tauto. exact (rem_592 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_594 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_113 X2 -> auto___def_113 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_595 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___def_113 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_113 X2 -> auto___def_113 X2). tauto. exact (rem_594 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_596 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> (auto___type_27 X1 /\ auto___def_113 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___type_27 X1). 2:apply (rem_593 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_113 X2). 2:apply (rem_595 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_597 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_596 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_8;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_598 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_599 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_598 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_600 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_601 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_600 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_602 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_599 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_601 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_603 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_602 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_9;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_604 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_605 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_604 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_606 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_607 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_606 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_608 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_605 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_607 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_609 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_608 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_10;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_610 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_611 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_610 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_612 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_613 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_612 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_614 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_611 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_613 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_615 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_614 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_crypt_11;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Inductive or_11(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11:Prop) : Prop :=
    or_11_intro_1 : H1 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
  | or_11_intro_2 : H2 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
  | or_11_intro_3 : H3 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
  | or_11_intro_4 : H4 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
  | or_11_intro_5 : H5 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
  | or_11_intro_6 : H6 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
  | or_11_intro_7 : H7 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
  | or_11_intro_8 : H8 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
  | or_11_intro_9 : H9 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
  | or_11_intro_10 : H10 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
  | or_11_intro_11 : H11 -> (or_11 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11)
.

Remark rem_616 : forall X1 X2:term, auto_testable_current (crypt X1 X2) -> or_11
    (auto___def_17 X1 /\ auto___type_2 X2)
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___def_21 X1 /\ auto___def_22 X2)
    (auto___type_26 X1 /\ auto___def_111 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___type_22 X1 /\ auto___def_104 X2)
    (auto___def_88 X1 /\ auto___def_89 X2)
    (auto___type_27 X1 /\ auto___def_113 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto___def_84 X1 /\ auto___def_85 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_11_intro_1; tauto.
  intros. apply or_11_intro_2; tauto.
  intros. apply or_11_intro_3; tauto.
  intros. apply or_11_intro_4; tauto.
  intros. apply or_11_intro_5; tauto.
  intros. apply or_11_intro_6; tauto.
  intros. apply or_11_intro_7; tauto.
  intros. apply or_11_intro_8; tauto.
  intros. apply or_11_intro_9; tauto.
  intros. apply or_11_intro_10; tauto.
  intros. apply or_11_intro_11; tauto.
Qed.

Remark rem_617 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current (crypt X1 X2) -> auto___type_27 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intro H. intros.
  elim (rem_616 X1 X2 H);  intros.
  apply (rem_555 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_561 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_567 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_573 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_579 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_585 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_591 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_597 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_603 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_609 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_615 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
Defined.

Remark rem_618 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27.  tauto.
Defined.

Remark rem_619 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> auto___type_27 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27.  case (rem_618 epsilon_mtestable_current_p__type_27). clear  epsilon_mtestable_current_p__type_27. intros. apply trans___type_27_bob_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27. tauto.
Defined.

Remark rem_620 : auto_testable_current bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_621 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> auto_testable_current bob -> auto___type_27 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intro H. intros.
  elim (rem_620 H);  intros.
  apply (rem_619 epsilon_mtestable_current_p__type_27);  tauto.
Defined.

Remark rem_622 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_27 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.  case (rem_618 epsilon_mtestable_current_p__type_27). clear  epsilon_mtestable_current_p__type_27. intros. apply trans___type_27_noncea_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27. tauto.
Defined.

Remark rem_623 : forall X1 X2:term, auto_testable_current (noncea_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_624 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current (noncea_old X1 X2) -> auto___type_27 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intro H. intros.
  elim (rem_623 X1 X2 H);  intros.
  apply (rem_622 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
Defined.

Remark rem_625 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_626 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_625 epsilon_mtestable_current_p__type_27 X1);  assumption.
  tauto.
Defined.

Remark rem_627 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_27 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1.
  case (rem_626 epsilon_mtestable_current_p__type_27 X1 A1). clear  epsilon_mtestable_current_p__type_27 A1. intros. apply trans___type_27_r_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1. tauto.
Defined.

Remark rem_628 : forall X1 X2:term, auto_testable_current (r_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_629 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current (r_old X1 X2) -> auto___type_27 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intro H. intros.
  elim (rem_628 X1 X2 H);  intros.
  apply (rem_627 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
Defined.

Remark rem_630 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_631 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1. intros A1.
  cut (auto_testable_current X1). 2:apply (rem_630 epsilon_mtestable_current_p__type_27 X1);  assumption.
  tauto.
Defined.

Remark rem_632 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto_testable_current X1 -> auto___type_27 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1. intros A1.
  case (rem_631 epsilon_mtestable_current_p__type_27 X1 A1). clear  epsilon_mtestable_current_p__type_27 A1. intros. apply trans___type_27_p_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1. tauto.
Defined.

Remark rem_633 : forall X1:term, auto_testable_current (p X1) -> or_1
    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_634 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto_testable_current (p X1) -> auto___type_27 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1. intro H. intros.
  elim (rem_633 X1 H);  intros.
  apply (rem_632 epsilon_mtestable_current_p__type_27 X1);  tauto.
Defined.

Remark rem_635 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_27 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.  case (rem_618 epsilon_mtestable_current_p__type_27). clear  epsilon_mtestable_current_p__type_27. intros. apply trans___type_27_passwd_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27. tauto.
Defined.

Remark rem_636 : forall X1 X2:term, auto_testable_current (passwd_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_637 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current (passwd_old X1 X2) -> auto___type_27 (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intro H. intros.
  elim (rem_636 X1 X2 H);  intros.
  apply (rem_635 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
Defined.

Remark rem_638 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> auto___type_27 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27.  case (rem_618 epsilon_mtestable_current_p__type_27). clear  epsilon_mtestable_current_p__type_27. intros. apply trans___type_27_alice_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27. tauto.
Defined.

Remark rem_639 : auto_testable_current alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_640 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> auto_testable_current alice -> auto___type_27 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intro H. intros.
  elim (rem_639 H);  intros.
  apply (rem_638 epsilon_mtestable_current_p__type_27);  tauto.
Defined.

Remark rem_641 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___type_27 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.  case (rem_618 epsilon_mtestable_current_p__type_27). clear  epsilon_mtestable_current_p__type_27. intros. apply trans___type_27_nonceb_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27. tauto.
Defined.

Remark rem_642 : forall X1 X2:term, auto_testable_current (nonceb_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_643 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current (nonceb_old X1 X2) -> auto___type_27 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intro H. intros.
  elim (rem_642 X1 X2 H);  intros.
  apply (rem_641 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
Defined.

Remark rem_644 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto_testable_current X1 -> auto_testable_current X1). tauto. exact (rem_630 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_645 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_576 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_646 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_644 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_645 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_647 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_27 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_646 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_dec_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_648 : forall X1 X2:term, auto_testable_current (dec X1 X2) -> or_1
    (auto_testable_current X1 /\ auto_knows_current X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_649 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current (dec X1 X2) -> auto___type_27 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intro H. intros.
  elim (rem_648 X1 X2 H);  intros.
  apply (rem_647 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
Defined.

Remark rem_650 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_651 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_650 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_652 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_653 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_652 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_654 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_651 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_653 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_655 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_27 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_654 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_enc_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_656 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_27 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_646 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_enc_2;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_657 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_658 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_657 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_659 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_660 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_659 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_661 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_658 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_660 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_662 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_27 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_661 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_enc_3;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_663 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_664 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_663 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_665 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_666 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_665 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_667 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_664 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_666 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_668 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_27 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_667 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_enc_4;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_669 : forall X1 X2:term, auto_testable_current (enc X1 X2) -> or_4
    (auto___def_71 X1 /\ auto___def_72 X2)
    (auto_testable_current X1 /\ auto_knows_current X2)
    (auto___def_79 X1 /\ auto___def_80 X2)
    (auto___def_75 X1 /\ auto___def_76 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_670 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current (enc X1 X2) -> auto___type_27 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intro H. intros.
  elim (rem_669 X1 X2 H);  intros.
  apply (rem_655 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_656 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_662 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_668 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
Defined.

Remark rem_671 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_672 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X2. intros A1.
  cut (auto_testable_current X2). 2:apply (rem_671 epsilon_mtestable_current_p__type_27 X2);  assumption.
  tauto.
Defined.

Remark rem_673 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current X2 -> auto___type_27 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1.
  case (rem_672 epsilon_mtestable_current_p__type_27 X2 A1). clear  epsilon_mtestable_current_p__type_27 A1. intros. apply trans___type_27_cons_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1. tauto.
Defined.

Remark rem_674 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto___type_27 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1.
  case (rem_631 epsilon_mtestable_current_p__type_27 X1 A1). clear  epsilon_mtestable_current_p__type_27 A1. intros. apply trans___type_27_cons_2;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1. tauto.
Defined.

Remark rem_675 : forall X1 X2:term, auto_testable_current (cons X1 X2) -> or_2
    (auto_testable_current X2)    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_676 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current (cons X1 X2) -> auto___type_27 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intro H. intros.
  elim (rem_675 X1 X2 H);  intros.
  apply (rem_673 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_674 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
Defined.

Remark rem_677 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto_testable_current X1 -> auto___type_27 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1. intros A1.
  case (rem_631 epsilon_mtestable_current_p__type_27 X1 A1). clear  epsilon_mtestable_current_p__type_27 A1. intros. apply trans___type_27_s_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1. tauto.
Defined.

Remark rem_678 : forall X1:term, auto_testable_current (s X1) -> or_1
    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_679 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto_testable_current (s X1) -> auto___type_27 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1. intro H. intros.
  elim (rem_678 X1 H);  intros.
  apply (rem_677 epsilon_mtestable_current_p__type_27 X1);  tauto.
Defined.

Remark rem_680 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> auto___type_27 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27.  case (rem_618 epsilon_mtestable_current_p__type_27). clear  epsilon_mtestable_current_p__type_27. intros. apply trans___type_27_i_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27. tauto.
Defined.

Remark rem_681 : auto_testable_current i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_682 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> auto_testable_current i -> auto___type_27 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intro H. intros.
  elim (rem_681 H);  intros.
  apply (rem_680 epsilon_mtestable_current_p__type_27);  tauto.
Defined.

Remark rem_683 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> auto___type_27 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27.  case (rem_618 epsilon_mtestable_current_p__type_27). clear  epsilon_mtestable_current_p__type_27. intros. apply trans___type_27_nil_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27. tauto.
Defined.

Remark rem_684 : auto_testable_current nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_685 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> auto_testable_current nil -> auto___type_27 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intro H. intros.
  elim (rem_684 H);  intros.
  apply (rem_683 epsilon_mtestable_current_p__type_27);  tauto.
Defined.

Remark rem_686 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> auto___type_27 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27.  case (rem_618 epsilon_mtestable_current_p__type_27). clear  epsilon_mtestable_current_p__type_27. intros. apply trans___type_27_server_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27. tauto.
Defined.

Remark rem_687 : auto_testable_current server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_688 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> auto_testable_current server -> auto___type_27 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intro H. intros.
  elim (rem_687 H);  intros.
  apply (rem_686 epsilon_mtestable_current_p__type_27);  tauto.
Defined.

Remark rem_689 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_119 X1 -> auto___def_119 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_690 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_119 X1 -> auto___def_119 X1). tauto. exact (rem_689 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_691 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___type_31 X2 -> auto___type_31 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_692 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___type_31 X2 -> auto___type_31 X2). tauto. exact (rem_691 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_693 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_690 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_692 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_694 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_27 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_693 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_key_1;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_695 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_114 X1 -> auto___def_114 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_696 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_114 X1 -> auto___def_114 X1). tauto. exact (rem_695 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_697 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_66 X2 -> auto___def_66 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_698 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_66 X2 -> auto___def_66 X2). tauto. exact (rem_697 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_699 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_696 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_698 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_700 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___type_27 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_699 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_key_2;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_701 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_702 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_701 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_703 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_704 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_703 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_705 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_702 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_704 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_706 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_27 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_705 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_key_3;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_707 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_708 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_707 epsilon_mtestable_current_p__type_27 X1).
Defined.

Remark rem_709 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_710 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_709 epsilon_mtestable_current_p__type_27 X2).
Defined.

Remark rem_711 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_708 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_710 epsilon_mtestable_current_p__type_27 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_712 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_27 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intros A1 A2.
  case (rem_711 epsilon_mtestable_current_p__type_27 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_27 A1 A2. intros. apply trans___type_27_key_4;  tauto.
 clear  epsilon_mtestable_current_p__type_27 A1 A2. tauto.
Defined.

Remark rem_713 : forall X1 X2:term, auto_testable_current (key X1 X2) -> or_4
    (auto___def_119 X1 /\ auto___type_31 X2)
    (auto___def_114 X1 /\ auto___def_66 X2)
    (auto___def_51 X1 /\ auto_agent X2)
    (auto___def_12 X1 /\ auto___def_13 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_714 : (forall X:term, auto_testable_current X -> auto___type_27 X)
    -> forall X1 X2:term, auto_testable_current (key X1 X2) -> auto___type_27 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_27. intros X1 X2. intro H. intros.
  elim (rem_713 X1 X2 H);  intros.
  apply (rem_694 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_700 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_706 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
  apply (rem_712 epsilon_mtestable_current_p__type_27 X1 X2);  tauto.
Defined.

Remark rem_715 : forall X1 X2:term, auto_testable_current (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_716 : forall X1 X2:term, auto_testable_current (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_717 : forall X1 X2:term, auto_testable_current (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_718 : auto_testable_current pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_719 : forall X1 X2:term, auto_testable_current (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_720 : auto_testable_current prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_721 : auto_testable_current sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_722 : forall X1 X2:term, auto_testable_current (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_723 : forall X1 X2:term, auto_testable_current (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_724 : forall X1:term, auto_testable_current X1 -> auto___type_27 X1. (* Induct. *)
Proof.
  fix epsilon_mtestable_current_p__type_27 1.
  intro X. case X.
  exact (rem_640 epsilon_mtestable_current_p__type_27 ).
  exact (rem_621 epsilon_mtestable_current_p__type_27 ).
  intros X1 X2;  exact (rem_676 epsilon_mtestable_current_p__type_27 X1 X2).
  intros X1 X2;  exact (rem_617 epsilon_mtestable_current_p__type_27 X1 X2).
  intros X1 X2;  exact (rem_649 epsilon_mtestable_current_p__type_27 X1 X2).
  intros X1 X2;  exact (rem_670 epsilon_mtestable_current_p__type_27 X1 X2).
  exact (rem_682 epsilon_mtestable_current_p__type_27 ).
  intros X1 X2;  exact (rem_714 epsilon_mtestable_current_p__type_27 X1 X2).
  exact (rem_685 epsilon_mtestable_current_p__type_27 ).
  intros X1 X2. intro H. elim (rem_723 X1 X2 H).
  intros X1 X2;  exact (rem_624 epsilon_mtestable_current_p__type_27 X1 X2).
  intros X1 X2. intro H. elim (rem_715 X1 X2 H).
  intros X1 X2;  exact (rem_643 epsilon_mtestable_current_p__type_27 X1 X2).
  intros X1;  exact (rem_634 epsilon_mtestable_current_p__type_27 X1).
  intros X1 X2. intro H. elim (rem_719 X1 X2 H).
  intros X1 X2;  exact (rem_637 epsilon_mtestable_current_p__type_27 X1 X2).
   intro H. elim (rem_720  H).
   intro H. elim (rem_718  H).
  intros X1 X2. intro H. elim (rem_717 X1 X2 H).
  intros X1 X2;  exact (rem_629 epsilon_mtestable_current_p__type_27 X1 X2).
  intros X1;  exact (rem_679 epsilon_mtestable_current_p__type_27 X1).
  exact (rem_688 epsilon_mtestable_current_p__type_27 ).
  intros X1 X2. intro H. elim (rem_722 X1 X2 H).
  intros X1 X2. intro H. elim (rem_716 X1 X2 H).
   intro H. elim (rem_721  H).
Qed.

Remark rem_725 : (forall X:term, auto___def_75 X -> auto___type_17 X)
    -> forall X1:term, auto___def_77 X1 -> auto___def_77 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_726 : (forall X:term, auto___def_75 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_77 X1 -> auto___type_17 X2 -> auto___def_77 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_75_p__type_17. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_77 X1). tauto. exact (rem_725 epsilon_m__def_75_p__type_17 X1).
Defined.

Remark rem_727 : (forall X:term, auto___def_75 X -> auto___type_17 X)
    -> forall X2:term, auto___type_17 X2 -> auto___type_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_728 : (forall X:term, auto___def_75 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_77 X1 -> auto___type_17 X2 -> auto___type_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_75_p__type_17. intros X1 X2.
  cut (auto___type_17 X2 -> auto___type_17 X2). tauto. exact (rem_727 epsilon_m__def_75_p__type_17 X2).
Defined.

Remark rem_729 : (forall X:term, auto___def_75 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_77 X1 -> auto___type_17 X2 -> (auto___def_77 X1 /\ auto___type_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_75_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_77 X1). 2:apply (rem_726 epsilon_m__def_75_p__type_17 X1 X2);  assumption.
  cut (auto___type_17 X2). 2:apply (rem_728 epsilon_m__def_75_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_730 : (forall X:term, auto___def_75 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_77 X1 -> auto___type_17 X2 -> auto___type_17 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_75_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_729 epsilon_m__def_75_p__type_17 X1 X2 A1 A2). clear  epsilon_m__def_75_p__type_17 A1 A2. intros. apply trans___type_17_crypt_1;  tauto.
 clear  epsilon_m__def_75_p__type_17 A1 A2. tauto.
Defined.

Remark rem_731 : forall X1 X2:term, auto___def_75 (crypt X1 X2) -> or_1
    (auto___def_77 X1 /\ auto___type_17 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_732 : (forall X:term, auto___def_75 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_75 (crypt X1 X2) -> auto___type_17 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_75_p__type_17. intros X1 X2. intro H. intros.
  elim (rem_731 X1 X2 H);  intros.
  apply (rem_730 epsilon_m__def_75_p__type_17 X1 X2);  tauto.
Defined.

Remark rem_733 : forall X1 X2:term, auto___def_75 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_734 : forall X1 X2:term, auto___def_75 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_735 : auto___def_75 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_736 : forall X1 X2:term, auto___def_75 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_737 : forall X1 X2:term, auto___def_75 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_738 : forall X1 X2:term, auto___def_75 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_739 : forall X1:term, auto___def_75 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_740 : auto___def_75 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_741 : forall X1 X2:term, auto___def_75 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_742 : forall X1 X2:term, auto___def_75 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_743 : auto___def_75 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_744 : auto___def_75 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_745 : forall X1 X2:term, auto___def_75 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_746 : forall X1 X2:term, auto___def_75 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_747 : forall X1 X2:term, auto___def_75 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_748 : forall X1 X2:term, auto___def_75 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_749 : forall X1:term, auto___def_75 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_750 : auto___def_75 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_751 : forall X1 X2:term, auto___def_75 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_752 : auto___def_75 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_753 : auto___def_75 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_754 : auto___def_75 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_755 : forall X1 X2:term, auto___def_75 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_756 : forall X1 X2:term, auto___def_75 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_757 : forall X1:term, auto___def_75 X1 -> auto___type_17 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_75_p__type_17 1.
  intro X. case X.
   intro H. elim (rem_743  H).
   intro H. elim (rem_735  H).
  intros X1 X2. intro H. elim (rem_748 X1 X2 H).
  intros X1 X2;  exact (rem_732 epsilon_m__def_75_p__type_17 X1 X2).
  intros X1 X2. intro H. elim (rem_746 X1 X2 H).
  intros X1 X2. intro H. elim (rem_747 X1 X2 H).
   intro H. elim (rem_752  H).
  intros X1 X2. intro H. elim (rem_756 X1 X2 H).
   intro H. elim (rem_753  H).
  intros X1 X2. intro H. elim (rem_755 X1 X2 H).
  intros X1 X2. intro H. elim (rem_736 X1 X2 H).
  intros X1 X2. intro H. elim (rem_733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_745 X1 X2 H).
  intros X1. intro H. elim (rem_739 X1 H).
  intros X1 X2. intro H. elim (rem_742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_741 X1 X2 H).
   intro H. elim (rem_744  H).
   intro H. elim (rem_740  H).
  intros X1 X2. intro H. elim (rem_738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_737 X1 X2 H).
  intros X1. intro H. elim (rem_749 X1 H).
   intro H. elim (rem_754  H).
  intros X1 X2. intro H. elim (rem_751 X1 X2 H).
  intros X1 X2. intro H. elim (rem_734 X1 X2 H).
   intro H. elim (rem_750  H).
Qed.

Remark rem_758 : forall X1 X2:term, auto___def_75 X1 -> auto_knows_current X2 -> auto___type_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_75 X1 -> auto___type_17 X1). tauto. exact (rem_757 X1).
Qed.

Remark rem_759 : forall X1 X3:term, auto___def_75 X1 -> auto_knows_current X3 -> auto___type_17 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_75 X1 -> auto_knows_current X2 -> auto___type_17 X1). tauto. exact (rem_758 X1 X2).
Qed.

Remark rem_760 : (forall X:term, auto___def_79 X -> auto___type_17 X)
    -> forall X1:term, auto___def_81 X1 -> auto___def_81 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_761 : (forall X:term, auto___def_79 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> auto___def_81 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_79_p__type_17. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_81 X1). tauto. exact (rem_760 epsilon_m__def_79_p__type_17 X1).
Defined.

Remark rem_762 : (forall X:term, auto___def_79 X -> auto___type_17 X)
    -> forall X2:term, auto___def_82 X2 -> auto___def_82 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_763 : (forall X:term, auto___def_79 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> auto___def_82 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_79_p__type_17. intros X1 X2.
  cut (auto___def_82 X2 -> auto___def_82 X2). tauto. exact (rem_762 epsilon_m__def_79_p__type_17 X2).
Defined.

Remark rem_764 : (forall X:term, auto___def_79 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> (auto___def_81 X1 /\ auto___def_82 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_79_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_81 X1). 2:apply (rem_761 epsilon_m__def_79_p__type_17 X1 X2);  assumption.
  cut (auto___def_82 X2). 2:apply (rem_763 epsilon_m__def_79_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_765 : (forall X:term, auto___def_79 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> auto___type_17 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_79_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_764 epsilon_m__def_79_p__type_17 X1 X2 A1 A2). clear  epsilon_m__def_79_p__type_17 A1 A2. intros. apply trans___type_17_crypt_2;  tauto.
 clear  epsilon_m__def_79_p__type_17 A1 A2. tauto.
Defined.

Remark rem_766 : forall X1 X2:term, auto___def_79 (crypt X1 X2) -> or_1
    (auto___def_81 X1 /\ auto___def_82 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_767 : (forall X:term, auto___def_79 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___type_17 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_79_p__type_17. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_765 epsilon_m__def_79_p__type_17 X1 X2);  tauto.
Defined.

Remark rem_768 : forall X1 X2:term, auto___def_79 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_769 : forall X1 X2:term, auto___def_79 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_770 : auto___def_79 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_771 : forall X1 X2:term, auto___def_79 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_772 : forall X1 X2:term, auto___def_79 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_773 : forall X1 X2:term, auto___def_79 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_774 : forall X1:term, auto___def_79 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_775 : auto___def_79 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_776 : forall X1 X2:term, auto___def_79 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_777 : forall X1 X2:term, auto___def_79 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_778 : auto___def_79 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_779 : auto___def_79 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_780 : forall X1 X2:term, auto___def_79 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_781 : forall X1 X2:term, auto___def_79 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_782 : forall X1 X2:term, auto___def_79 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_783 : forall X1 X2:term, auto___def_79 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_784 : forall X1:term, auto___def_79 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_785 : auto___def_79 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_786 : forall X1 X2:term, auto___def_79 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_787 : auto___def_79 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_788 : auto___def_79 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_789 : auto___def_79 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_790 : forall X1 X2:term, auto___def_79 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_791 : forall X1 X2:term, auto___def_79 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_792 : forall X1:term, auto___def_79 X1 -> auto___type_17 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_79_p__type_17 1.
  intro X. case X.
   intro H. elim (rem_778  H).
   intro H. elim (rem_770  H).
  intros X1 X2. intro H. elim (rem_783 X1 X2 H).
  intros X1 X2;  exact (rem_767 epsilon_m__def_79_p__type_17 X1 X2).
  intros X1 X2. intro H. elim (rem_781 X1 X2 H).
  intros X1 X2. intro H. elim (rem_782 X1 X2 H).
   intro H. elim (rem_787  H).
  intros X1 X2. intro H. elim (rem_791 X1 X2 H).
   intro H. elim (rem_788  H).
  intros X1 X2. intro H. elim (rem_790 X1 X2 H).
  intros X1 X2. intro H. elim (rem_771 X1 X2 H).
  intros X1 X2. intro H. elim (rem_768 X1 X2 H).
  intros X1 X2. intro H. elim (rem_780 X1 X2 H).
  intros X1. intro H. elim (rem_774 X1 H).
  intros X1 X2. intro H. elim (rem_777 X1 X2 H).
  intros X1 X2. intro H. elim (rem_776 X1 X2 H).
   intro H. elim (rem_779  H).
   intro H. elim (rem_775  H).
  intros X1 X2. intro H. elim (rem_773 X1 X2 H).
  intros X1 X2. intro H. elim (rem_772 X1 X2 H).
  intros X1. intro H. elim (rem_784 X1 H).
   intro H. elim (rem_789  H).
  intros X1 X2. intro H. elim (rem_786 X1 X2 H).
  intros X1 X2. intro H. elim (rem_769 X1 X2 H).
   intro H. elim (rem_785  H).
Qed.

Remark rem_793 : forall X1 X2:term, auto___def_79 X1 -> auto_knows_current X2 -> auto___type_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_79 X1 -> auto___type_17 X1). tauto. exact (rem_792 X1).
Qed.

Remark rem_794 : forall X1 X3:term, auto___def_79 X1 -> auto_knows_current X3 -> auto___type_17 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_79 X1 -> auto_knows_current X2 -> auto___type_17 X1). tauto. exact (rem_793 X1 X2).
Qed.

Remark rem_795 : (forall X:term, auto___def_71 X -> auto___type_17 X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_796 : (forall X:term, auto___def_71 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_71_p__type_17. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_795 epsilon_m__def_71_p__type_17 X1).
Defined.

Remark rem_797 : (forall X:term, auto___def_71 X -> auto___type_17 X)
    -> forall X2:term, auto___def_73 X2 -> auto___def_73 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_798 : (forall X:term, auto___def_71 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___def_73 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_71_p__type_17. intros X1 X2.
  cut (auto___def_73 X2 -> auto___def_73 X2). tauto. exact (rem_797 epsilon_m__def_71_p__type_17 X2).
Defined.

Remark rem_799 : (forall X:term, auto___def_71 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> (auto___def_12 X1 /\ auto___def_73 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_71_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_796 epsilon_m__def_71_p__type_17 X1 X2);  assumption.
  cut (auto___def_73 X2). 2:apply (rem_798 epsilon_m__def_71_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_800 : (forall X:term, auto___def_71 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___type_17 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_71_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_799 epsilon_m__def_71_p__type_17 X1 X2 A1 A2). clear  epsilon_m__def_71_p__type_17 A1 A2. intros. apply trans___type_17_key_1;  tauto.
 clear  epsilon_m__def_71_p__type_17 A1 A2. tauto.
Defined.

Remark rem_801 : forall X1 X2:term, auto___def_71 (key X1 X2) -> or_1
    (auto___def_12 X1 /\ auto___def_73 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_802 : (forall X:term, auto___def_71 X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_71 (key X1 X2) -> auto___type_17 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_71_p__type_17. intros X1 X2. intro H. intros.
  elim (rem_801 X1 X2 H);  intros.
  apply (rem_800 epsilon_m__def_71_p__type_17 X1 X2);  tauto.
Defined.

Remark rem_803 : forall X1 X2:term, auto___def_71 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_804 : forall X1 X2:term, auto___def_71 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_805 : forall X1 X2:term, auto___def_71 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_806 : auto___def_71 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_807 : forall X1 X2:term, auto___def_71 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_808 : forall X1 X2:term, auto___def_71 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_809 : forall X1 X2:term, auto___def_71 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_810 : forall X1:term, auto___def_71 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_811 : auto___def_71 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_812 : forall X1 X2:term, auto___def_71 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_813 : forall X1 X2:term, auto___def_71 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_814 : auto___def_71 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_815 : auto___def_71 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_816 : forall X1 X2:term, auto___def_71 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_817 : forall X1 X2:term, auto___def_71 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_818 : forall X1 X2:term, auto___def_71 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_819 : forall X1 X2:term, auto___def_71 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_820 : forall X1:term, auto___def_71 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_821 : auto___def_71 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_822 : forall X1 X2:term, auto___def_71 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_823 : auto___def_71 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_824 : auto___def_71 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_825 : auto___def_71 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_826 : forall X1 X2:term, auto___def_71 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_827 : forall X1:term, auto___def_71 X1 -> auto___type_17 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_71_p__type_17 1.
  intro X. case X.
   intro H. elim (rem_814  H).
   intro H. elim (rem_806  H).
  intros X1 X2. intro H. elim (rem_819 X1 X2 H).
  intros X1 X2. intro H. elim (rem_803 X1 X2 H).
  intros X1 X2. intro H. elim (rem_817 X1 X2 H).
  intros X1 X2. intro H. elim (rem_818 X1 X2 H).
   intro H. elim (rem_823  H).
  intros X1 X2;  exact (rem_802 epsilon_m__def_71_p__type_17 X1 X2).
   intro H. elim (rem_824  H).
  intros X1 X2. intro H. elim (rem_826 X1 X2 H).
  intros X1 X2. intro H. elim (rem_807 X1 X2 H).
  intros X1 X2. intro H. elim (rem_804 X1 X2 H).
  intros X1 X2. intro H. elim (rem_816 X1 X2 H).
  intros X1. intro H. elim (rem_810 X1 H).
  intros X1 X2. intro H. elim (rem_813 X1 X2 H).
  intros X1 X2. intro H. elim (rem_812 X1 X2 H).
   intro H. elim (rem_815  H).
   intro H. elim (rem_811  H).
  intros X1 X2. intro H. elim (rem_809 X1 X2 H).
  intros X1 X2. intro H. elim (rem_808 X1 X2 H).
  intros X1. intro H. elim (rem_820 X1 H).
   intro H. elim (rem_825  H).
  intros X1 X2. intro H. elim (rem_822 X1 X2 H).
  intros X1 X2. intro H. elim (rem_805 X1 X2 H).
   intro H. elim (rem_821  H).
Qed.

Remark rem_828 : forall X1 X2 X3:term, auto___def_71 X1 -> auto_agent X2 -> auto_agent X3 -> auto___type_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_71 X1 -> auto___type_17 X1). tauto. exact (rem_827 X1).
Qed.

Remark rem_829 : forall X1 X2 X3:term, auto_agent X2 -> auto___def_71 X1 -> auto_agent X3 -> auto___type_17 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_71 X1 -> auto_agent X2 -> auto_agent X3 -> auto___type_17 X1). tauto. exact (rem_828 X1 X2 X3).
Qed.

Remark rem_830 : forall X1 X2 X3:term, auto___def_74 X1 X2 X3 -> or_3
    (auto___def_75 X2 /\ auto_knows_current X3)
    (auto___def_79 X2 /\ auto_knows_current X3)
    (auto_agent X1 /\ auto___def_71 X2 /\ auto_agent X3)
.
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_831 : forall X1 X2 X3:term, auto___def_74 X2 X1 X3 -> auto___type_17 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_830 X2 X1 X3 H);  intros.
  apply (rem_759 X1 X3);  tauto.
  apply (rem_794 X1 X3);  tauto.
  apply (rem_829 X1 X2 X3);  tauto.
Qed.

Remark rem_832 : (forall X:term, auto___def_42 X -> auto___type_16 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_833 : (forall X:term, auto___def_42 X -> auto___type_16 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_42_p__type_16. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_832 epsilon_m__def_42_p__type_16 X1);  assumption.
  tauto.
Defined.

Remark rem_834 : (forall X:term, auto___def_42 X -> auto___type_16 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_16 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_42_p__type_16. intros X1 X2. intros A1.
  case (rem_833 epsilon_m__def_42_p__type_16 X1 A1). clear  epsilon_m__def_42_p__type_16 A1. intros. apply trans___type_16_r_old_1;  tauto.
 clear  epsilon_m__def_42_p__type_16 A1. tauto.
Defined.

Remark rem_835 : (forall X:term, auto___def_42 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_42 (r_old X1 X2) -> auto___type_16 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_42_p__type_16. intros X1 X2. intro H. intros.
  elim (rem_392 X1 X2 H);  intros.
  apply (rem_834 epsilon_m__def_42_p__type_16 X1 X2);  tauto.
Defined.

Remark rem_836 : forall X1:term, auto___def_42 X1 -> auto___type_16 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_42_p__type_16 1.
  intro X. case X.
   intro H. elim (rem_404  H).
   intro H. elim (rem_397  H).
  intros X1 X2. intro H. elim (rem_409 X1 X2 H).
  intros X1 X2. intro H. elim (rem_394 X1 X2 H).
  intros X1 X2. intro H. elim (rem_407 X1 X2 H).
  intros X1 X2. intro H. elim (rem_408 X1 X2 H).
   intro H. elim (rem_413  H).
  intros X1 X2. intro H. elim (rem_417 X1 X2 H).
   intro H. elim (rem_414  H).
  intros X1 X2. intro H. elim (rem_416 X1 X2 H).
  intros X1 X2. intro H. elim (rem_398 X1 X2 H).
  intros X1 X2. intro H. elim (rem_395 X1 X2 H).
  intros X1 X2. intro H. elim (rem_406 X1 X2 H).
  intros X1. intro H. elim (rem_400 X1 H).
  intros X1 X2. intro H. elim (rem_403 X1 X2 H).
  intros X1 X2. intro H. elim (rem_402 X1 X2 H).
   intro H. elim (rem_405  H).
   intro H. elim (rem_401  H).
  intros X1 X2. intro H. elim (rem_399 X1 X2 H).
  intros X1 X2;  exact (rem_835 epsilon_m__def_42_p__type_16 X1 X2).
  intros X1. intro H. elim (rem_410 X1 H).
   intro H. elim (rem_415  H).
  intros X1 X2. intro H. elim (rem_412 X1 X2 H).
  intros X1 X2. intro H. elim (rem_396 X1 X2 H).
   intro H. elim (rem_411  H).
Qed.

Remark rem_837 : forall X1 X2:term, auto___def_36 X2 -> auto___def_42 X1 -> auto_testable_old X2 -> auto___type_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_42 X1 -> auto___type_16 X1). tauto. exact (rem_836 X1).
Qed.

Remark rem_838 : forall X1 X2:term, auto___def_42 X1 -> auto___def_36 X2 -> auto_testable_old X2 -> auto___type_16 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X2 -> auto___def_42 X1 -> auto_testable_old X2 -> auto___type_16 X1). tauto. exact (rem_837 X1 X2).
Qed.

Remark rem_839 : (forall X:term, auto___type_8 X -> auto___type_16 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_840 : (forall X:term, auto___type_8 X -> auto___type_16 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_8_p__type_16. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_839 epsilon_m__type_8_p__type_16 X1);  assumption.
  tauto.
Defined.

Remark rem_841 : (forall X:term, auto___type_8 X -> auto___type_16 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_16 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_p__type_16. intros X1 X2. intros A1.
  case (rem_840 epsilon_m__type_8_p__type_16 X1 A1). clear  epsilon_m__type_8_p__type_16 A1. intros. apply trans___type_16_r_old_1;  tauto.
 clear  epsilon_m__type_8_p__type_16 A1. tauto.
Defined.

Remark rem_842 : (forall X:term, auto___type_8 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___type_8 (r_old X1 X2) -> auto___type_16 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_p__type_16. intros X1 X2. intro H. intros.
  elim (rem_456 X1 X2 H);  intros.
  apply (rem_841 epsilon_m__type_8_p__type_16 X1 X2);  tauto.
Defined.

Remark rem_843 : forall X1:term, auto___type_8 X1 -> auto___type_16 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_8_p__type_16 1.
  intro X. case X.
   intro H. elim (rem_468  H).
   intro H. elim (rem_461  H).
  intros X1 X2. intro H. elim (rem_473 X1 X2 H).
  intros X1 X2. intro H. elim (rem_458 X1 X2 H).
  intros X1 X2. intro H. elim (rem_471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_472 X1 X2 H).
   intro H. elim (rem_477  H).
  intros X1 X2. intro H. elim (rem_481 X1 X2 H).
   intro H. elim (rem_478  H).
  intros X1 X2. intro H. elim (rem_480 X1 X2 H).
  intros X1 X2. intro H. elim (rem_462 X1 X2 H).
  intros X1 X2. intro H. elim (rem_459 X1 X2 H).
  intros X1 X2. intro H. elim (rem_470 X1 X2 H).
  intros X1. intro H. elim (rem_464 X1 H).
  intros X1 X2. intro H. elim (rem_467 X1 X2 H).
  intros X1 X2. intro H. elim (rem_466 X1 X2 H).
   intro H. elim (rem_469  H).
   intro H. elim (rem_465  H).
  intros X1 X2. intro H. elim (rem_463 X1 X2 H).
  intros X1 X2;  exact (rem_842 epsilon_m__type_8_p__type_16 X1 X2).
  intros X1. intro H. elim (rem_474 X1 H).
   intro H. elim (rem_479  H).
  intros X1 X2. intro H. elim (rem_476 X1 X2 H).
  intros X1 X2. intro H. elim (rem_460 X1 X2 H).
   intro H. elim (rem_475  H).
Qed.

Remark rem_844 : forall X1 X2:term, auto___type_7 X2 -> auto___type_8 X1 -> auto_testable_old X2 -> auto___type_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_8 X1 -> auto___type_16 X1). tauto. exact (rem_843 X1).
Qed.

Remark rem_845 : forall X1 X2:term, auto___type_8 X1 -> auto___type_7 X2 -> auto_testable_old X2 -> auto___type_16 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___type_7 X2 -> auto___type_8 X1 -> auto_testable_old X2 -> auto___type_16 X1). tauto. exact (rem_844 X1 X2).
Qed.

Remark rem_846 : (forall X:term, auto___type_4 X -> auto___type_16 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_847 : (forall X:term, auto___type_4 X -> auto___type_16 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_4_p__type_16. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_846 epsilon_m__type_4_p__type_16 X1);  assumption.
  tauto.
Defined.

Remark rem_848 : (forall X:term, auto___type_4 X -> auto___type_16 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_16 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_p__type_16. intros X1 X2. intros A1.
  case (rem_847 epsilon_m__type_4_p__type_16 X1 A1). clear  epsilon_m__type_4_p__type_16 A1. intros. apply trans___type_16_r_old_1;  tauto.
 clear  epsilon_m__type_4_p__type_16 A1. tauto.
Defined.

Remark rem_849 : (forall X:term, auto___type_4 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___type_4 (r_old X1 X2) -> auto___type_16 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_p__type_16. intros X1 X2. intro H. intros.
  elim (rem_519 X1 X2 H);  intros.
  apply (rem_848 epsilon_m__type_4_p__type_16 X1 X2);  tauto.
Defined.

Remark rem_850 : forall X1:term, auto___type_4 X1 -> auto___type_16 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_4_p__type_16 1.
  intro X. case X.
   intro H. elim (rem_531  H).
   intro H. elim (rem_524  H).
  intros X1 X2. intro H. elim (rem_536 X1 X2 H).
  intros X1 X2. intro H. elim (rem_521 X1 X2 H).
  intros X1 X2. intro H. elim (rem_534 X1 X2 H).
  intros X1 X2. intro H. elim (rem_535 X1 X2 H).
   intro H. elim (rem_540  H).
  intros X1 X2. intro H. elim (rem_544 X1 X2 H).
   intro H. elim (rem_541  H).
  intros X1 X2. intro H. elim (rem_543 X1 X2 H).
  intros X1 X2. intro H. elim (rem_525 X1 X2 H).
  intros X1 X2. intro H. elim (rem_522 X1 X2 H).
  intros X1 X2. intro H. elim (rem_533 X1 X2 H).
  intros X1. intro H. elim (rem_527 X1 H).
  intros X1 X2. intro H. elim (rem_530 X1 X2 H).
  intros X1 X2. intro H. elim (rem_529 X1 X2 H).
   intro H. elim (rem_532  H).
   intro H. elim (rem_528  H).
  intros X1 X2. intro H. elim (rem_526 X1 X2 H).
  intros X1 X2;  exact (rem_849 epsilon_m__type_4_p__type_16 X1 X2).
  intros X1. intro H. elim (rem_537 X1 H).
   intro H. elim (rem_542  H).
  intros X1 X2. intro H. elim (rem_539 X1 X2 H).
  intros X1 X2. intro H. elim (rem_523 X1 X2 H).
   intro H. elim (rem_538  H).
Qed.

Remark rem_851 : forall X1 X2:term, auto___def_24 X2 -> auto___type_4 X1 -> auto_testable_old X2 -> auto___type_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_16 X1). tauto. exact (rem_850 X1).
Qed.

Remark rem_852 : forall X1 X2:term, auto___type_4 X1 -> auto___def_24 X2 -> auto_testable_old X2 -> auto___type_16 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X2 -> auto___type_4 X1 -> auto_testable_old X2 -> auto___type_16 X1). tauto. exact (rem_851 X1 X2).
Qed.

Remark rem_853 : forall X1 X2:term, auto___def_5 X1 X2 -> or_3
    (auto___def_42 X1 /\ auto___def_36 X2)
    (auto___type_8 X1 /\ auto___type_7 X2)
    (auto___type_4 X1 /\ auto___def_24 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_854 : forall X1 X2:term, auto___def_5 X1 X2 -> auto_testable_old X2 -> auto___type_16 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_853 X1 X2 H);  intros.
  apply (rem_838 X1 X2);  tauto.
  apply (rem_845 X1 X2);  tauto.
  apply (rem_852 X1 X2);  tauto.
Qed.

Remark rem_855 : True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   tauto.
Qed.

Remark rem_856 : auto___def_59 pub. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_59_pub_1;  tauto.
 tauto.
Qed.

Remark rem_857 : forall X1:term, auto___def_31 X1 -> auto___def_31 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_858 : forall X1 X2:term, auto___def_31 X1 -> auto___def_32 X2 -> auto___def_31 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_31 X1 -> auto___def_31 X1). tauto. exact (rem_857 X1).
Qed.

Remark rem_859 : forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_860 : forall X1 X2:term, auto___def_31 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_859 X2).
Qed.

Remark rem_861 : forall X1 X2:term, auto___def_31 X1 -> auto___def_32 X2 -> (auto___def_31 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_31 X1). 2:apply (rem_858 X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_860 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_862 : forall X1 X2:term, auto___def_31 X1 -> auto___def_32 X2 -> auto___def_30 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_861 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_30_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_863 : forall X1 X2:term, auto___def_32 X2 -> auto___def_31 X1 -> auto___def_30 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_31 X1 -> auto___def_32 X2 -> auto___def_30 (cons X1 X2)). tauto. exact (rem_862 X1 X2).
Qed.

Remark rem_864 : forall X1 X3:term, auto_knows_old X3 -> auto_knows_old X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_865 : forall X1 X3:term, auto_knows_old X3 -> auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_864 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_866 : forall X1 X2 X3:term, auto_knows_old X3 -> auto_knows_old X1 -> auto___def_20 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_865 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_20_passwd_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_867 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_knows_old X3 -> auto___def_20 (passwd_old X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X1 -> auto___def_20 (passwd_old X1 X2)). tauto. exact (rem_866 X1 X2 X3).
Qed.

Remark rem_868 : forall X1 X2:term, auto___def_18 X1 X2 -> or_1
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_869 : forall X1 X2 X3:term, auto___def_18 X1 X3 -> auto___def_20 (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_868 X1 X3 H);  intros.
  apply (rem_867 X1 X2 X3);  tauto.
Qed.

Remark rem_870 : forall X1 X2:term, auto___def_6 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_871 : forall X1 X2:term, auto___def_6 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_872 : forall X1 X2:term, auto___def_6 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_873 : auto___def_6 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_874 : forall X1 X2:term, auto___def_6 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_875 : forall X1 X2:term, auto___def_6 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_876 : forall X1 X2:term, auto___def_6 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_877 : forall X1:term, auto___def_6 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_878 : auto___def_6 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_879 : forall X1 X2:term, auto___def_6 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_880 : forall X1 X2:term, auto___def_6 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_881 : auto___def_6 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_882 : auto___def_6 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_883 : forall X1 X2:term, auto___def_6 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_884 : forall X1 X2:term, auto___def_6 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_885 : forall X1 X2:term, auto___def_6 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_886 : forall X1 X2:term, auto___def_6 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_887 : forall X1:term, auto___def_6 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_888 : auto___def_6 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_889 : forall X1 X2:term, auto___def_6 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_890 : auto___def_6 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_891 : auto___def_6 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_892 : auto___def_6 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_893 : forall X1 X2:term, auto___def_6 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_894 : forall X1 X2:term, auto___def_6 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_895 : forall X1:term, auto___def_6 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_6 1.
  intro X. case X.
   intro H. elim (rem_881  H).
   intro H. elim (rem_873  H).
  intros X1 X2. intro H. elim (rem_886 X1 X2 H).
  intros X1 X2. intro H. elim (rem_870 X1 X2 H).
  intros X1 X2. intro H. elim (rem_884 X1 X2 H).
  intros X1 X2. intro H. elim (rem_885 X1 X2 H).
   intro H. elim (rem_890  H).
  intros X1 X2. intro H. elim (rem_894 X1 X2 H).
   intro H. elim (rem_891  H).
  intros X1 X2. intro H. elim (rem_893 X1 X2 H).
  intros X1 X2. intro H. elim (rem_874 X1 X2 H).
  intros X1 X2. intro H. elim (rem_871 X1 X2 H).
  intros X1 X2. intro H. elim (rem_883 X1 X2 H).
  intros X1. intro H. elim (rem_877 X1 H).
  intros X1 X2. intro H. elim (rem_880 X1 X2 H).
  intros X1 X2. intro H. elim (rem_879 X1 X2 H).
   intro H. elim (rem_882  H).
   intro H. elim (rem_878  H).
  intros X1 X2. intro H. elim (rem_876 X1 X2 H).
  intros X1 X2. intro H. elim (rem_875 X1 X2 H).
  intros X1. intro H. elim (rem_887 X1 H).
   intro H. elim (rem_892  H).
  intros X1 X2. intro H. elim (rem_889 X1 X2 H).
  intros X1 X2. intro H. elim (rem_872 X1 X2 H).
   intro H. elim (rem_888  H).
Qed.

Remark rem_896 : forall X1:term, auto___def_6 X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_6 X1 -> False). tauto.
  exact (rem_895 X1).
Qed.

Remark rem_897 : forall X2:term, auto___def_6 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto___def_6 X1 -> False). tauto. exact (rem_896 X1).
Qed.

Remark rem_898 : forall X1 X2:term, auto___def_105 X1 -> auto___def_6 X2 -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_6 X2 -> False). tauto.
  exact (rem_897 X2).
Qed.

Remark rem_899 : forall X1 X2:term, auto___def_105 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (False). tauto.
  exact (rem_898 X1 X2 A1 A2).
Qed.

Remark rem_900 : forall X1 X2:term, auto___def_6 X2 -> auto___def_93 X1 -> auto___def_56 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_895 X2)). tauto.
Qed.

Remark rem_901 : forall X1 X2:term, auto___def_93 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_6 X2 -> auto___def_93 X1 -> auto___def_56 (key X1 X2)). tauto. exact (rem_900 X1 X2).
Qed.

Remark rem_902 : forall X1 X2:term, auto___def_41 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_895 X2)). tauto.
Qed.

Remark rem_903 : forall X1 X2:term, auto___def_6 X2 -> auto___def_86 X1 -> auto___def_56 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_895 X2)). tauto.
Qed.

Remark rem_904 : forall X1 X2:term, auto___def_86 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_6 X2 -> auto___def_86 X1 -> auto___def_56 (key X1 X2)). tauto. exact (rem_903 X1 X2).
Qed.

Remark rem_905 : forall X1 X2:term, auto___def_101 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_895 X2)). tauto.
Qed.

Remark rem_906 : forall X1 X2:term, auto___def_119 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_895 X2)). tauto.
Qed.

Remark rem_907 : forall X1 X2:term, auto___def_6 X2 -> auto___def_60 X1 -> auto___def_56 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_895 X2)). tauto.
Qed.

Remark rem_908 : forall X1 X2:term, auto___def_60 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_6 X2 -> auto___def_60 X1 -> auto___def_56 (key X1 X2)). tauto. exact (rem_907 X1 X2).
Qed.

Remark rem_909 : forall X1 X2:term, auto___def_45 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_895 X2)). tauto.
Qed.

Remark rem_910 : forall X1 X2:term, auto___def_26 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_895 X2)). tauto.
Qed.

Remark rem_911 : forall X1 X2:term, auto___def_33 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_895 X2)). tauto.
Qed.

Inductive or_10(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10:Prop) : Prop :=
    or_10_intro_1 : H1 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_2 : H2 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_3 : H3 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_4 : H4 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_5 : H5 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_6 : H6 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_7 : H7 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_8 : H8 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_9 : H9 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_10 : H10 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
.
Hint Constructors auto___def_105 : h1mc_states_hint.
Hint Constructors auto___def_93 : h1mc_states_hint.
Hint Constructors auto___def_41 : h1mc_states_hint.
Hint Constructors auto___def_86 : h1mc_states_hint.
Hint Constructors auto___def_101 : h1mc_states_hint.
Hint Constructors auto___def_119 : h1mc_states_hint.
Hint Constructors auto___def_60 : h1mc_states_hint.
Hint Constructors auto___def_45 : h1mc_states_hint.
Hint Constructors auto___def_26 : h1mc_states_hint.
Hint Constructors auto___def_33 : h1mc_states_hint.

Remark epsilon_m__def_57_p__def_105_p__def_93_p__def_41_p__def_86_p__def_101_p__def_119_p__def_60_p__def_45_p__def_26_p__def_33_o : forall X:term, auto___def_57 X -> or_10 (auto___def_105 X) (auto___def_93 X) (auto___def_41 X) (auto___def_86 X) (auto___def_101 X) (auto___def_119 X) (auto___def_60 X) (auto___def_45 X) (auto___def_26 X) (auto___def_33 X). (* Justify inversion for epsilon clause. *)
Proof.
 cut (forall X:term, auto___def_57 X -> auto___def_105 X \/ auto___def_93 X \/ auto___def_41 X \/ auto___def_86 X \/ auto___def_101 X \/ auto___def_119 X \/ auto___def_60 X \/ auto___def_45 X \/ auto___def_26 X \/ auto___def_33 X).
  intros H0 X H. decompose sum (H0 X H).
  apply or_10_intro_1; assumption.
  apply or_10_intro_2; assumption.
  apply or_10_intro_3; assumption.
  apply or_10_intro_4; assumption.
  apply or_10_intro_5; assumption.
  apply or_10_intro_6; assumption.
  apply or_10_intro_7; assumption.
  apply or_10_intro_8; assumption.
  apply or_10_intro_9; assumption.
  apply or_10_intro_10; assumption.
  destruct X; intro H; inversion H; intuition auto with h1mc_states_hint.
Qed.

Remark rem_912 : forall X1 X2:term, auto___def_57 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (epsilon_m__def_57_p__def_105_p__def_93_p__def_41_p__def_86_p__def_101_p__def_119_p__def_60_p__def_45_p__def_26_p__def_33_o X1 H); intros.
  apply (rem_899 X1 X2);  tauto.
  apply (rem_901 X1 X2);  tauto.
  apply (rem_902 X1 X2);  tauto.
  apply (rem_904 X1 X2);  tauto.
  apply (rem_905 X1 X2);  tauto.
  apply (rem_906 X1 X2);  tauto.
  apply (rem_908 X1 X2);  tauto.
  apply (rem_909 X1 X2);  tauto.
  apply (rem_910 X1 X2);  tauto.
  apply (rem_911 X1 X2);  tauto.
Qed.

Remark rem_913 : forall X1 X2:term, auto___def_6 X2 -> auto___def_57 X1 -> auto___def_56 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_57 X1 -> auto___def_6 X2 -> auto___def_56 (key X1 X2)). tauto. exact (rem_912 X1 X2).
Qed.

Remark rem_914 : forall X1 X3:term, auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_915 : forall X1 X3:term, auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_914 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_916 : forall X1 X2 X3:term, auto_knows_current X3 -> auto_knows_current X1 -> auto___def_80 (passwd_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_915 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_80_passwd_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_917 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_knows_current X3 -> auto___def_80 (passwd_current X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X1 -> auto___def_80 (passwd_current X1 X2)). tauto. exact (rem_916 X1 X2 X3).
Qed.

Remark rem_918 : forall X1 X2:term, auto___def_78 X1 X2 -> or_1
    (auto_knows_current X1 /\ auto_knows_current X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_919 : forall X1 X2 X3:term, auto___def_78 X1 X3 -> auto___def_80 (passwd_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_918 X1 X3 H);  intros.
  apply (rem_917 X1 X2 X3);  tauto.
Qed.

Remark rem_920 : auto___def_101 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_101_sym_1;  tauto.
 tauto.
Qed.

Remark rem_921 : auto___def_58 prv. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_58_prv_1;  tauto.
 tauto.
Qed.

Remark rem_922 : auto___def_33 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_33_sym_1;  tauto.
 tauto.
Qed.

Remark rem_923 : forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_924 : forall X1 X2 X3:term, auto___def_77 X3 -> auto_agent X2 -> auto_agent X1 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_923 X1).
Qed.

Remark rem_925 : forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_926 : forall X1 X2 X3:term, auto___def_77 X3 -> auto_agent X2 -> auto_agent X1 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_925 X2).
Qed.

Remark rem_927 : forall X1 X2 X3:term, auto___def_77 X3 -> auto_agent X2 -> auto_agent X1 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_agent X1). 2:apply (rem_924 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_926 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_928 : forall X1 X2 X3:term, auto___def_77 X3 -> auto_agent X2 -> auto_agent X1 -> auto___def_84 (noncea_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_927 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_84_noncea_current_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_929 : forall X1 X2 X3:term, auto___def_83 X3 X2 X1 -> auto___def_84 (noncea_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_308 X3 X2 X1 H);  intros.
  apply (rem_928 X1 X2 X3);  tauto.
Qed.

Remark rem_930 : forall X1 X2 X3 X4:term, auto_knows_old (cons X2 (cons X3 nil)) -> auto_knows_old (crypt X4 (key sym (r_old X2 X1))) -> auto_knows_old (crypt (nonceb_old X2 X1) (key sym (r_old X2 X1))) -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_931 : forall X1 X2 X3 X4:term, auto_knows_old (cons X2 (cons X3 nil)) -> auto_knows_old (crypt X4 (key sym (r_old X2 X1))) -> auto_knows_old (crypt (nonceb_old X2 X1) (key sym (r_old X2 X1))) -> auto___def_49 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3.
  case (rem_930 X1 X2 X3 X4 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_49_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_932 : forall X1 X2 X3 X4:term, auto_knows_old (crypt (nonceb_old X2 X1) (key sym (r_old X2 X1))) -> auto_knows_old (crypt X3 (key sym (r_old X2 X1))) -> auto_knows_old (cons X2 (cons X4 nil)) -> auto___def_49 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto_knows_old (cons X2 (cons X3 nil)) -> auto_knows_old (crypt X4 (key sym (r_old X2 X1))) -> auto_knows_old (crypt (nonceb_old X2 X1) (key sym (r_old X2 X1))) -> auto___def_49 X1 X2). tauto. exact (rem_931 X1 X2 X3 X4).
Qed.

Remark rem_933 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_934 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_933 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_935 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_936 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_935 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_937 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_934 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_936 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_938 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_937 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_crypt_1;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_939 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_940 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_939 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_941 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_942 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_941 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_943 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_940 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_942 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_944 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_943 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_crypt_2;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_945 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_946 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_945 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_947 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_948 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_947 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_949 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_946 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_948 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_950 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_949 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_crypt_3;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_951 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_952 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_951 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_953 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_954 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_953 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_955 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_952 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_954 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_956 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_955 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_crypt_4;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_957 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_958 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_957 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_959 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_960 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_959 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_961 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_958 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_960 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_962 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_961 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_crypt_5;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_963 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_964 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_963 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_965 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_966 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_965 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_967 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_964 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_966 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_968 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_967 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_crypt_6;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_969 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_970 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_969 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_971 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_972 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_971 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_973 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_970 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_972 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_974 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_973 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_crypt_7;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_975 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_976 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_975 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_977 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_978 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_977 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_979 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_976 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_978 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_980 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_979 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_crypt_8;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_981 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_982 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_981 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_983 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_984 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_983 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_985 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_982 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_984 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_986 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_985 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_crypt_9;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Inductive or_9(H1 H2 H3 H4 H5 H6 H7 H8 H9:Prop) : Prop :=
    or_9_intro_1 : H1 -> (or_9 H1 H2 H3 H4 H5 H6 H7 H8 H9)
  | or_9_intro_2 : H2 -> (or_9 H1 H2 H3 H4 H5 H6 H7 H8 H9)
  | or_9_intro_3 : H3 -> (or_9 H1 H2 H3 H4 H5 H6 H7 H8 H9)
  | or_9_intro_4 : H4 -> (or_9 H1 H2 H3 H4 H5 H6 H7 H8 H9)
  | or_9_intro_5 : H5 -> (or_9 H1 H2 H3 H4 H5 H6 H7 H8 H9)
  | or_9_intro_6 : H6 -> (or_9 H1 H2 H3 H4 H5 H6 H7 H8 H9)
  | or_9_intro_7 : H7 -> (or_9 H1 H2 H3 H4 H5 H6 H7 H8 H9)
  | or_9_intro_8 : H8 -> (or_9 H1 H2 H3 H4 H5 H6 H7 H8 H9)
  | or_9_intro_9 : H9 -> (or_9 H1 H2 H3 H4 H5 H6 H7 H8 H9)
.

Remark rem_987 : forall X1 X2:term, auto_knows_current (crypt X1 X2) -> or_9
    (auto___def_17 X1 /\ auto___type_2 X2)
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___def_21 X1 /\ auto___def_22 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___type_22 X1 /\ auto___def_104 X2)
    (auto___def_88 X1 /\ auto___def_89 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto___def_84 X1 /\ auto___def_85 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_9_intro_1; tauto.
  intros. apply or_9_intro_2; tauto.
  intros. apply or_9_intro_3; tauto.
  intros. apply or_9_intro_4; tauto.
  intros. apply or_9_intro_5; tauto.
  intros. apply or_9_intro_6; tauto.
  intros. apply or_9_intro_7; tauto.
  intros. apply or_9_intro_8; tauto.
  intros. apply or_9_intro_9; tauto.
Qed.

Remark rem_988 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___type_24 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_987 X1 X2 H);  intros.
  apply (rem_938 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_944 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_950 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_956 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_962 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_968 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_974 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_980 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_986 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_989 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24.  tauto.
Defined.

Remark rem_990 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> auto___type_24 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24.  case (rem_989 epsilon_mknows_current_p__type_24). clear  epsilon_mknows_current_p__type_24. intros. apply trans___type_24_bob_1;  tauto.
 clear  epsilon_mknows_current_p__type_24. tauto.
Defined.

Remark rem_991 : auto_knows_current bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_992 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> auto_knows_current bob -> auto___type_24 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intro H. intros.
  elim (rem_991 H);  intros.
  apply (rem_990 epsilon_mknows_current_p__type_24);  tauto.
Defined.

Remark rem_993 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_24 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.  case (rem_989 epsilon_mknows_current_p__type_24). clear  epsilon_mknows_current_p__type_24. intros. apply trans___type_24_noncea_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_24. tauto.
Defined.

Remark rem_994 : forall X1 X2:term, auto_knows_current (noncea_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_995 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current (noncea_old X1 X2) -> auto___type_24 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_994 X1 X2 H);  intros.
  apply (rem_993 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_996 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_951 epsilon_mknows_current_p__type_24 X1);  assumption.
  tauto.
Defined.

Remark rem_997 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_24 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1. intros A1.
  case (rem_996 epsilon_mknows_current_p__type_24 X1 A1). clear  epsilon_mknows_current_p__type_24 A1. intros. apply trans___type_24_p_1;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1. tauto.
Defined.

Remark rem_998 : forall X1:term, auto_knows_current (p X1) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_999 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto_knows_current (p X1) -> auto___type_24 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1. intro H. intros.
  elim (rem_998 X1 H);  intros.
  apply (rem_997 epsilon_mknows_current_p__type_24 X1);  tauto.
Defined.

Remark rem_1000 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_24 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.  case (rem_989 epsilon_mknows_current_p__type_24). clear  epsilon_mknows_current_p__type_24. intros. apply trans___type_24_passwd_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_24. tauto.
Defined.

Remark rem_1001 : forall X1 X2:term, auto_knows_current (passwd_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1002 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current (passwd_old X1 X2) -> auto___type_24 (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_1001 X1 X2 H);  intros.
  apply (rem_1000 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_1003 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> auto___type_24 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24.  case (rem_989 epsilon_mknows_current_p__type_24). clear  epsilon_mknows_current_p__type_24. intros. apply trans___type_24_alice_1;  tauto.
 clear  epsilon_mknows_current_p__type_24. tauto.
Defined.

Remark rem_1004 : auto_knows_current alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1005 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> auto_knows_current alice -> auto___type_24 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intro H. intros.
  elim (rem_1004 H);  intros.
  apply (rem_1003 epsilon_mknows_current_p__type_24);  tauto.
Defined.

Remark rem_1006 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_24 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.  case (rem_989 epsilon_mknows_current_p__type_24). clear  epsilon_mknows_current_p__type_24. intros. apply trans___type_24_nonceb_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_24. tauto.
Defined.

Remark rem_1007 : forall X1 X2:term, auto_knows_current (nonceb_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1008 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current (nonceb_old X1 X2) -> auto___type_24 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_1007 X1 X2 H);  intros.
  apply (rem_1006 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_1009 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_955 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_dec_1;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_1010 : forall X1 X2:term, auto_knows_current (dec X1 X2) -> or_1
    (auto_knows_current X1 /\ auto_knows_current X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1011 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current (dec X1 X2) -> auto___type_24 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_1010 X1 X2 H);  intros.
  apply (rem_1009 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_1012 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1013 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_1012 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_1014 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1015 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_1014 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_1016 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_1013 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_1015 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1017 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_24 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_1016 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_enc_1;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_1018 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_955 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_enc_2;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_1019 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1020 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_1019 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_1021 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1022 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_1021 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_1023 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_1020 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_1022 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1024 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_24 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_1023 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_enc_3;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_1025 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1026 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_1025 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_1027 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1028 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_1027 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_1029 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_1026 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_1028 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1030 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_24 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_1029 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_enc_4;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_1031 : forall X1 X2:term, auto_knows_current (enc X1 X2) -> or_4
    (auto___def_71 X1 /\ auto___def_72 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___def_79 X1 /\ auto___def_80 X2)
    (auto___def_75 X1 /\ auto___def_76 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_1032 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current (enc X1 X2) -> auto___type_24 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_1031 X1 X2 H);  intros.
  apply (rem_1017 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_1018 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_1024 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_1030 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_1033 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_955 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_cons_1;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_1034 : forall X1 X2:term, auto_knows_current (cons X1 X2) -> or_1
    (auto_knows_current X1 /\ auto_knows_current X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1035 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___type_24 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_1034 X1 X2 H);  intros.
  apply (rem_1033 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_1036 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_24 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1. intros A1.
  case (rem_996 epsilon_mknows_current_p__type_24 X1 A1). clear  epsilon_mknows_current_p__type_24 A1. intros. apply trans___type_24_s_1;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1. tauto.
Defined.

Remark rem_1037 : forall X1:term, auto_knows_current (s X1) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1038 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto_knows_current (s X1) -> auto___type_24 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1. intro H. intros.
  elim (rem_1037 X1 H);  intros.
  apply (rem_1036 epsilon_mknows_current_p__type_24 X1);  tauto.
Defined.

Remark rem_1039 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> auto___type_24 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24.  case (rem_989 epsilon_mknows_current_p__type_24). clear  epsilon_mknows_current_p__type_24. intros. apply trans___type_24_i_1;  tauto.
 clear  epsilon_mknows_current_p__type_24. tauto.
Defined.

Remark rem_1040 : auto_knows_current i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1041 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> auto_knows_current i -> auto___type_24 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intro H. intros.
  elim (rem_1040 H);  intros.
  apply (rem_1039 epsilon_mknows_current_p__type_24);  tauto.
Defined.

Remark rem_1042 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> auto___type_24 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24.  case (rem_989 epsilon_mknows_current_p__type_24). clear  epsilon_mknows_current_p__type_24. intros. apply trans___type_24_nil_1;  tauto.
 clear  epsilon_mknows_current_p__type_24. tauto.
Defined.

Remark rem_1043 : auto_knows_current nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1044 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> auto_knows_current nil -> auto___type_24 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intro H. intros.
  elim (rem_1043 H);  intros.
  apply (rem_1042 epsilon_mknows_current_p__type_24);  tauto.
Defined.

Remark rem_1045 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> auto___type_24 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24.  case (rem_989 epsilon_mknows_current_p__type_24). clear  epsilon_mknows_current_p__type_24. intros. apply trans___type_24_server_1;  tauto.
 clear  epsilon_mknows_current_p__type_24. tauto.
Defined.

Remark rem_1046 : auto_knows_current server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1047 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> auto_knows_current server -> auto___type_24 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intro H. intros.
  elim (rem_1046 H);  intros.
  apply (rem_1045 epsilon_mknows_current_p__type_24);  tauto.
Defined.

Remark rem_1048 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_61 X1 -> auto___def_61 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1049 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_61 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_61 X1). tauto. exact (rem_1048 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_1050 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_62 X2 -> auto___def_62 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1051 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_62 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_62 X2). tauto. exact (rem_1050 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_1052 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_61 X1 /\ auto___def_62 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_61 X1). 2:apply (rem_1049 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_62 X2). 2:apply (rem_1051 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1053 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___type_24 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_1052 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_key_1;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_1054 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1055 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1054 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_1056 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1057 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_1056 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_1058 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1055 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_1057 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1059 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_24 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_1058 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_key_2;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_1060 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1061 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_1060 epsilon_mknows_current_p__type_24 X1).
Defined.

Remark rem_1062 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1063 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_1062 epsilon_mknows_current_p__type_24 X2).
Defined.

Remark rem_1064 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_1061 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_1063 epsilon_mknows_current_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1065 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_24 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_1064 epsilon_mknows_current_p__type_24 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_24 A1 A2. intros. apply trans___type_24_key_3;  tauto.
 clear  epsilon_mknows_current_p__type_24 A1 A2. tauto.
Defined.

Remark rem_1066 : forall X1 X2:term, auto_knows_current (key X1 X2) -> or_3
    (auto___def_61 X1 /\ auto___def_62 X2)
    (auto___def_51 X1 /\ auto_agent X2)
    (auto___def_12 X1 /\ auto___def_13 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_1067 : (forall X:term, auto_knows_current X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___type_24 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_1066 X1 X2 H);  intros.
  apply (rem_1053 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_1059 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
  apply (rem_1065 epsilon_mknows_current_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_1068 : forall X1 X2:term, auto_knows_current (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1069 : forall X1 X2:term, auto_knows_current (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1070 : forall X1 X2:term, auto_knows_current (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1071 : forall X1 X2:term, auto_knows_current (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1072 : auto_knows_current pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1073 : forall X1 X2:term, auto_knows_current (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1074 : auto_knows_current prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1075 : auto_knows_current sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1076 : forall X1 X2:term, auto_knows_current (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1077 : forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1078 : forall X1:term, auto_knows_current X1 -> auto___type_24 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_current_p__type_24 1.
  intro X. case X.
  exact (rem_1005 epsilon_mknows_current_p__type_24 ).
  exact (rem_992 epsilon_mknows_current_p__type_24 ).
  intros X1 X2;  exact (rem_1035 epsilon_mknows_current_p__type_24 X1 X2).
  intros X1 X2;  exact (rem_988 epsilon_mknows_current_p__type_24 X1 X2).
  intros X1 X2;  exact (rem_1011 epsilon_mknows_current_p__type_24 X1 X2).
  intros X1 X2;  exact (rem_1032 epsilon_mknows_current_p__type_24 X1 X2).
  exact (rem_1041 epsilon_mknows_current_p__type_24 ).
  intros X1 X2;  exact (rem_1067 epsilon_mknows_current_p__type_24 X1 X2).
  exact (rem_1044 epsilon_mknows_current_p__type_24 ).
  intros X1 X2. intro H. elim (rem_1077 X1 X2 H).
  intros X1 X2;  exact (rem_995 epsilon_mknows_current_p__type_24 X1 X2).
  intros X1 X2. intro H. elim (rem_1068 X1 X2 H).
  intros X1 X2;  exact (rem_1008 epsilon_mknows_current_p__type_24 X1 X2).
  intros X1;  exact (rem_999 epsilon_mknows_current_p__type_24 X1).
  intros X1 X2. intro H. elim (rem_1073 X1 X2 H).
  intros X1 X2;  exact (rem_1002 epsilon_mknows_current_p__type_24 X1 X2).
   intro H. elim (rem_1074  H).
   intro H. elim (rem_1072  H).
  intros X1 X2. intro H. elim (rem_1071 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1070 X1 X2 H).
  intros X1;  exact (rem_1038 epsilon_mknows_current_p__type_24 X1).
  exact (rem_1047 epsilon_mknows_current_p__type_24 ).
  intros X1 X2. intro H. elim (rem_1076 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1069 X1 X2 H).
   intro H. elim (rem_1075  H).
Qed.

Remark rem_1079 : forall X1 X2:term, auto___def_107 X2 X1 -> auto___type_24 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_355 X2 X1 H);  intros.
  apply (rem_1078 X1);  tauto.
Qed.

Remark rem_1080 : auto___def_119 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_119_sym_1;  tauto.
 tauto.
Qed.

Remark rem_1081 : (forall X:term, auto_agent X -> auto___type_14 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p__type_14.  tauto.
Defined.

Remark rem_1082 : (forall X:term, auto_agent X -> auto___type_14 X)
    -> auto___type_14 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_14.  case (rem_1081 epsilon_magent_p__type_14). clear  epsilon_magent_p__type_14. intros. apply trans___type_14_bob_1;  tauto.
 clear  epsilon_magent_p__type_14. tauto.
Defined.

Remark rem_1083 : auto_agent bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1084 : (forall X:term, auto_agent X -> auto___type_14 X)
    -> auto_agent bob -> auto___type_14 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_14. intro H. intros.
  elim (rem_1083 H);  intros.
  apply (rem_1082 epsilon_magent_p__type_14);  tauto.
Defined.

Remark rem_1085 : (forall X:term, auto_agent X -> auto___type_14 X)
    -> auto___type_14 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_14.  case (rem_1081 epsilon_magent_p__type_14). clear  epsilon_magent_p__type_14. intros. apply trans___type_14_alice_1;  tauto.
 clear  epsilon_magent_p__type_14. tauto.
Defined.

Remark rem_1086 : auto_agent alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1087 : (forall X:term, auto_agent X -> auto___type_14 X)
    -> auto_agent alice -> auto___type_14 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_14. intro H. intros.
  elim (rem_1086 H);  intros.
  apply (rem_1085 epsilon_magent_p__type_14);  tauto.
Defined.

Remark rem_1088 : (forall X:term, auto_agent X -> auto___type_14 X)
    -> auto___type_14 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_14.  case (rem_1081 epsilon_magent_p__type_14). clear  epsilon_magent_p__type_14. intros. apply trans___type_14_i_1;  tauto.
 clear  epsilon_magent_p__type_14. tauto.
Defined.

Remark rem_1089 : auto_agent i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1090 : (forall X:term, auto_agent X -> auto___type_14 X)
    -> auto_agent i -> auto___type_14 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_14. intro H. intros.
  elim (rem_1089 H);  intros.
  apply (rem_1088 epsilon_magent_p__type_14);  tauto.
Defined.

Remark rem_1091 : (forall X:term, auto_agent X -> auto___type_14 X)
    -> auto___type_14 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_14.  case (rem_1081 epsilon_magent_p__type_14). clear  epsilon_magent_p__type_14. intros. apply trans___type_14_server_1;  tauto.
 clear  epsilon_magent_p__type_14. tauto.
Defined.

Remark rem_1092 : auto_agent server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1093 : (forall X:term, auto_agent X -> auto___type_14 X)
    -> auto_agent server -> auto___type_14 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_14. intro H. intros.
  elim (rem_1092 H);  intros.
  apply (rem_1091 epsilon_magent_p__type_14);  tauto.
Defined.

Remark rem_1094 : forall X1 X2:term, auto_agent (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1095 : forall X1 X2:term, auto_agent (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1096 : forall X1 X2:term, auto_agent (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1097 : forall X1 X2:term, auto_agent (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1098 : forall X1 X2:term, auto_agent (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1099 : forall X1 X2:term, auto_agent (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1100 : forall X1:term, auto_agent (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1101 : auto_agent pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1102 : forall X1 X2:term, auto_agent (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1103 : forall X1 X2:term, auto_agent (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1104 : auto_agent prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1105 : forall X1 X2:term, auto_agent (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1106 : forall X1 X2:term, auto_agent (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1107 : forall X1 X2:term, auto_agent (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1108 : forall X1 X2:term, auto_agent (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1109 : forall X1:term, auto_agent (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1110 : auto_agent sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1111 : forall X1 X2:term, auto_agent (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1112 : auto_agent nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1113 : forall X1 X2:term, auto_agent (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1114 : forall X1 X2:term, auto_agent (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1115 : forall X1:term, auto_agent X1 -> auto___type_14 X1. (* Induct. *)
Proof.
  fix epsilon_magent_p__type_14 1.
  intro X. case X.
  exact (rem_1087 epsilon_magent_p__type_14 ).
  exact (rem_1084 epsilon_magent_p__type_14 ).
  intros X1 X2. intro H. elim (rem_1108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1094 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1106 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1107 X1 X2 H).
  exact (rem_1090 epsilon_magent_p__type_14 ).
  intros X1 X2. intro H. elim (rem_1114 X1 X2 H).
   intro H. elim (rem_1112  H).
  intros X1 X2. intro H. elim (rem_1113 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1097 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1105 X1 X2 H).
  intros X1. intro H. elim (rem_1100 X1 H).
  intros X1 X2. intro H. elim (rem_1103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1102 X1 X2 H).
   intro H. elim (rem_1104  H).
   intro H. elim (rem_1101  H).
  intros X1 X2. intro H. elim (rem_1099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1098 X1 X2 H).
  intros X1. intro H. elim (rem_1109 X1 H).
  exact (rem_1093 epsilon_magent_p__type_14 ).
  intros X1 X2. intro H. elim (rem_1111 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1096 X1 X2 H).
   intro H. elim (rem_1110  H).
Qed.

Remark rem_1116 : forall X1 X2:term, auto_agent X1 -> auto_knows_old X2 -> auto_testable_old X2 -> auto___type_14 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_agent X1 -> auto___type_14 X1). tauto. exact (rem_1115 X1).
Qed.

Remark rem_1117 : forall X1 X2:term, auto___def_1 X1 X2 -> or_1
    (auto_agent X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1118 : forall X1 X2:term, auto___def_1 X1 X2 -> auto_testable_old X2 -> auto___type_14 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1117 X1 X2 H);  intros.
  apply (rem_1116 X1 X2);  tauto.
Qed.

Remark rem_1119 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1120 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_1119 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1121 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1122 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_1121 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1123 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_1120 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_1122 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1124 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_18 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1123 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_crypt_1;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1125 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1126 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_1125 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1127 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1128 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_1127 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1129 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_1126 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_1128 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1130 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_18 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1129 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_crypt_2;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1131 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1132 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_1131 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1133 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1134 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_1133 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1135 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_1132 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_1134 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1136 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_18 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1135 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_crypt_3;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1137 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1138 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_1137 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1139 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1140 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_1139 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1141 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1138 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1140 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1142 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_18 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1141 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_crypt_4;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1143 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1144 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_1143 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1145 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1146 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_1145 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1147 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_1144 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_1146 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1148 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_18 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1147 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_crypt_5;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1149 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1150 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_1149 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1151 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1152 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_1151 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1153 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_1150 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_1152 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1154 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_18 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1153 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_crypt_6;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1155 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1156 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_1155 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1157 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1158 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_1157 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1159 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_1156 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_1158 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1160 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_18 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1159 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_crypt_7;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1161 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1162 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_1161 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1163 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1164 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_1163 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1165 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_1162 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_1164 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1166 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_18 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1165 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_crypt_8;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1167 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1168 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_1167 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1169 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1170 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_1169 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1171 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_1168 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_1170 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1172 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_18 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1171 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_crypt_9;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1173 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___type_18 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intro H. intros.
  elim (rem_987 X1 X2 H);  intros.
  apply (rem_1124 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1130 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1136 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1142 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1148 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1154 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1160 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1166 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1172 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
Defined.

Remark rem_1174 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18.  tauto.
Defined.

Remark rem_1175 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> auto___type_18 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18.  case (rem_1174 epsilon_mknows_current_p__type_18). clear  epsilon_mknows_current_p__type_18. intros. apply trans___type_18_bob_1;  tauto.
 clear  epsilon_mknows_current_p__type_18. tauto.
Defined.

Remark rem_1176 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> auto_knows_current bob -> auto___type_18 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intro H. intros.
  elim (rem_991 H);  intros.
  apply (rem_1175 epsilon_mknows_current_p__type_18);  tauto.
Defined.

Remark rem_1177 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_18 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.  case (rem_1174 epsilon_mknows_current_p__type_18). clear  epsilon_mknows_current_p__type_18. intros. apply trans___type_18_noncea_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_18. tauto.
Defined.

Remark rem_1178 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current (noncea_old X1 X2) -> auto___type_18 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intro H. intros.
  elim (rem_994 X1 X2 H);  intros.
  apply (rem_1177 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
Defined.

Remark rem_1179 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1137 epsilon_mknows_current_p__type_18 X1);  assumption.
  tauto.
Defined.

Remark rem_1180 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_18 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1. intros A1.
  case (rem_1179 epsilon_mknows_current_p__type_18 X1 A1). clear  epsilon_mknows_current_p__type_18 A1. intros. apply trans___type_18_p_1;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1. tauto.
Defined.

Remark rem_1181 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto_knows_current (p X1) -> auto___type_18 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1. intro H. intros.
  elim (rem_998 X1 H);  intros.
  apply (rem_1180 epsilon_mknows_current_p__type_18 X1);  tauto.
Defined.

Remark rem_1182 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_18 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.  case (rem_1174 epsilon_mknows_current_p__type_18). clear  epsilon_mknows_current_p__type_18. intros. apply trans___type_18_passwd_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_18. tauto.
Defined.

Remark rem_1183 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current (passwd_old X1 X2) -> auto___type_18 (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intro H. intros.
  elim (rem_1001 X1 X2 H);  intros.
  apply (rem_1182 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
Defined.

Remark rem_1184 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> auto___type_18 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18.  case (rem_1174 epsilon_mknows_current_p__type_18). clear  epsilon_mknows_current_p__type_18. intros. apply trans___type_18_alice_1;  tauto.
 clear  epsilon_mknows_current_p__type_18. tauto.
Defined.

Remark rem_1185 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> auto_knows_current alice -> auto___type_18 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intro H. intros.
  elim (rem_1004 H);  intros.
  apply (rem_1184 epsilon_mknows_current_p__type_18);  tauto.
Defined.

Remark rem_1186 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___type_18 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.  case (rem_1174 epsilon_mknows_current_p__type_18). clear  epsilon_mknows_current_p__type_18. intros. apply trans___type_18_nonceb_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_18. tauto.
Defined.

Remark rem_1187 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current (nonceb_old X1 X2) -> auto___type_18 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intro H. intros.
  elim (rem_1007 X1 X2 H);  intros.
  apply (rem_1186 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
Defined.

Remark rem_1188 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_18 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1141 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_dec_1;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1189 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current (dec X1 X2) -> auto___type_18 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intro H. intros.
  elim (rem_1010 X1 X2 H);  intros.
  apply (rem_1188 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
Defined.

Remark rem_1190 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1191 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_1190 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1192 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1193 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_1192 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1194 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_1191 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_1193 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1195 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_18 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1194 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_enc_1;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1196 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_18 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1141 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_enc_2;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1197 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1198 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_1197 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1199 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1200 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_1199 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1201 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_1198 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_1200 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1202 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_18 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1201 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_enc_3;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1203 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1204 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_1203 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1205 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1206 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_1205 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1207 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_1204 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_1206 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1208 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_18 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1207 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_enc_4;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1209 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current (enc X1 X2) -> auto___type_18 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intro H. intros.
  elim (rem_1031 X1 X2 H);  intros.
  apply (rem_1195 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1196 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1202 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1208 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
Defined.

Remark rem_1210 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_18 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1141 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_cons_1;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1211 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___type_18 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intro H. intros.
  elim (rem_1034 X1 X2 H);  intros.
  apply (rem_1210 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
Defined.

Remark rem_1212 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_18 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1. intros A1.
  case (rem_1179 epsilon_mknows_current_p__type_18 X1 A1). clear  epsilon_mknows_current_p__type_18 A1. intros. apply trans___type_18_s_1;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1. tauto.
Defined.

Remark rem_1213 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto_knows_current (s X1) -> auto___type_18 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1. intro H. intros.
  elim (rem_1037 X1 H);  intros.
  apply (rem_1212 epsilon_mknows_current_p__type_18 X1);  tauto.
Defined.

Remark rem_1214 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> auto___type_18 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18.  case (rem_1174 epsilon_mknows_current_p__type_18). clear  epsilon_mknows_current_p__type_18. intros. apply trans___type_18_i_1;  tauto.
 clear  epsilon_mknows_current_p__type_18. tauto.
Defined.

Remark rem_1215 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> auto_knows_current i -> auto___type_18 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intro H. intros.
  elim (rem_1040 H);  intros.
  apply (rem_1214 epsilon_mknows_current_p__type_18);  tauto.
Defined.

Remark rem_1216 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> auto___type_18 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18.  case (rem_1174 epsilon_mknows_current_p__type_18). clear  epsilon_mknows_current_p__type_18. intros. apply trans___type_18_nil_1;  tauto.
 clear  epsilon_mknows_current_p__type_18. tauto.
Defined.

Remark rem_1217 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> auto_knows_current nil -> auto___type_18 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intro H. intros.
  elim (rem_1043 H);  intros.
  apply (rem_1216 epsilon_mknows_current_p__type_18);  tauto.
Defined.

Remark rem_1218 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> auto___type_18 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18.  case (rem_1174 epsilon_mknows_current_p__type_18). clear  epsilon_mknows_current_p__type_18. intros. apply trans___type_18_server_1;  tauto.
 clear  epsilon_mknows_current_p__type_18. tauto.
Defined.

Remark rem_1219 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> auto_knows_current server -> auto___type_18 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intro H. intros.
  elim (rem_1046 H);  intros.
  apply (rem_1218 epsilon_mknows_current_p__type_18);  tauto.
Defined.

Remark rem_1220 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_61 X1 -> auto___def_61 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1221 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_61 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_61 X1). tauto. exact (rem_1220 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1222 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_62 X2 -> auto___def_62 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1223 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_62 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_62 X2). tauto. exact (rem_1222 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1224 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_61 X1 /\ auto___def_62 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_61 X1). 2:apply (rem_1221 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_62 X2). 2:apply (rem_1223 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1225 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___type_18 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1224 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_key_1;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1226 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1227 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1226 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1228 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1229 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_1228 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1230 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1227 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_1229 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1231 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_18 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1230 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_key_2;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1232 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1233 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_1232 epsilon_mknows_current_p__type_18 X1).
Defined.

Remark rem_1234 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1235 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_1234 epsilon_mknows_current_p__type_18 X2).
Defined.

Remark rem_1236 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_1233 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_1235 epsilon_mknows_current_p__type_18 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1237 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_18 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intros A1 A2.
  case (rem_1236 epsilon_mknows_current_p__type_18 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_18 A1 A2. intros. apply trans___type_18_key_3;  tauto.
 clear  epsilon_mknows_current_p__type_18 A1 A2. tauto.
Defined.

Remark rem_1238 : (forall X:term, auto_knows_current X -> auto___type_18 X)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___type_18 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_18. intros X1 X2. intro H. intros.
  elim (rem_1066 X1 X2 H);  intros.
  apply (rem_1225 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1231 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
  apply (rem_1237 epsilon_mknows_current_p__type_18 X1 X2);  tauto.
Defined.

Remark rem_1239 : forall X1:term, auto_knows_current X1 -> auto___type_18 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_current_p__type_18 1.
  intro X. case X.
  exact (rem_1185 epsilon_mknows_current_p__type_18 ).
  exact (rem_1176 epsilon_mknows_current_p__type_18 ).
  intros X1 X2;  exact (rem_1211 epsilon_mknows_current_p__type_18 X1 X2).
  intros X1 X2;  exact (rem_1173 epsilon_mknows_current_p__type_18 X1 X2).
  intros X1 X2;  exact (rem_1189 epsilon_mknows_current_p__type_18 X1 X2).
  intros X1 X2;  exact (rem_1209 epsilon_mknows_current_p__type_18 X1 X2).
  exact (rem_1215 epsilon_mknows_current_p__type_18 ).
  intros X1 X2;  exact (rem_1238 epsilon_mknows_current_p__type_18 X1 X2).
  exact (rem_1217 epsilon_mknows_current_p__type_18 ).
  intros X1 X2. intro H. elim (rem_1077 X1 X2 H).
  intros X1 X2;  exact (rem_1178 epsilon_mknows_current_p__type_18 X1 X2).
  intros X1 X2. intro H. elim (rem_1068 X1 X2 H).
  intros X1 X2;  exact (rem_1187 epsilon_mknows_current_p__type_18 X1 X2).
  intros X1;  exact (rem_1181 epsilon_mknows_current_p__type_18 X1).
  intros X1 X2. intro H. elim (rem_1073 X1 X2 H).
  intros X1 X2;  exact (rem_1183 epsilon_mknows_current_p__type_18 X1 X2).
   intro H. elim (rem_1074  H).
   intro H. elim (rem_1072  H).
  intros X1 X2. intro H. elim (rem_1071 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1070 X1 X2 H).
  intros X1;  exact (rem_1213 epsilon_mknows_current_p__type_18 X1).
  exact (rem_1219 epsilon_mknows_current_p__type_18 ).
  intros X1 X2. intro H. elim (rem_1076 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1069 X1 X2 H).
   intro H. elim (rem_1075  H).
Qed.

Remark rem_1240 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto___type_18 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto___type_18 X1). tauto. exact (rem_1239 X1).
Qed.

Remark rem_1241 : forall X1 X2:term, auto___def_78 X2 X1 -> auto___type_18 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_918 X2 X1 H);  intros.
  apply (rem_1240 X1 X2);  tauto.
Qed.

Remark rem_1242 : forall X1:term, auto___def_105 X1 -> auto___def_105 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1243 : forall X1 X2:term, auto___def_105 X1 -> auto___type_23 X2 -> auto___def_105 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_105 X1 -> auto___def_105 X1). tauto. exact (rem_1242 X1).
Qed.

Remark rem_1244 : forall X2:term, auto___type_23 X2 -> auto___type_23 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1245 : forall X1 X2:term, auto___def_105 X1 -> auto___type_23 X2 -> auto___type_23 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_23 X2 -> auto___type_23 X2). tauto. exact (rem_1244 X2).
Qed.

Remark rem_1246 : forall X1 X2:term, auto___def_105 X1 -> auto___type_23 X2 -> (auto___def_105 X1 /\ auto___type_23 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_105 X1). 2:apply (rem_1243 X1 X2);  assumption.
  cut (auto___type_23 X2). 2:apply (rem_1245 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1247 : forall X1 X2:term, auto___def_105 X1 -> auto___type_23 X2 -> auto___def_104 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1246 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_104_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1248 : forall X1 X2:term, auto___type_23 X2 -> auto___def_105 X1 -> auto___def_104 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_105 X1 -> auto___type_23 X2 -> auto___def_104 (key X1 X2)). tauto. exact (rem_1247 X1 X2).
Qed.

Remark rem_1249 : auto___def_118 pub. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_118_pub_1;  tauto.
 tauto.
Qed.

Remark rem_1250 : auto___def_60 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_60_sym_1;  tauto.
 tauto.
Qed.

Remark rem_1251 : forall X1:term, auto___type_3 X1 -> auto___type_3 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1252 : forall X1 X2:term, auto___def_20 X2 -> auto___type_3 X1 -> auto___type_3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_3 X1 -> auto___type_3 X1). tauto. exact (rem_1251 X1).
Qed.

Remark rem_1253 : forall X2:term, auto___def_20 X2 -> auto___def_20 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1254 : forall X1 X2:term, auto___def_20 X2 -> auto___type_3 X1 -> auto___def_20 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_20 X2 -> auto___def_20 X2). tauto. exact (rem_1253 X2).
Qed.

Remark rem_1255 : forall X1 X2:term, auto___def_20 X2 -> auto___type_3 X1 -> (auto___type_3 X1 /\ auto___def_20 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_3 X1). 2:apply (rem_1252 X1 X2);  assumption.
  cut (auto___def_20 X2). 2:apply (rem_1254 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1256 : forall X1 X2:term, auto___def_20 X2 -> auto___type_3 X1 -> auto___def_22 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1255 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_22_dec_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1257 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old nil -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_1258 : forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1259 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old nil -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_1258 X2).
Qed.

Remark rem_1260 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old nil -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_1257 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_1259 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1261 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old nil -> auto___def_18 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1260 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_18_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1262 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old nil -> auto_knows_old X1 -> auto___def_18 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old nil -> auto___def_18 X1 X2). tauto. exact (rem_1261 X1 X2).
Qed.

Remark rem_1263 : forall X1 X2:term, auto_knows_old (cons X1 X2) -> or_1
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1264 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old (cons X2 nil) -> auto___def_18 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1263 X2 nil H);  intros.
  apply (rem_1262 X1 X2);  tauto.
Qed.

Remark rem_1265 : forall X1 X2:term, auto_knows_old (cons X1 (cons X2 nil)) -> auto___def_18 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1263 X1 (cons X2 nil) H);  intros.
  apply (rem_1264 X1 X2);  tauto.
Qed.

Remark rem_1266 : forall X1 X2 X3:term, auto___def_10 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_old X3 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_923 X1).
Qed.

Remark rem_1267 : forall X2:term, auto___def_10 X2 -> auto___def_10 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1268 : forall X1 X2 X3:term, auto___def_10 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_old X3 -> auto___def_10 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_10 X2 -> auto___def_10 X2). tauto. exact (rem_1267 X2).
Qed.

Remark rem_1269 : forall X3:term, auto_agent X3 -> auto_agent X3. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1270 : forall X1 X2 X3:term, auto___def_10 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_old X3 -> auto_agent X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X3 -> auto_agent X3). tauto. exact (rem_1269 X3).
Qed.

Remark rem_1271 : forall X1 X2 X3:term, auto___def_10 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_old X3 -> (auto_agent X1 /\ auto___def_10 X2 /\ auto_agent X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto_agent X1). 2:apply (rem_1266 X1 X2 X3);  assumption.
  cut (auto___def_10 X2). 2:apply (rem_1268 X1 X2 X3);  assumption.
  cut (auto_agent X3). 2:apply (rem_1270 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1272 : forall X1 X2 X3:term, auto___def_10 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_old X3 -> auto___def_14 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1271 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_14_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1273 : forall X1 X2 X3:term, auto_agent X3 -> auto_agent X1 -> auto___def_10 X2 -> auto_knows_old X3 -> auto___def_14 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_10 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_old X3 -> auto___def_14 X1 X2 X3). tauto. exact (rem_1272 X1 X2 X3).
Qed.

Remark rem_1274 : forall X1 X2:term, auto___def_11 (passwd_old X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1275 : forall X1 X2 X3:term, auto___def_10 X2 -> auto___def_11 (passwd_old X3 X1) -> auto_knows_old X3 -> auto___def_14 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1274 X3 X1 H);  intros.
  apply (rem_1273 X1 X2 X3);  tauto.
Qed.

Remark rem_1276 : forall X2:term, auto___def_15 X2 -> auto___def_15 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1277 : forall X1 X2 X3:term, auto___def_15 X2 -> auto___def_16 (passwd_old X3 X1) -> auto_knows_old X3 -> auto___def_15 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_15 X2 -> auto___def_15 X2). tauto. exact (rem_1276 X2).
Qed.

Remark rem_1278 : forall X3:term, auto_knows_old X3 -> auto_knows_old X3. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1279 : forall X1 X2 X3:term, auto___def_15 X2 -> auto___def_16 (passwd_old X3 X1) -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_1278 X3).
Qed.

Remark rem_1280 : forall X1 X2 X3:term, auto___def_15 X2 -> auto___def_16 (passwd_old X3 X1) -> auto_knows_old X3 -> (auto___def_15 X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto___def_15 X2). 2:apply (rem_1277 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_1279 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1281 : forall X1 X2 X3:term, auto___def_15 X2 -> auto___def_16 (passwd_old X3 X1) -> auto_knows_old X3 -> auto___def_14 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1280 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_14_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1282 : forall X2:term, auto___def_19 X2 -> auto___def_19 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1283 : forall X1 X2 X3:term, auto___def_19 X2 -> auto___def_20 (passwd_old X3 X1) -> auto_knows_old X3 -> auto___def_19 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_19 X2 -> auto___def_19 X2). tauto. exact (rem_1282 X2).
Qed.

Remark rem_1284 : forall X1 X2 X3:term, auto___def_19 X2 -> auto___def_20 (passwd_old X3 X1) -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_1278 X3).
Qed.

Remark rem_1285 : forall X1 X2 X3:term, auto___def_19 X2 -> auto___def_20 (passwd_old X3 X1) -> auto_knows_old X3 -> (auto___def_19 X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto___def_19 X2). 2:apply (rem_1283 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_1284 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1286 : forall X1 X2 X3:term, auto___def_19 X2 -> auto___def_20 (passwd_old X3 X1) -> auto_knows_old X3 -> auto___def_14 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1285 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_14_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1287 : forall X1 X2:term, auto_knows_old (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1288 : forall X1 X2 X3:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (passwd_old X3 X1) -> auto___def_14 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1287 X3 X1 H);  intros.
Qed.

Remark rem_1289 : forall X1 X2 X3:term, auto_knows_old X2 -> auto_knows_old (passwd_old X3 X1) -> auto_knows_old X3 -> auto___def_14 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (passwd_old X3 X1) -> auto___def_14 X1 X2 X3). tauto. exact (rem_1288 X1 X2 X3).
Qed.

Remark rem_1290 : forall X1 X2:term, auto_knows_old (enc X1 X2) -> or_4
    (auto___def_10 X1 /\ auto___def_11 X2)
    (auto___def_15 X1 /\ auto___def_16 X2)
    (auto___def_19 X1 /\ auto___def_20 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_1291 : forall X1 X2 X3:term, auto_knows_old X3 -> auto_knows_old (enc X2 (passwd_old X3 X1)) -> auto___def_14 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1290 X2 (passwd_old X3 X1) H);  intros.
  apply (rem_1275 X1 X2 X3);  tauto.
  apply (rem_1281 X1 X2 X3);  tauto.
  apply (rem_1286 X1 X2 X3);  tauto.
  apply (rem_1289 X1 X2 X3);  tauto.
Qed.

Remark rem_1292 : forall X1 X2 X3:term, auto_knows_old X3 -> auto_knows_old (enc X2 (passwd_old X3 X1)) -> auto_knows_old nil -> auto___def_14 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old (enc X2 (passwd_old X3 X1)) -> auto___def_14 X1 X2 X3). tauto.
  exact (rem_1291 X1 X2 X3).
Qed.

Remark rem_1293 : forall X1 X2 X3:term, auto_knows_old (enc X2 (passwd_old X3 X1)) -> auto_knows_old nil -> auto_knows_old X3 -> auto___def_14 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old (enc X2 (passwd_old X3 X1)) -> auto_knows_old nil -> auto___def_14 X1 X2 X3). tauto. exact (rem_1292 X1 X2 X3).
Qed.

Remark rem_1294 : forall X1 X2 X3:term, auto_knows_old X3 -> auto_knows_old (cons (enc X2 (passwd_old X3 X1)) nil) -> auto___def_14 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1263 (enc X2 (passwd_old X3 X1)) nil H);  intros.
  apply (rem_1293 X1 X2 X3);  tauto.
Qed.

Remark rem_1295 : forall X1 X2 X3:term, auto_knows_old (cons X3 (cons (enc X2 (passwd_old X3 X1)) nil)) -> auto___def_14 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1263 X3 (cons (enc X2 (passwd_old X3 X1)) nil) H);  intros.
  apply (rem_1294 X1 X2 X3);  tauto.
Qed.

Remark rem_1296 : forall X1 X2 X3:term, auto___def_17 X3 -> auto_agent X2 -> auto_agent X1 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_923 X1).
Qed.

Remark rem_1297 : forall X1 X2 X3:term, auto___def_17 X3 -> auto_agent X2 -> auto_agent X1 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_925 X2).
Qed.

Remark rem_1298 : forall X1 X2 X3:term, auto___def_17 X3 -> auto_agent X2 -> auto_agent X1 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_agent X1). 2:apply (rem_1296 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_1297 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1299 : forall X1 X2 X3:term, auto___def_17 X3 -> auto_agent X2 -> auto_agent X1 -> auto___def_24 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1298 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_24_noncea_old_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1300 : forall X1 X2 X3:term, auto___def_23 X1 X2 X3 -> or_1
    (auto___def_17 X1 /\ auto_agent X2 /\ auto_agent X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1301 : forall X1 X2 X3:term, auto___def_23 X3 X2 X1 -> auto___def_24 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1300 X3 X2 X1 H);  intros.
  apply (rem_1299 X1 X2 X3);  tauto.
Qed.

Remark rem_1302 : forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1303 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_1302 X1).
Qed.

Remark rem_1304 : forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1305 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_1304 X2).
Qed.

Remark rem_1306 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_1303 X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_1305 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1307 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_15 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1306 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_15_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1308 : forall X1 X2:term, auto___type_2 X2 -> auto___def_17 X1 -> auto___def_15 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_17 X1 -> auto___type_2 X2 -> auto___def_15 (crypt X1 X2)). tauto. exact (rem_1307 X1 X2).
Qed.

Remark rem_1309 : auto___def_61 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1310 : auto___def_61 sym -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1309 H);  intros.
Qed.

Remark rem_1311 : forall X1:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_68 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_61 sym -> False). tauto.
  exact (rem_1310).
Qed.

Remark rem_1312 : auto___def_51 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1313 : auto___def_51 sym -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1312 H);  intros.
Qed.

Remark rem_1314 : forall X1:term, auto___def_51 sym -> auto_agent X1 -> auto___def_68 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_1313).
Qed.

Remark rem_1315 : auto___def_12 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1316 : auto___def_12 sym -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1315 H);  intros.
Qed.

Remark rem_1317 : forall X1:term, auto___def_12 sym -> auto___def_13 X1 -> auto___def_68 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_12 sym -> False). tauto.
  exact (rem_1316).
Qed.

Remark rem_1318 : forall X1:term, auto_knows_current (key sym X1) -> auto___def_68 X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_1311 X1);  tauto.
  apply (rem_1314 X1);  tauto.
  apply (rem_1317 X1);  tauto.
Qed.

Remark rem_1319 : (forall X:term, auto___def_17 X -> auto___type_8 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1320 : (forall X:term, auto___def_17 X -> auto___type_8 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_17_p__type_8. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_1319 epsilon_m__def_17_p__type_8 X1);  assumption.
  tauto.
Defined.

Remark rem_1321 : (forall X:term, auto___def_17 X -> auto___type_8 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_8 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_17_p__type_8. intros X1 X2. intros A1.
  case (rem_1320 epsilon_m__def_17_p__type_8 X1 A1). clear  epsilon_m__def_17_p__type_8 A1. intros. apply trans___type_8_r_old_1;  tauto.
 clear  epsilon_m__def_17_p__type_8 A1. tauto.
Defined.

Remark rem_1322 : forall X1 X2:term, auto___def_17 (r_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1323 : (forall X:term, auto___def_17 X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_17 (r_old X1 X2) -> auto___type_8 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_p__type_8. intros X1 X2. intro H. intros.
  elim (rem_1322 X1 X2 H);  intros.
  apply (rem_1321 epsilon_m__def_17_p__type_8 X1 X2);  tauto.
Defined.

Remark rem_1324 : forall X1 X2:term, auto___def_17 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1325 : forall X1 X2:term, auto___def_17 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1326 : forall X1 X2:term, auto___def_17 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1327 : auto___def_17 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1328 : forall X1 X2:term, auto___def_17 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1329 : forall X1 X2:term, auto___def_17 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1330 : forall X1:term, auto___def_17 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1331 : auto___def_17 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1332 : forall X1 X2:term, auto___def_17 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1333 : forall X1 X2:term, auto___def_17 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1334 : auto___def_17 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1335 : auto___def_17 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1336 : forall X1 X2:term, auto___def_17 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1337 : forall X1 X2:term, auto___def_17 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1338 : forall X1 X2:term, auto___def_17 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1339 : forall X1 X2:term, auto___def_17 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1340 : forall X1:term, auto___def_17 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1341 : auto___def_17 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1342 : forall X1 X2:term, auto___def_17 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1343 : auto___def_17 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1344 : auto___def_17 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1345 : auto___def_17 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1346 : forall X1 X2:term, auto___def_17 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1347 : forall X1 X2:term, auto___def_17 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1348 : forall X1:term, auto___def_17 X1 -> auto___type_8 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_17_p__type_8 1.
  intro X. case X.
   intro H. elim (rem_1334  H).
   intro H. elim (rem_1327  H).
  intros X1 X2. intro H. elim (rem_1339 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1337 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1338 X1 X2 H).
   intro H. elim (rem_1343  H).
  intros X1 X2. intro H. elim (rem_1347 X1 X2 H).
   intro H. elim (rem_1344  H).
  intros X1 X2. intro H. elim (rem_1346 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1325 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1336 X1 X2 H).
  intros X1. intro H. elim (rem_1330 X1 H).
  intros X1 X2. intro H. elim (rem_1333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1332 X1 X2 H).
   intro H. elim (rem_1335  H).
   intro H. elim (rem_1331  H).
  intros X1 X2. intro H. elim (rem_1329 X1 X2 H).
  intros X1 X2;  exact (rem_1323 epsilon_m__def_17_p__type_8 X1 X2).
  intros X1. intro H. elim (rem_1340 X1 H).
   intro H. elim (rem_1345  H).
  intros X1 X2. intro H. elim (rem_1342 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1326 X1 X2 H).
   intro H. elim (rem_1341  H).
Qed.

Remark rem_1349 : forall X1 X2:term, auto___def_17 X1 -> auto___def_39 X2 -> auto___def_42 X1 -> auto___type_8 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_17 X1 -> auto___type_8 X1). tauto. exact (rem_1348 X1).
Qed.

Remark rem_1350 : forall X1 X2:term, auto___def_42 X1 -> auto___def_17 X1 -> auto___def_39 X2 -> auto___type_8 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_39 X2 -> auto___def_42 X1 -> auto___type_8 X1). tauto. exact (rem_1349 X1 X2).
Qed.

Remark rem_1351 : forall X1 X2:term, auto___def_43 X1 X2 -> or_1
    (auto___def_42 X1 /\ auto___def_17 X1 /\ auto___def_39 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1352 : forall X1 X2:term, auto___def_43 X1 X2 -> auto___type_8 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1351 X1 X2 H);  intros.
  apply (rem_1350 X1 X2);  tauto.
Qed.

Remark rem_1353 : (forall X:term, auto___def_62 X -> auto___def_2 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_62_p__def_2.  tauto.
Defined.

Remark rem_1354 : (forall X:term, auto___def_62 X -> auto___def_2 X)
    -> auto___def_2 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_62_p__def_2.  case (rem_1353 epsilon_m__def_62_p__def_2). clear  epsilon_m__def_62_p__def_2. intros. apply trans___def_2_i_1;  tauto.
 clear  epsilon_m__def_62_p__def_2. tauto.
Defined.

Remark rem_1355 : (forall X:term, auto___def_62 X -> auto___def_2 X)
    -> auto___def_62 i -> auto___def_2 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_p__def_2. intro H. intros.
  elim (rem_312 H);  intros.
  apply (rem_1354 epsilon_m__def_62_p__def_2);  tauto.
Defined.

Remark rem_1356 : forall X1:term, auto___def_62 X1 -> auto___def_2 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_62_p__def_2 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_1355 epsilon_m__def_62_p__def_2 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_1357 : forall X1:term, auto___def_61 prv -> auto___def_62 X1 -> auto___def_2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1.
  cut (auto___def_62 X1 -> auto___def_2 X1). tauto. exact (rem_1356 X1).
Qed.

Remark rem_1358 : auto___def_51 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1359 : auto___def_51 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1358 H);  intros.
Qed.

Remark rem_1360 : forall X1:term, auto___def_51 prv -> auto_agent X1 -> auto___def_2 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_51 prv -> False). tauto.
  exact (rem_1359).
Qed.

Remark rem_1361 : forall X1 X2:term, auto_knows_old (key X1 X2) -> or_2
    (auto___def_61 X1 /\ auto___def_62 X2)
    (auto___def_51 X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_1362 : forall X1:term, auto_knows_old (key prv X1) -> auto___def_2 X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_1361 prv X1 H);  intros.
  apply (rem_1357 X1);  tauto.
  apply (rem_1360 X1);  tauto.
Qed.

Remark rem_1363 : forall X1:term, auto___def_70 X1 -> auto___def_70 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1364 : forall X1 X2:term, auto___def_70 X1 -> auto___def_9 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_1363 X1).
Qed.

Remark rem_1365 : forall X2:term, auto___def_9 X2 -> auto___def_9 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1366 : forall X1 X2:term, auto___def_70 X1 -> auto___def_9 X2 -> auto___def_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_9 X2 -> auto___def_9 X2). tauto. exact (rem_1365 X2).
Qed.

Remark rem_1367 : forall X1 X2:term, auto___def_70 X1 -> auto___def_9 X2 -> (auto___def_70 X1 /\ auto___def_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1364 X1 X2);  assumption.
  cut (auto___def_9 X2). 2:apply (rem_1366 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1368 : forall X1 X2:term, auto___def_70 X1 -> auto___def_9 X2 -> auto___def_69 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1367 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_69_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1369 : forall X1 X2:term, auto___def_9 X2 -> auto___def_70 X1 -> auto___def_69 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_9 X2 -> auto___def_69 (cons X1 X2)). tauto. exact (rem_1368 X1 X2).
Qed.

Remark rem_1370 : forall X1 X2:term, auto___def_49 X2 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1.
  tauto.
Qed.

Remark rem_1371 : forall X1 X2:term, auto___def_49 X2 X1 -> auto___def_50 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1.
  case (rem_1370 X1 X2 A1). clear  A1. intros. apply trans___def_50_r_old_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_1372 : forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1373 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_1372 X1).
Qed.

Remark rem_1374 : forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1375 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_1374 X2).
Qed.

Remark rem_1376 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_1373 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_1375 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1377 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_19 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1376 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_19_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1378 : forall X1 X2:term, auto___def_22 X2 -> auto___def_21 X1 -> auto___def_19 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_22 X2 -> auto___def_19 (crypt X1 X2)). tauto. exact (rem_1377 X1 X2).
Qed.

Remark rem_1379 : auto___def_32 nil. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_32_nil_1;  tauto.
 tauto.
Qed.

Remark rem_1380 : forall X1:term, auto___type_18 X1 -> auto___type_18 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1381 : forall X1 X2:term, auto___def_80 X2 -> auto___type_18 X1 -> auto___type_18 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_18 X1 -> auto___type_18 X1). tauto. exact (rem_1380 X1).
Qed.

Remark rem_1382 : forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1383 : forall X1 X2:term, auto___def_80 X2 -> auto___type_18 X1 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_1382 X2).
Qed.

Remark rem_1384 : forall X1 X2:term, auto___def_80 X2 -> auto___type_18 X1 -> (auto___type_18 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_18 X1). 2:apply (rem_1381 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_1383 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1385 : forall X1 X2:term, auto___def_80 X2 -> auto___type_18 X1 -> auto___def_82 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1384 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_82_dec_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1386 : (forall X:term, auto___def_17 X -> auto___type_4 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1387 : (forall X:term, auto___def_17 X -> auto___type_4 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_17_p__type_4. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_1386 epsilon_m__def_17_p__type_4 X1);  assumption.
  tauto.
Defined.

Remark rem_1388 : (forall X:term, auto___def_17 X -> auto___type_4 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_4 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_17_p__type_4. intros X1 X2. intros A1.
  case (rem_1387 epsilon_m__def_17_p__type_4 X1 A1). clear  epsilon_m__def_17_p__type_4 A1. intros. apply trans___type_4_r_old_1;  tauto.
 clear  epsilon_m__def_17_p__type_4 A1. tauto.
Defined.

Remark rem_1389 : (forall X:term, auto___def_17 X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_17 (r_old X1 X2) -> auto___type_4 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_p__type_4. intros X1 X2. intro H. intros.
  elim (rem_1322 X1 X2 H);  intros.
  apply (rem_1388 epsilon_m__def_17_p__type_4 X1 X2);  tauto.
Defined.

Remark rem_1390 : forall X1:term, auto___def_17 X1 -> auto___type_4 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_17_p__type_4 1.
  intro X. case X.
   intro H. elim (rem_1334  H).
   intro H. elim (rem_1327  H).
  intros X1 X2. intro H. elim (rem_1339 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1337 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1338 X1 X2 H).
   intro H. elim (rem_1343  H).
  intros X1 X2. intro H. elim (rem_1347 X1 X2 H).
   intro H. elim (rem_1344  H).
  intros X1 X2. intro H. elim (rem_1346 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1325 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1336 X1 X2 H).
  intros X1. intro H. elim (rem_1330 X1 H).
  intros X1 X2. intro H. elim (rem_1333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1332 X1 X2 H).
   intro H. elim (rem_1335  H).
   intro H. elim (rem_1331  H).
  intros X1 X2. intro H. elim (rem_1329 X1 X2 H).
  intros X1 X2;  exact (rem_1389 epsilon_m__def_17_p__type_4 X1 X2).
  intros X1. intro H. elim (rem_1340 X1 H).
   intro H. elim (rem_1345  H).
  intros X1 X2. intro H. elim (rem_1342 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1326 X1 X2 H).
   intro H. elim (rem_1341  H).
Qed.

Remark rem_1391 : forall X1 X2 X3:term, auto___def_17 X1 -> auto_agent X2 -> auto_agent X3 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_17 X1 -> auto___type_4 X1). tauto. exact (rem_1390 X1).
Qed.

Remark rem_1392 : forall X1 X2 X3:term, auto___def_23 X1 X2 X3 -> auto___type_4 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1300 X1 X2 X3 H);  intros.
  apply (rem_1391 X1 X2 X3);  tauto.
Qed.

Remark rem_1393 : forall X1:term, auto___def_13 X1 -> auto___def_13 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1394 : forall X1 X2:term, auto___def_12 pub -> auto___def_13 X1 -> auto___def_17 X2 -> auto___def_13 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_13 X1 -> auto___def_13 X1). tauto. exact (rem_1393 X1).
Qed.

Remark rem_1395 : forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1396 : forall X1 X2:term, auto___def_12 pub -> auto___def_13 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_1395 X2).
Qed.

Remark rem_1397 : forall X1 X2:term, auto___def_12 pub -> auto___def_13 X1 -> auto___def_17 X2 -> (auto___def_13 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_13 X1). 2:apply (rem_1394 X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_1396 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1398 : forall X1 X2:term, auto___def_12 pub -> auto___def_13 X1 -> auto___def_17 X2 -> auto___def_63 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1397 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_63_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1399 : forall X1 X2:term, auto___type_2 (key X1 X2) -> or_1
    (auto___def_12 X1 /\ auto___def_13 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1400 : forall X1 X2:term, auto___def_17 X2 -> auto___type_2 (key pub X1) -> auto___def_63 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1399 pub X1 H);  intros.
  apply (rem_1398 X1 X2);  tauto.
Qed.

Remark rem_1401 : auto___def_41 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1402 : auto___def_41 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1401 H);  intros.
Qed.

Remark rem_1403 : forall X1 X2:term, auto___def_36 X2 -> auto___def_41 pub -> auto___def_42 X1 -> auto___def_63 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_41 pub -> False). tauto.
  exact (rem_1402).
Qed.

Remark rem_1404 : forall X1 X2:term, auto___def_41 pub -> auto___def_42 X1 -> auto___def_36 X2 -> auto___def_63 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X2 -> auto___def_41 pub -> auto___def_42 X1 -> auto___def_63 X1 X2). tauto. exact (rem_1403 X1 X2).
Qed.

Remark rem_1405 : forall X1 X2:term, auto___def_37 (key X1 X2) -> or_1
    (auto___def_41 X1 /\ auto___def_42 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1406 : forall X1 X2:term, auto___def_36 X2 -> auto___def_37 (key pub X1) -> auto___def_63 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1405 pub X1 H);  intros.
  apply (rem_1404 X1 X2);  tauto.
Qed.

Remark rem_1407 : forall X1 X2:term, auto___def_22 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1408 : forall X1 X2:term, auto___def_21 X2 -> auto___def_22 (key pub X1) -> auto___def_63 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1407 pub X1 H);  intros.
Qed.

Remark rem_1409 : (forall X:term, auto___def_62 X -> auto_agent X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_62_pagent.  tauto.
Defined.

Remark rem_1410 : (forall X:term, auto___def_62 X -> auto_agent X)
    -> auto_agent i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_62_pagent.  case (rem_1409 epsilon_m__def_62_pagent). clear  epsilon_m__def_62_pagent. intros. apply trans_agent_i_1;  tauto.
 clear  epsilon_m__def_62_pagent. tauto.
Defined.

Remark rem_1411 : (forall X:term, auto___def_62 X -> auto_agent X)
    -> auto___def_62 i -> auto_agent i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_pagent. intro H. intros.
  elim (rem_312 H);  intros.
  apply (rem_1410 epsilon_m__def_62_pagent);  tauto.
Defined.

Remark rem_1412 : forall X1:term, auto___def_62 X1 -> auto_agent X1. (* Induct. *)
Proof.
  fix epsilon_m__def_62_pagent 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_1411 epsilon_m__def_62_pagent ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_1413 : forall X1 X2:term, auto___def_61 pub -> auto___def_62 X1 -> auto_knows_current X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_62 X1 -> auto_agent X1). tauto. exact (rem_1412 X1).
Qed.

Remark rem_1414 : forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1415 : forall X1 X2:term, auto___def_61 pub -> auto___def_62 X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_1414 X2).
Qed.

Remark rem_1416 : forall X1 X2:term, auto___def_61 pub -> auto___def_62 X1 -> auto_knows_current X2 -> (auto_agent X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto_agent X1). 2:apply (rem_1413 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1415 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1417 : forall X1 X2:term, auto___def_61 pub -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_63 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1416 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_63_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1418 : forall X1 X2:term, auto___def_51 pub -> auto_agent X1 -> auto_knows_current X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_923 X1).
Qed.

Remark rem_1419 : forall X1 X2:term, auto___def_51 pub -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_1414 X2).
Qed.

Remark rem_1420 : forall X1 X2:term, auto___def_51 pub -> auto_agent X1 -> auto_knows_current X2 -> (auto_agent X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto_agent X1). 2:apply (rem_1418 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1419 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1421 : forall X1 X2:term, auto___def_51 pub -> auto_agent X1 -> auto_knows_current X2 -> auto___def_63 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1420 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_63_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1422 : forall X1 X2:term, auto___def_12 pub -> auto___def_13 X1 -> auto_knows_current X2 -> auto___def_13 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_13 X1 -> auto___def_13 X1). tauto. exact (rem_1393 X1).
Qed.

Remark rem_1423 : forall X1 X2:term, auto___def_12 pub -> auto___def_13 X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_1414 X2).
Qed.

Remark rem_1424 : forall X1 X2:term, auto___def_12 pub -> auto___def_13 X1 -> auto_knows_current X2 -> (auto___def_13 X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_13 X1). 2:apply (rem_1422 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1423 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1425 : forall X1 X2:term, auto___def_12 pub -> auto___def_13 X1 -> auto_knows_current X2 -> auto___def_63 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1424 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_63_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1426 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current (key pub X1) -> auto___def_63 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1066 pub X1 H);  intros.
  apply (rem_1417 X1 X2);  tauto.
  apply (rem_1421 X1 X2);  tauto.
  apply (rem_1425 X1 X2);  tauto.
Qed.

Remark rem_1427 : auto___def_105 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1428 : auto___def_105 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1427 H);  intros.
Qed.

Remark rem_1429 : forall X1 X2:term, auto___def_105 pub -> auto___type_22 X2 -> auto___type_23 X1 -> auto___def_63 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_105 pub -> False). tauto.
  exact (rem_1428).
Qed.

Remark rem_1430 : forall X1 X2:term, auto___def_105 pub -> auto___type_23 X1 -> auto___type_22 X2 -> auto___def_63 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_105 pub -> auto___type_22 X2 -> auto___type_23 X1 -> auto___def_63 X1 X2). tauto. exact (rem_1429 X1 X2).
Qed.

Remark rem_1431 : forall X1 X2:term, auto___def_104 (key X1 X2) -> or_1
    (auto___def_105 X1 /\ auto___type_23 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1432 : forall X1 X2:term, auto___def_104 (key pub X1) -> auto___type_22 X2 -> auto___def_63 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1431 pub X1 H);  intros.
  apply (rem_1430 X1 X2);  tauto.
Qed.

Remark rem_1433 : forall X1 X2:term, auto___type_22 X2 -> auto___def_104 (key pub X1) -> auto___def_63 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_104 (key pub X1) -> auto___type_22 X2 -> auto___def_63 X1 X2). tauto. exact (rem_1432 X1 X2).
Qed.

Remark rem_1434 : auto___def_93 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1435 : auto___def_93 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1434 H);  intros.
Qed.

Remark rem_1436 : forall X1 X2:term, auto___def_88 X2 -> auto___def_93 pub -> auto___def_94 X1 -> auto___def_63 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_93 pub -> False). tauto.
  exact (rem_1435).
Qed.

Remark rem_1437 : forall X1 X2:term, auto___def_93 pub -> auto___def_94 X1 -> auto___def_88 X2 -> auto___def_63 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_88 X2 -> auto___def_93 pub -> auto___def_94 X1 -> auto___def_63 X1 X2). tauto. exact (rem_1436 X1 X2).
Qed.

Remark rem_1438 : forall X1 X2:term, auto___def_89 (key X1 X2) -> or_1
    (auto___def_93 X1 /\ auto___def_94 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1439 : forall X1 X2:term, auto___def_88 X2 -> auto___def_89 (key pub X1) -> auto___def_63 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1438 pub X1 H);  intros.
  apply (rem_1437 X1 X2);  tauto.
Qed.

Remark rem_1440 : auto___def_26 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1441 : auto___def_26 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1440 H);  intros.
Qed.

Remark rem_1442 : forall X1 X2:term, auto___def_24 X2 -> auto___def_26 pub -> auto___type_4 X1 -> auto___def_63 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_26 pub -> False). tauto.
  exact (rem_1441).
Qed.

Remark rem_1443 : forall X1 X2:term, auto___def_26 pub -> auto___type_4 X1 -> auto___def_24 X2 -> auto___def_63 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X2 -> auto___def_26 pub -> auto___type_4 X1 -> auto___def_63 X1 X2). tauto. exact (rem_1442 X1 X2).
Qed.

Remark rem_1444 : forall X1 X2:term, auto___def_25 (key X1 X2) -> or_1
    (auto___def_26 X1 /\ auto___type_4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1445 : forall X1 X2:term, auto___def_24 X2 -> auto___def_25 (key pub X1) -> auto___def_63 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1444 pub X1 H);  intros.
  apply (rem_1443 X1 X2);  tauto.
Qed.

Remark rem_1446 : auto___def_45 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1447 : auto___def_45 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1446 H);  intros.
Qed.

Remark rem_1448 : forall X1 X2:term, auto___def_45 pub -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_63 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_45 pub -> False). tauto.
  exact (rem_1447).
Qed.

Remark rem_1449 : forall X1 X2:term, auto___def_45 pub -> auto___type_8 X1 -> auto___type_7 X2 -> auto___def_63 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_45 pub -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_63 X1 X2). tauto. exact (rem_1448 X1 X2).
Qed.

Remark rem_1450 : forall X1 X2:term, auto___def_44 (key X1 X2) -> or_1
    (auto___def_45 X1 /\ auto___type_8 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1451 : forall X1 X2:term, auto___def_44 (key pub X1) -> auto___type_7 X2 -> auto___def_63 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1450 pub X1 H);  intros.
  apply (rem_1449 X1 X2);  tauto.
Qed.

Remark rem_1452 : forall X1 X2:term, auto___type_7 X2 -> auto___def_44 (key pub X1) -> auto___def_63 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_44 (key pub X1) -> auto___type_7 X2 -> auto___def_63 X1 X2). tauto. exact (rem_1451 X1 X2).
Qed.

Remark rem_1453 : auto___def_86 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1454 : auto___def_86 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1453 H);  intros.
Qed.

Remark rem_1455 : forall X1 X2:term, auto___def_84 X2 -> auto___def_86 pub -> auto___type_19 X1 -> auto___def_63 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_86 pub -> False). tauto.
  exact (rem_1454).
Qed.

Remark rem_1456 : forall X1 X2:term, auto___def_86 pub -> auto___type_19 X1 -> auto___def_84 X2 -> auto___def_63 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_84 X2 -> auto___def_86 pub -> auto___type_19 X1 -> auto___def_63 X1 X2). tauto. exact (rem_1455 X1 X2).
Qed.

Remark rem_1457 : forall X1 X2:term, auto___def_85 (key X1 X2) -> or_1
    (auto___def_86 X1 /\ auto___type_19 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1458 : forall X1 X2:term, auto___def_84 X2 -> auto___def_85 (key pub X1) -> auto___def_63 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1457 pub X1 H);  intros.
  apply (rem_1456 X1 X2);  tauto.
Qed.

Remark rem_1459 : forall X1 X2:term, auto_knows_current (crypt X2 (key pub X1)) -> auto___def_63 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_987 X2 (key pub X1) H);  intros.
  apply (rem_1400 X1 X2);  tauto.
  apply (rem_1406 X1 X2);  tauto.
  apply (rem_1408 X1 X2);  tauto.
  apply (rem_1426 X1 X2);  tauto.
  apply (rem_1433 X1 X2);  tauto.
  apply (rem_1439 X1 X2);  tauto.
  apply (rem_1445 X1 X2);  tauto.
  apply (rem_1452 X1 X2);  tauto.
  apply (rem_1458 X1 X2);  tauto.
Qed.

Remark rem_1460 : auto___def_41 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_41_sym_1;  tauto.
 tauto.
Qed.

Remark rem_1461 : auto___def_12 pub. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_12_pub_1;  tauto.
 tauto.
Qed.

Remark rem_1462 : forall X1:term, auto___def_77 X1 -> auto___def_77 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1463 : forall X1 X2:term, auto___def_77 X1 -> auto___type_17 X2 -> auto___def_77 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_77 X1). tauto. exact (rem_1462 X1).
Qed.

Remark rem_1464 : forall X2:term, auto___type_17 X2 -> auto___type_17 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1465 : forall X1 X2:term, auto___def_77 X1 -> auto___type_17 X2 -> auto___type_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_17 X2 -> auto___type_17 X2). tauto. exact (rem_1464 X2).
Qed.

Remark rem_1466 : forall X1 X2:term, auto___def_77 X1 -> auto___type_17 X2 -> (auto___def_77 X1 /\ auto___type_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_77 X1). 2:apply (rem_1463 X1 X2);  assumption.
  cut (auto___type_17 X2). 2:apply (rem_1465 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1467 : forall X1 X2:term, auto___def_77 X1 -> auto___type_17 X2 -> auto___def_75 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1466 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_75_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1468 : forall X1 X2:term, auto___type_17 X2 -> auto___def_77 X1 -> auto___def_75 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_77 X1 -> auto___type_17 X2 -> auto___def_75 (crypt X1 X2)). tauto. exact (rem_1467 X1 X2).
Qed.

Remark rem_1469 : auto___def_40 nil. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_40_nil_1;  tauto.
 tauto.
Qed.

Remark rem_1470 : (forall X:term, auto___def_39 X -> auto___type_7 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1471 : (forall X:term, auto___def_39 X -> auto___type_7 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_39_p__type_7. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_1470 epsilon_m__def_39_p__type_7 X1);  assumption.
  tauto.
Defined.

Remark rem_1472 : (forall X:term, auto___def_39 X -> auto___type_7 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_7 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_39_p__type_7. intros X1 X2. intros A1.
  case (rem_1471 epsilon_m__def_39_p__type_7 X1 A1). clear  epsilon_m__def_39_p__type_7 A1. intros. apply trans___type_7_nonceb_old_1;  tauto.
 clear  epsilon_m__def_39_p__type_7 A1. tauto.
Defined.

Remark rem_1473 : forall X1 X2:term, auto___def_39 (nonceb_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1474 : (forall X:term, auto___def_39 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_39 (nonceb_old X1 X2) -> auto___type_7 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_39_p__type_7. intros X1 X2. intro H. intros.
  elim (rem_1473 X1 X2 H);  intros.
  apply (rem_1472 epsilon_m__def_39_p__type_7 X1 X2);  tauto.
Defined.

Remark rem_1475 : forall X1 X2:term, auto___def_39 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1476 : forall X1 X2:term, auto___def_39 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1477 : forall X1 X2:term, auto___def_39 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1478 : auto___def_39 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1479 : forall X1 X2:term, auto___def_39 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1480 : forall X1 X2:term, auto___def_39 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1481 : forall X1 X2:term, auto___def_39 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1482 : forall X1:term, auto___def_39 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1483 : auto___def_39 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1484 : forall X1 X2:term, auto___def_39 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1485 : forall X1 X2:term, auto___def_39 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1486 : auto___def_39 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1487 : auto___def_39 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1488 : forall X1 X2:term, auto___def_39 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1489 : forall X1 X2:term, auto___def_39 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1490 : forall X1 X2:term, auto___def_39 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1491 : forall X1:term, auto___def_39 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1492 : auto___def_39 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1493 : forall X1 X2:term, auto___def_39 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1494 : auto___def_39 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1495 : auto___def_39 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1496 : auto___def_39 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1497 : forall X1 X2:term, auto___def_39 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1498 : forall X1 X2:term, auto___def_39 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1499 : forall X1:term, auto___def_39 X1 -> auto___type_7 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_39_p__type_7 1.
  intro X. case X.
   intro H. elim (rem_1486  H).
   intro H. elim (rem_1478  H).
  intros X1 X2. intro H. elim (rem_1490 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1475 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1488 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1489 X1 X2 H).
   intro H. elim (rem_1494  H).
  intros X1 X2. intro H. elim (rem_1498 X1 X2 H).
   intro H. elim (rem_1495  H).
  intros X1 X2. intro H. elim (rem_1497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1479 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1476 X1 X2 H).
  intros X1 X2;  exact (rem_1474 epsilon_m__def_39_p__type_7 X1 X2).
  intros X1. intro H. elim (rem_1482 X1 H).
  intros X1 X2. intro H. elim (rem_1485 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1484 X1 X2 H).
   intro H. elim (rem_1487  H).
   intro H. elim (rem_1483  H).
  intros X1 X2. intro H. elim (rem_1481 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1480 X1 X2 H).
  intros X1. intro H. elim (rem_1491 X1 H).
   intro H. elim (rem_1496  H).
  intros X1 X2. intro H. elim (rem_1493 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1477 X1 X2 H).
   intro H. elim (rem_1492  H).
Qed.

Remark rem_1500 : forall X1 X2:term, auto___def_17 X2 -> auto___def_39 X1 -> auto___def_42 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_39 X1 -> auto___type_7 X1). tauto. exact (rem_1499 X1).
Qed.

Remark rem_1501 : forall X1 X2:term, auto___def_42 X2 -> auto___def_17 X2 -> auto___def_39 X1 -> auto___type_7 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_39 X1 -> auto___def_42 X2 -> auto___type_7 X1). tauto. exact (rem_1500 X1 X2).
Qed.

Remark rem_1502 : forall X1 X2:term, auto___def_43 X2 X1 -> auto___type_7 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1351 X2 X1 H);  intros.
  apply (rem_1501 X1 X2);  tauto.
Qed.

Remark rem_1503 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1504 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_1503 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1505 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1506 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_1505 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1507 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_1504 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_1506 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1508 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1507 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_crypt_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1509 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___type_12 X1 -> auto___type_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1510 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___type_12 X1 -> auto___type_12 X1). tauto. exact (rem_1509 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1511 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto___def_54 X2 -> auto___def_54 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1512 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___def_54 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_54 X2 -> auto___def_54 X2). tauto. exact (rem_1511 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1513 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> (auto___type_12 X1 /\ auto___def_54 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_1510 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto___def_54 X2). 2:apply (rem_1512 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1514 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1513 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_crypt_2;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1515 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1516 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_1515 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1517 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1518 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_1517 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1519 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_1516 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_1518 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1520 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1519 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_crypt_3;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1521 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___type_11 X1 -> auto___type_11 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1522 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___type_11 X1 -> auto___type_11 X1). tauto. exact (rem_1521 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1523 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1524 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1523 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1525 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> (auto___type_11 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_1522 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1524 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1526 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1525 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1527 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1528 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_1527 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1529 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1530 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_1529 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1531 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_1528 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_1530 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1532 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1531 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_crypt_5;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1533 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1534 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_1533 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1535 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1536 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_1535 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1537 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_1534 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_1536 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1538 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1537 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_crypt_6;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1539 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old (crypt X1 X2) -> auto___type_11 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_79 X1 X2 H);  intros.
  apply (rem_1508 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1514 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1520 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1526 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1532 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1538 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1540 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11.  tauto.
Defined.

Remark rem_1541 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> auto___type_11 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11.  case (rem_1540 epsilon_mtestable_old_p__type_11). clear  epsilon_mtestable_old_p__type_11. intros. apply trans___type_11_bob_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11. tauto.
Defined.

Remark rem_1542 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> auto_testable_old bob -> auto___type_11 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intro H. intros.
  elim (rem_83 H);  intros.
  apply (rem_1541 epsilon_mtestable_old_p__type_11);  tauto.
Defined.

Remark rem_1543 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1544 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1. intros A1.
  cut (auto_testable_old X1). 2:apply (rem_1543 epsilon_mtestable_old_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_1545 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto_testable_old X1 -> auto___type_11 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1. intros A1.
  case (rem_1544 epsilon_mtestable_old_p__type_11 X1 A1). clear  epsilon_mtestable_old_p__type_11 A1. intros. apply trans___type_11_p_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1. tauto.
Defined.

Remark rem_1546 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto_testable_old (p X1) -> auto___type_11 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1. intro H. intros.
  elim (rem_88 X1 H);  intros.
  apply (rem_1545 epsilon_mtestable_old_p__type_11 X1);  tauto.
Defined.

Remark rem_1547 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> auto___type_11 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11.  case (rem_1540 epsilon_mtestable_old_p__type_11). clear  epsilon_mtestable_old_p__type_11. intros. apply trans___type_11_alice_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11. tauto.
Defined.

Remark rem_1548 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> auto_testable_old alice -> auto___type_11 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intro H. intros.
  elim (rem_91 H);  intros.
  apply (rem_1547 epsilon_mtestable_old_p__type_11);  tauto.
Defined.

Remark rem_1549 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto_testable_old X1 -> auto_testable_old X1). tauto. exact (rem_1543 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1550 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_1535 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1551 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> (auto_testable_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_testable_old X1). 2:apply (rem_1549 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_1550 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1552 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_11 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1551 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_dec_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1553 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old (dec X1 X2) -> auto___type_11 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_97 X1 X2 H);  intros.
  apply (rem_1552 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1554 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___def_10 X1 -> auto___def_10 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1555 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_10 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_10 X1). tauto. exact (rem_1554 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1556 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto___def_11 X2 -> auto___def_11 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1557 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_11 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_11 X2 -> auto___def_11 X2). tauto. exact (rem_1556 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1558 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto___def_10 X1 /\ auto___def_11 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_10 X1). 2:apply (rem_1555 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto___def_11 X2). 2:apply (rem_1557 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1559 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___type_11 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1558 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_enc_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1560 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___def_15 X1 -> auto___def_15 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1561 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_15 X1 -> auto___def_15 X1). tauto. exact (rem_1560 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1562 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto___def_16 X2 -> auto___def_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1563 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_16 X2 -> auto___def_16 X2). tauto. exact (rem_1562 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1564 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto___def_15 X1 /\ auto___def_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_15 X1). 2:apply (rem_1561 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto___def_16 X2). 2:apply (rem_1563 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1565 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___type_11 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1564 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_enc_2;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1566 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___def_19 X1 -> auto___def_19 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1567 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_19 X1 -> auto___def_19 X1). tauto. exact (rem_1566 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1568 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto___def_20 X2 -> auto___def_20 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1569 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_20 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_20 X2 -> auto___def_20 X2). tauto. exact (rem_1568 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1570 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto___def_19 X1 /\ auto___def_20 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_19 X1). 2:apply (rem_1567 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto___def_20 X2). 2:apply (rem_1569 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1571 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___type_11 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1570 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_enc_3;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1572 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_11 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1551 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_enc_4;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1573 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old (enc X1 X2) -> auto___type_11 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_118 X1 X2 H);  intros.
  apply (rem_1559 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1565 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1571 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1572 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1574 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1575 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X2. intros A1.
  cut (auto_testable_old X2). 2:apply (rem_1574 epsilon_mtestable_old_p__type_11 X2);  assumption.
  tauto.
Defined.

Remark rem_1576 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old X2 -> auto___type_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1.
  case (rem_1575 epsilon_mtestable_old_p__type_11 X2 A1). clear  epsilon_mtestable_old_p__type_11 A1. intros. apply trans___type_11_cons_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1. tauto.
Defined.

Remark rem_1577 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto___type_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1.
  case (rem_1544 epsilon_mtestable_old_p__type_11 X1 A1). clear  epsilon_mtestable_old_p__type_11 A1. intros. apply trans___type_11_cons_2;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1. tauto.
Defined.

Remark rem_1578 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old (cons X1 X2) -> auto___type_11 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_124 X1 X2 H);  intros.
  apply (rem_1576 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1577 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1579 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto_testable_old X1 -> auto___type_11 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1. intros A1.
  case (rem_1544 epsilon_mtestable_old_p__type_11 X1 A1). clear  epsilon_mtestable_old_p__type_11 A1. intros. apply trans___type_11_s_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1. tauto.
Defined.

Remark rem_1580 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto_testable_old (s X1) -> auto___type_11 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1. intro H. intros.
  elim (rem_127 X1 H);  intros.
  apply (rem_1579 epsilon_mtestable_old_p__type_11 X1);  tauto.
Defined.

Remark rem_1581 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> auto___type_11 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11.  case (rem_1540 epsilon_mtestable_old_p__type_11). clear  epsilon_mtestable_old_p__type_11. intros. apply trans___type_11_i_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11. tauto.
Defined.

Remark rem_1582 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> auto_testable_old i -> auto___type_11 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intro H. intros.
  elim (rem_130 H);  intros.
  apply (rem_1581 epsilon_mtestable_old_p__type_11);  tauto.
Defined.

Remark rem_1583 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> auto___type_11 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11.  case (rem_1540 epsilon_mtestable_old_p__type_11). clear  epsilon_mtestable_old_p__type_11. intros. apply trans___type_11_nil_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11. tauto.
Defined.

Remark rem_1584 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> auto_testable_old nil -> auto___type_11 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intro H. intros.
  elim (rem_133 H);  intros.
  apply (rem_1583 epsilon_mtestable_old_p__type_11);  tauto.
Defined.

Remark rem_1585 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> auto___type_11 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11.  case (rem_1540 epsilon_mtestable_old_p__type_11). clear  epsilon_mtestable_old_p__type_11. intros. apply trans___type_11_server_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11. tauto.
Defined.

Remark rem_1586 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> auto_testable_old server -> auto___type_11 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intro H. intros.
  elim (rem_136 H);  intros.
  apply (rem_1585 epsilon_mtestable_old_p__type_11);  tauto.
Defined.

Remark rem_1587 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___def_60 X1 -> auto___def_60 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1588 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___def_60 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_60 X1 -> auto___def_60 X1). tauto. exact (rem_1587 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1589 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto___type_16 X2 -> auto___type_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1590 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___type_16 X2 -> auto___type_16 X2). tauto. exact (rem_1589 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1591 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> (auto___def_60 X1 /\ auto___type_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_60 X1). 2:apply (rem_1588 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto___type_16 X2). 2:apply (rem_1590 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1592 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1591 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_key_1;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1593 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___def_55 X1 -> auto___def_55 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1594 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_55 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_55 X1 -> auto___def_55 X1). tauto. exact (rem_1593 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1595 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto___def_4 X2 -> auto___def_4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1596 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_4 X2 -> auto___def_4 X2). tauto. exact (rem_1595 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1597 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> (auto___def_55 X1 /\ auto___def_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_55 X1). 2:apply (rem_1594 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto___def_4 X2). 2:apply (rem_1596 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1598 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1597 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_key_2;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1599 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1600 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1599 epsilon_mtestable_old_p__type_11 X1).
Defined.

Remark rem_1601 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1602 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_1601 epsilon_mtestable_old_p__type_11 X2).
Defined.

Remark rem_1603 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1600 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_1602 epsilon_mtestable_old_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1604 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1603 epsilon_mtestable_old_p__type_11 X1 X2 A1 A2). clear  epsilon_mtestable_old_p__type_11 A1 A2. intros. apply trans___type_11_key_3;  tauto.
 clear  epsilon_mtestable_old_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1605 : (forall X:term, auto_testable_old X -> auto___type_11 X)
    -> forall X1 X2:term, auto_testable_old (key X1 X2) -> auto___type_11 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_156 X1 X2 H);  intros.
  apply (rem_1592 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1598 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
  apply (rem_1604 epsilon_mtestable_old_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1606 : forall X1:term, auto_testable_old X1 -> auto___type_11 X1. (* Induct. *)
Proof.
  fix epsilon_mtestable_old_p__type_11 1.
  intro X. case X.
  exact (rem_1548 epsilon_mtestable_old_p__type_11 ).
  exact (rem_1542 epsilon_mtestable_old_p__type_11 ).
  intros X1 X2;  exact (rem_1578 epsilon_mtestable_old_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_1539 epsilon_mtestable_old_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_1553 epsilon_mtestable_old_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_1573 epsilon_mtestable_old_p__type_11 X1 X2).
  exact (rem_1582 epsilon_mtestable_old_p__type_11 ).
  intros X1 X2;  exact (rem_1605 epsilon_mtestable_old_p__type_11 X1 X2).
  exact (rem_1584 epsilon_mtestable_old_p__type_11 ).
  intros X1 X2. intro H. elim (rem_170 X1 X2 H).
  intros X1 X2. intro H. elim (rem_160 X1 X2 H).
  intros X1 X2. intro H. elim (rem_158 X1 X2 H).
  intros X1 X2. intro H. elim (rem_167 X1 X2 H).
  intros X1;  exact (rem_1546 epsilon_mtestable_old_p__type_11 X1).
  intros X1 X2. intro H. elim (rem_165 X1 X2 H).
  intros X1 X2. intro H. elim (rem_164 X1 X2 H).
   intro H. elim (rem_166  H).
   intro H. elim (rem_163  H).
  intros X1 X2. intro H. elim (rem_162 X1 X2 H).
  intros X1 X2. intro H. elim (rem_161 X1 X2 H).
  intros X1;  exact (rem_1580 epsilon_mtestable_old_p__type_11 X1).
  exact (rem_1586 epsilon_mtestable_old_p__type_11 ).
  intros X1 X2. intro H. elim (rem_169 X1 X2 H).
  intros X1 X2. intro H. elim (rem_159 X1 X2 H).
   intro H. elim (rem_168  H).
Qed.

Remark rem_1607 : (forall X:term, auto___type_22 X -> auto___type_20 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1608 : (forall X:term, auto___type_22 X -> auto___type_20 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_22_p__type_20. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1607 epsilon_m__type_22_p__type_20 X1);  assumption.
  tauto.
Defined.

Remark rem_1609 : (forall X:term, auto___type_22 X -> auto___type_20 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_20 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_22_p__type_20. intros X1 X2. intros A1.
  case (rem_1608 epsilon_m__type_22_p__type_20 X1 A1). clear  epsilon_m__type_22_p__type_20 A1. intros. apply trans___type_20_nonceb_current_1;  tauto.
 clear  epsilon_m__type_22_p__type_20 A1. tauto.
Defined.

Remark rem_1610 : forall X1 X2:term, auto___type_22 (nonceb_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1611 : (forall X:term, auto___type_22 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_22 (nonceb_current X1 X2) -> auto___type_20 (nonceb_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_p__type_20. intros X1 X2. intro H. intros.
  elim (rem_1610 X1 X2 H);  intros.
  apply (rem_1609 epsilon_m__type_22_p__type_20 X1 X2);  tauto.
Defined.

Remark rem_1612 : forall X1 X2:term, auto___type_22 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1613 : forall X1 X2:term, auto___type_22 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1614 : auto___type_22 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1615 : forall X1 X2:term, auto___type_22 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1616 : forall X1 X2:term, auto___type_22 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1617 : forall X1 X2:term, auto___type_22 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1618 : forall X1:term, auto___type_22 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1619 : auto___type_22 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1620 : forall X1 X2:term, auto___type_22 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1621 : forall X1 X2:term, auto___type_22 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1622 : auto___type_22 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1623 : auto___type_22 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1624 : forall X1 X2:term, auto___type_22 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1625 : forall X1 X2:term, auto___type_22 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1626 : forall X1 X2:term, auto___type_22 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1627 : forall X1 X2:term, auto___type_22 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1628 : forall X1:term, auto___type_22 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1629 : auto___type_22 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1630 : forall X1 X2:term, auto___type_22 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1631 : auto___type_22 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1632 : auto___type_22 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1633 : auto___type_22 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1634 : forall X1 X2:term, auto___type_22 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1635 : forall X1 X2:term, auto___type_22 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1636 : forall X1:term, auto___type_22 X1 -> auto___type_20 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_22_p__type_20 1.
  intro X. case X.
   intro H. elim (rem_1622  H).
   intro H. elim (rem_1614  H).
  intros X1 X2. intro H. elim (rem_1627 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1612 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1625 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1626 X1 X2 H).
   intro H. elim (rem_1631  H).
  intros X1 X2. intro H. elim (rem_1635 X1 X2 H).
   intro H. elim (rem_1632  H).
  intros X1 X2. intro H. elim (rem_1634 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1615 X1 X2 H).
  intros X1 X2;  exact (rem_1611 epsilon_m__type_22_p__type_20 X1 X2).
  intros X1 X2. intro H. elim (rem_1624 X1 X2 H).
  intros X1. intro H. elim (rem_1618 X1 H).
  intros X1 X2. intro H. elim (rem_1621 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1620 X1 X2 H).
   intro H. elim (rem_1623  H).
   intro H. elim (rem_1619  H).
  intros X1 X2. intro H. elim (rem_1617 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1616 X1 X2 H).
  intros X1. intro H. elim (rem_1628 X1 H).
   intro H. elim (rem_1633  H).
  intros X1 X2. intro H. elim (rem_1630 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1613 X1 X2 H).
   intro H. elim (rem_1629  H).
Qed.

Remark rem_1637 : forall X1 X2:term, auto___type_22 X1 -> auto_knows_current X2 -> auto___type_20 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_20 X1). tauto. exact (rem_1636 X1).
Qed.

Remark rem_1638 : forall X1 X3:term, auto___type_22 X1 -> auto_knows_current X3 -> auto___type_20 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___type_22 X1 -> auto_knows_current X2 -> auto___type_20 X1). tauto. exact (rem_1637 X1 X2).
Qed.

Remark rem_1639 : (forall X:term, auto___def_96 X -> auto___type_20 X)
    -> forall X1:term, auto___type_21 X1 -> auto___type_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1640 : (forall X:term, auto___def_96 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_96_p__type_20. intros X1 X2.
  cut (auto___type_21 X1 -> auto___type_21 X1). tauto. exact (rem_1639 epsilon_m__def_96_p__type_20 X1).
Defined.

Remark rem_1641 : (forall X:term, auto___def_96 X -> auto___type_20 X)
    -> forall X2:term, auto___def_98 X2 -> auto___def_98 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1642 : (forall X:term, auto___def_96 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___def_98 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_96_p__type_20. intros X1 X2.
  cut (auto___def_98 X2 -> auto___def_98 X2). tauto. exact (rem_1641 epsilon_m__def_96_p__type_20 X2).
Defined.

Remark rem_1643 : (forall X:term, auto___def_96 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> (auto___type_21 X1 /\ auto___def_98 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_96_p__type_20. intros X1 X2. intros A1 A2.
  cut (auto___type_21 X1). 2:apply (rem_1640 epsilon_m__def_96_p__type_20 X1 X2);  assumption.
  cut (auto___def_98 X2). 2:apply (rem_1642 epsilon_m__def_96_p__type_20 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1644 : (forall X:term, auto___def_96 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_20 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_96_p__type_20. intros X1 X2. intros A1 A2.
  case (rem_1643 epsilon_m__def_96_p__type_20 X1 X2 A1 A2). clear  epsilon_m__def_96_p__type_20 A1 A2. intros. apply trans___type_20_cons_1;  tauto.
 clear  epsilon_m__def_96_p__type_20 A1 A2. tauto.
Defined.

Remark rem_1645 : forall X1 X2:term, auto___def_96 (cons X1 X2) -> or_1
    (auto___type_21 X1 /\ auto___def_98 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1646 : (forall X:term, auto___def_96 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___def_96 (cons X1 X2) -> auto___type_20 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_96_p__type_20. intros X1 X2. intro H. intros.
  elim (rem_1645 X1 X2 H);  intros.
  apply (rem_1644 epsilon_m__def_96_p__type_20 X1 X2);  tauto.
Defined.

Remark rem_1647 : forall X1 X2:term, auto___def_96 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1648 : forall X1 X2:term, auto___def_96 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1649 : forall X1 X2:term, auto___def_96 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1650 : auto___def_96 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1651 : forall X1 X2:term, auto___def_96 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1652 : forall X1 X2:term, auto___def_96 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1653 : forall X1 X2:term, auto___def_96 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1654 : forall X1:term, auto___def_96 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1655 : auto___def_96 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1656 : forall X1 X2:term, auto___def_96 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1657 : forall X1 X2:term, auto___def_96 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1658 : auto___def_96 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1659 : auto___def_96 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1660 : forall X1 X2:term, auto___def_96 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1661 : forall X1 X2:term, auto___def_96 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1662 : forall X1 X2:term, auto___def_96 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1663 : forall X1:term, auto___def_96 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1664 : auto___def_96 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1665 : forall X1 X2:term, auto___def_96 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1666 : auto___def_96 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1667 : auto___def_96 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1668 : auto___def_96 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1669 : forall X1 X2:term, auto___def_96 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1670 : forall X1 X2:term, auto___def_96 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1671 : forall X1:term, auto___def_96 X1 -> auto___type_20 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_96_p__type_20 1.
  intro X. case X.
   intro H. elim (rem_1658  H).
   intro H. elim (rem_1650  H).
  intros X1 X2;  exact (rem_1646 epsilon_m__def_96_p__type_20 X1 X2).
  intros X1 X2. intro H. elim (rem_1647 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1661 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1662 X1 X2 H).
   intro H. elim (rem_1666  H).
  intros X1 X2. intro H. elim (rem_1670 X1 X2 H).
   intro H. elim (rem_1667  H).
  intros X1 X2. intro H. elim (rem_1669 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1651 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1648 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1660 X1 X2 H).
  intros X1. intro H. elim (rem_1654 X1 H).
  intros X1 X2. intro H. elim (rem_1657 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1656 X1 X2 H).
   intro H. elim (rem_1659  H).
   intro H. elim (rem_1655  H).
  intros X1 X2. intro H. elim (rem_1653 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1652 X1 X2 H).
  intros X1. intro H. elim (rem_1663 X1 H).
   intro H. elim (rem_1668  H).
  intros X1 X2. intro H. elim (rem_1665 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1649 X1 X2 H).
   intro H. elim (rem_1664  H).
Qed.

Remark rem_1672 : forall X1 X2:term, auto___def_96 X1 -> auto_knows_current X2 -> auto___type_20 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_96 X1 -> auto___type_20 X1). tauto. exact (rem_1671 X1).
Qed.

Remark rem_1673 : forall X1 X3:term, auto___def_96 X1 -> auto_knows_current X3 -> auto___type_20 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_96 X1 -> auto_knows_current X2 -> auto___type_20 X1). tauto. exact (rem_1672 X1 X2).
Qed.

Remark rem_1674 : (forall X:term, auto___def_84 X -> auto___type_20 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1675 : (forall X:term, auto___def_84 X -> auto___type_20 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_84_p__type_20. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_1674 epsilon_m__def_84_p__type_20 X1).
Defined.

Remark rem_1676 : (forall X:term, auto___def_84 X -> auto___type_20 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1677 : (forall X:term, auto___def_84 X -> auto___type_20 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_84_p__type_20. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_1676 epsilon_m__def_84_p__type_20 X2).
Defined.

Remark rem_1678 : (forall X:term, auto___def_84 X -> auto___type_20 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_84_p__type_20. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_1675 epsilon_m__def_84_p__type_20 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_1677 epsilon_m__def_84_p__type_20 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1679 : (forall X:term, auto___def_84 X -> auto___type_20 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_20 (noncea_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_84_p__type_20. intros X1 X2. intros A1 A2.
  case (rem_1678 epsilon_m__def_84_p__type_20 X1 X2 A1 A2). clear  epsilon_m__def_84_p__type_20 A1 A2. intros. apply trans___type_20_noncea_current_1;  tauto.
 clear  epsilon_m__def_84_p__type_20 A1 A2. tauto.
Defined.

Remark rem_1680 : forall X1 X2:term, auto___def_84 (noncea_current X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1681 : (forall X:term, auto___def_84 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___def_84 (noncea_current X1 X2) -> auto___type_20 (noncea_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_p__type_20. intros X1 X2. intro H. intros.
  elim (rem_1680 X1 X2 H);  intros.
  apply (rem_1679 epsilon_m__def_84_p__type_20 X1 X2);  tauto.
Defined.

Remark rem_1682 : forall X1 X2:term, auto___def_84 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1683 : forall X1 X2:term, auto___def_84 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1684 : forall X1 X2:term, auto___def_84 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1685 : auto___def_84 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1686 : forall X1 X2:term, auto___def_84 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1687 : forall X1 X2:term, auto___def_84 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1688 : forall X1 X2:term, auto___def_84 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1689 : forall X1:term, auto___def_84 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1690 : auto___def_84 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1691 : forall X1 X2:term, auto___def_84 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1692 : forall X1 X2:term, auto___def_84 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1693 : auto___def_84 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1694 : auto___def_84 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1695 : forall X1 X2:term, auto___def_84 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1696 : forall X1 X2:term, auto___def_84 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1697 : forall X1 X2:term, auto___def_84 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1698 : forall X1 X2:term, auto___def_84 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1699 : forall X1:term, auto___def_84 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1700 : auto___def_84 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1701 : forall X1 X2:term, auto___def_84 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1702 : auto___def_84 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1703 : auto___def_84 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1704 : auto___def_84 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1705 : forall X1 X2:term, auto___def_84 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1706 : forall X1:term, auto___def_84 X1 -> auto___type_20 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_84_p__type_20 1.
  intro X. case X.
   intro H. elim (rem_1693  H).
   intro H. elim (rem_1685  H).
  intros X1 X2. intro H. elim (rem_1698 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1682 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1696 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1697 X1 X2 H).
   intro H. elim (rem_1702  H).
  intros X1 X2. intro H. elim (rem_1705 X1 X2 H).
   intro H. elim (rem_1703  H).
  intros X1 X2;  exact (rem_1681 epsilon_m__def_84_p__type_20 X1 X2).
  intros X1 X2. intro H. elim (rem_1686 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1683 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1695 X1 X2 H).
  intros X1. intro H. elim (rem_1689 X1 H).
  intros X1 X2. intro H. elim (rem_1692 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1691 X1 X2 H).
   intro H. elim (rem_1694  H).
   intro H. elim (rem_1690  H).
  intros X1 X2. intro H. elim (rem_1688 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1687 X1 X2 H).
  intros X1. intro H. elim (rem_1699 X1 H).
   intro H. elim (rem_1704  H).
  intros X1 X2. intro H. elim (rem_1701 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1684 X1 X2 H).
   intro H. elim (rem_1700  H).
Qed.

Remark rem_1707 : forall X1 X2:term, auto___def_84 X1 -> auto_knows_current X2 -> auto___type_20 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_84 X1 -> auto___type_20 X1). tauto. exact (rem_1706 X1).
Qed.

Remark rem_1708 : forall X1 X3:term, auto___def_84 X1 -> auto_knows_current X3 -> auto___type_20 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_84 X1 -> auto_knows_current X2 -> auto___type_20 X1). tauto. exact (rem_1707 X1 X2).
Qed.

Remark rem_1709 : forall X1 X2 X3:term, auto___def_87 X1 X2 X3 -> or_3
    (auto___type_22 X2 /\ auto_knows_current X3)
    (auto___def_96 X2 /\ auto_knows_current X3)
    (auto___def_84 X2 /\ auto_knows_current X3)
.
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_1710 : forall X1 X2 X3:term, auto___def_87 X2 X1 X3 -> auto___type_20 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1709 X2 X1 X3 H);  intros.
  apply (rem_1638 X1 X3);  tauto.
  apply (rem_1673 X1 X3);  tauto.
  apply (rem_1708 X1 X3);  tauto.
Qed.

Remark rem_1711 : auto___def_55 prv. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_55_prv_1;  tauto.
 tauto.
Qed.

Remark rem_1712 : forall X1 X2:term, auto___def_49 X2 X1 -> auto___type_10 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_10_1. Qed.

Remark rem_1713 : forall X1 X3:term, auto___def_75 X3 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_1714 : forall X1 X3:term, auto___def_75 X3 -> auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1713 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_1715 : forall X1 X2 X3:term, auto___def_75 X3 -> auto_knows_current X1 -> auto___def_77 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_1714 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_77_r_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1716 : forall X1 X3:term, auto___def_79 X3 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_1717 : forall X1 X3:term, auto___def_79 X3 -> auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1716 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_1718 : forall X1 X2 X3:term, auto___def_79 X3 -> auto_knows_current X1 -> auto___def_77 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_1717 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_77_r_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1719 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current.  tauto.
Defined.

Remark rem_1720 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current.  case (rem_1719 epsilon_magent_pknows_current). clear  epsilon_magent_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_magent_pknows_current. tauto.
Defined.

Remark rem_1721 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_agent bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intro H. intros.
  elim (rem_1083 H);  intros.
  apply (rem_1720 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_1722 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current.  case (rem_1719 epsilon_magent_pknows_current). clear  epsilon_magent_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_magent_pknows_current. tauto.
Defined.

Remark rem_1723 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_agent alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intro H. intros.
  elim (rem_1086 H);  intros.
  apply (rem_1722 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_1724 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current.  case (rem_1719 epsilon_magent_pknows_current). clear  epsilon_magent_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_magent_pknows_current. tauto.
Defined.

Remark rem_1725 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_agent i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intro H. intros.
  elim (rem_1089 H);  intros.
  apply (rem_1724 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_1726 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current.  case (rem_1719 epsilon_magent_pknows_current). clear  epsilon_magent_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_magent_pknows_current. tauto.
Defined.

Remark rem_1727 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_agent server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intro H. intros.
  elim (rem_1092 H);  intros.
  apply (rem_1726 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_1728 : forall X1:term, auto_agent X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_magent_pknows_current 1.
  intro X. case X.
  exact (rem_1723 epsilon_magent_pknows_current ).
  exact (rem_1721 epsilon_magent_pknows_current ).
  intros X1 X2. intro H. elim (rem_1108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1094 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1106 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1107 X1 X2 H).
  exact (rem_1725 epsilon_magent_pknows_current ).
  intros X1 X2. intro H. elim (rem_1114 X1 X2 H).
   intro H. elim (rem_1112  H).
  intros X1 X2. intro H. elim (rem_1113 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1097 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1105 X1 X2 H).
  intros X1. intro H. elim (rem_1100 X1 H).
  intros X1 X2. intro H. elim (rem_1103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1102 X1 X2 H).
   intro H. elim (rem_1104  H).
   intro H. elim (rem_1101  H).
  intros X1 X2. intro H. elim (rem_1099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1098 X1 X2 H).
  intros X1. intro H. elim (rem_1109 X1 H).
  exact (rem_1727 epsilon_magent_pknows_current ).
  intros X1 X2. intro H. elim (rem_1111 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1096 X1 X2 H).
   intro H. elim (rem_1110  H).
Qed.

Remark rem_1729 : forall X1 X2 X3:term, auto___def_71 X3 -> auto_agent X2 -> auto_agent X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X1 -> auto_knows_current X1). tauto. exact (rem_1728 X1).
Qed.

Remark rem_1730 : forall X1 X2 X3:term, auto___def_71 X3 -> auto_agent X2 -> auto_agent X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_1729 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1731 : forall X1 X2 X3:term, auto___def_71 X3 -> auto_agent X2 -> auto_agent X1 -> auto___def_77 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1730 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_77_r_current_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1732 : forall X1 X2 X3:term, auto_agent X2 -> auto___def_71 X3 -> auto_agent X1 -> auto___def_77 (r_current X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_71 X3 -> auto_agent X2 -> auto_agent X1 -> auto___def_77 (r_current X1 X2)). tauto. exact (rem_1731 X1 X2 X3).
Qed.

Remark rem_1733 : forall X1 X2 X3:term, auto___def_74 X2 X3 X1 -> auto___def_77 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_830 X2 X3 X1 H);  intros.
  apply (rem_1715 X1 X2 X3);  tauto.
  apply (rem_1718 X1 X2 X3);  tauto.
  apply (rem_1732 X1 X2 X3);  tauto.
Qed.

Remark rem_1734 : forall X1 X2:term, auto___def_47 X2 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1.
  tauto.
Qed.

Remark rem_1735 : forall X1 X2:term, auto___def_47 X2 X1 -> auto___def_48 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1.
  case (rem_1734 X1 X2 A1). clear  A1. intros. apply trans___def_48_r_old_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_1736 : auto___def_9 nil. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_9_nil_1;  tauto.
 tauto.
Qed.

Remark rem_1737 : auto___def_114 prv. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_114_prv_1;  tauto.
 tauto.
Qed.

Remark rem_1738 : auto___def_112 pub. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_112_pub_1;  tauto.
 tauto.
Qed.

Remark rem_1739 : (forall X:term, auto___def_62 X -> auto___def_66 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_62_p__def_66.  tauto.
Defined.

Remark rem_1740 : (forall X:term, auto___def_62 X -> auto___def_66 X)
    -> auto___def_66 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_62_p__def_66.  case (rem_1739 epsilon_m__def_62_p__def_66). clear  epsilon_m__def_62_p__def_66. intros. apply trans___def_66_i_1;  tauto.
 clear  epsilon_m__def_62_p__def_66. tauto.
Defined.

Remark rem_1741 : (forall X:term, auto___def_62 X -> auto___def_66 X)
    -> auto___def_62 i -> auto___def_66 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_p__def_66. intro H. intros.
  elim (rem_312 H);  intros.
  apply (rem_1740 epsilon_m__def_62_p__def_66);  tauto.
Defined.

Remark rem_1742 : forall X1:term, auto___def_62 X1 -> auto___def_66 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_62_p__def_66 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_1741 epsilon_m__def_62_p__def_66 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_1743 : forall X1:term, auto___def_61 pub -> auto___def_62 X1 -> auto___def_66 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1.
  cut (auto___def_62 X1 -> auto___def_66 X1). tauto. exact (rem_1742 X1).
Qed.

Remark rem_1744 : (forall X:term, auto_agent X -> auto___def_66 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p__def_66.  tauto.
Defined.

Remark rem_1745 : (forall X:term, auto_agent X -> auto___def_66 X)
    -> auto___def_66 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__def_66.  case (rem_1744 epsilon_magent_p__def_66). clear  epsilon_magent_p__def_66. intros. apply trans___def_66_bob_1;  tauto.
 clear  epsilon_magent_p__def_66. tauto.
Defined.

Remark rem_1746 : (forall X:term, auto_agent X -> auto___def_66 X)
    -> auto_agent bob -> auto___def_66 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__def_66. intro H. intros.
  elim (rem_1083 H);  intros.
  apply (rem_1745 epsilon_magent_p__def_66);  tauto.
Defined.

Remark rem_1747 : (forall X:term, auto_agent X -> auto___def_66 X)
    -> auto___def_66 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__def_66.  case (rem_1744 epsilon_magent_p__def_66). clear  epsilon_magent_p__def_66. intros. apply trans___def_66_alice_1;  tauto.
 clear  epsilon_magent_p__def_66. tauto.
Defined.

Remark rem_1748 : (forall X:term, auto_agent X -> auto___def_66 X)
    -> auto_agent alice -> auto___def_66 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__def_66. intro H. intros.
  elim (rem_1086 H);  intros.
  apply (rem_1747 epsilon_magent_p__def_66);  tauto.
Defined.

Remark rem_1749 : (forall X:term, auto_agent X -> auto___def_66 X)
    -> auto___def_66 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__def_66.  case (rem_1744 epsilon_magent_p__def_66). clear  epsilon_magent_p__def_66. intros. apply trans___def_66_i_1;  tauto.
 clear  epsilon_magent_p__def_66. tauto.
Defined.

Remark rem_1750 : (forall X:term, auto_agent X -> auto___def_66 X)
    -> auto_agent i -> auto___def_66 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__def_66. intro H. intros.
  elim (rem_1089 H);  intros.
  apply (rem_1749 epsilon_magent_p__def_66);  tauto.
Defined.

Remark rem_1751 : (forall X:term, auto_agent X -> auto___def_66 X)
    -> auto___def_66 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__def_66.  case (rem_1744 epsilon_magent_p__def_66). clear  epsilon_magent_p__def_66. intros. apply trans___def_66_server_1;  tauto.
 clear  epsilon_magent_p__def_66. tauto.
Defined.

Remark rem_1752 : (forall X:term, auto_agent X -> auto___def_66 X)
    -> auto_agent server -> auto___def_66 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__def_66. intro H. intros.
  elim (rem_1092 H);  intros.
  apply (rem_1751 epsilon_magent_p__def_66);  tauto.
Defined.

Remark rem_1753 : forall X1:term, auto_agent X1 -> auto___def_66 X1. (* Induct. *)
Proof.
  fix epsilon_magent_p__def_66 1.
  intro X. case X.
  exact (rem_1748 epsilon_magent_p__def_66 ).
  exact (rem_1746 epsilon_magent_p__def_66 ).
  intros X1 X2. intro H. elim (rem_1108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1094 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1106 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1107 X1 X2 H).
  exact (rem_1750 epsilon_magent_p__def_66 ).
  intros X1 X2. intro H. elim (rem_1114 X1 X2 H).
   intro H. elim (rem_1112  H).
  intros X1 X2. intro H. elim (rem_1113 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1097 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1105 X1 X2 H).
  intros X1. intro H. elim (rem_1100 X1 H).
  intros X1 X2. intro H. elim (rem_1103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1102 X1 X2 H).
   intro H. elim (rem_1104  H).
   intro H. elim (rem_1101  H).
  intros X1 X2. intro H. elim (rem_1099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1098 X1 X2 H).
  intros X1. intro H. elim (rem_1109 X1 H).
  exact (rem_1752 epsilon_magent_p__def_66 ).
  intros X1 X2. intro H. elim (rem_1111 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1096 X1 X2 H).
   intro H. elim (rem_1110  H).
Qed.

Remark rem_1754 : forall X1:term, auto___def_51 pub -> auto_agent X1 -> auto___def_66 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1.
  cut (auto_agent X1 -> auto___def_66 X1). tauto. exact (rem_1753 X1).
Qed.

Remark rem_1755 : (forall X:term, auto___def_13 X -> auto___def_66 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1756 : (forall X:term, auto___def_13 X -> auto___def_66 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_13_p__def_66. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_1755 epsilon_m__def_13_p__def_66 X1).
Defined.

Remark rem_1757 : (forall X:term, auto___def_13 X -> auto___def_66 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1758 : (forall X:term, auto___def_13 X -> auto___def_66 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_13_p__def_66. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_1757 epsilon_m__def_13_p__def_66 X2).
Defined.

Remark rem_1759 : (forall X:term, auto___def_13 X -> auto___def_66 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_13_p__def_66. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_1756 epsilon_m__def_13_p__def_66 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_1758 epsilon_m__def_13_p__def_66 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1760 : (forall X:term, auto___def_13 X -> auto___def_66 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___def_66 (session_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_13_p__def_66. intros X1 X2. intros A1 A2.
  case (rem_1759 epsilon_m__def_13_p__def_66 X1 X2 A1 A2). clear  epsilon_m__def_13_p__def_66 A1 A2. intros. apply trans___def_66_session_old_1;  tauto.
 clear  epsilon_m__def_13_p__def_66 A1 A2. tauto.
Defined.

Remark rem_1761 : forall X1 X2:term, auto___def_13 (session_old X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1762 : (forall X:term, auto___def_13 X -> auto___def_66 X)
    -> forall X1 X2:term, auto___def_13 (session_old X1 X2) -> auto___def_66 (session_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_13_p__def_66. intros X1 X2. intro H. intros.
  elim (rem_1761 X1 X2 H);  intros.
  apply (rem_1760 epsilon_m__def_13_p__def_66 X1 X2);  tauto.
Defined.

Remark rem_1763 : forall X1 X2:term, auto___def_13 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1764 : forall X1 X2:term, auto___def_13 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1765 : auto___def_13 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1766 : forall X1 X2:term, auto___def_13 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1767 : forall X1 X2:term, auto___def_13 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1768 : forall X1 X2:term, auto___def_13 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1769 : forall X1:term, auto___def_13 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1770 : auto___def_13 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1771 : forall X1 X2:term, auto___def_13 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1772 : forall X1 X2:term, auto___def_13 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1773 : auto___def_13 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1774 : auto___def_13 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1775 : forall X1 X2:term, auto___def_13 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1776 : forall X1 X2:term, auto___def_13 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1777 : forall X1 X2:term, auto___def_13 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1778 : forall X1 X2:term, auto___def_13 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1779 : forall X1:term, auto___def_13 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1780 : auto___def_13 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1781 : forall X1 X2:term, auto___def_13 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1782 : auto___def_13 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1783 : auto___def_13 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1784 : auto___def_13 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1785 : forall X1 X2:term, auto___def_13 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1786 : forall X1 X2:term, auto___def_13 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1787 : forall X1:term, auto___def_13 X1 -> auto___def_66 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_13_p__def_66 1.
  intro X. case X.
   intro H. elim (rem_1773  H).
   intro H. elim (rem_1765  H).
  intros X1 X2. intro H. elim (rem_1778 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1763 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1776 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1777 X1 X2 H).
   intro H. elim (rem_1782  H).
  intros X1 X2. intro H. elim (rem_1786 X1 X2 H).
   intro H. elim (rem_1783  H).
  intros X1 X2. intro H. elim (rem_1785 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1766 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1764 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1775 X1 X2 H).
  intros X1. intro H. elim (rem_1769 X1 H).
  intros X1 X2. intro H. elim (rem_1772 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1771 X1 X2 H).
   intro H. elim (rem_1774  H).
   intro H. elim (rem_1770  H).
  intros X1 X2. intro H. elim (rem_1768 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1767 X1 X2 H).
  intros X1. intro H. elim (rem_1779 X1 H).
   intro H. elim (rem_1784  H).
  intros X1 X2. intro H. elim (rem_1781 X1 X2 H).
  intros X1 X2;  exact (rem_1762 epsilon_m__def_13_p__def_66 X1 X2).
   intro H. elim (rem_1780  H).
Qed.

Remark rem_1788 : forall X1:term, auto___def_12 pub -> auto___def_13 X1 -> auto___def_66 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1.
  cut (auto___def_13 X1 -> auto___def_66 X1). tauto. exact (rem_1787 X1).
Qed.

Remark rem_1789 : forall X1:term, auto_knows_current (key pub X1) -> auto___def_66 X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_1066 pub X1 H);  intros.
  apply (rem_1743 X1);  tauto.
  apply (rem_1754 X1);  tauto.
  apply (rem_1788 X1);  tauto.
Qed.

Remark rem_1790 : forall X1 X2:term, auto_agent X2 -> auto_agent X1 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_923 X1).
Qed.

Remark rem_1791 : forall X1 X2:term, auto_agent X2 -> auto_agent X1 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_925 X2).
Qed.

Remark rem_1792 : forall X1 X2:term, auto_agent X2 -> auto_agent X1 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_1790 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_1791 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1793 : forall X1 X2:term, auto_agent X2 -> auto_agent X1 -> auto___def_13 (session_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1792 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_13_session_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1794 : forall X1 X3:term, auto___def_19 X3 -> auto_knows_old X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_1795 : forall X1 X3:term, auto___def_19 X3 -> auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_1794 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_1796 : forall X1 X2 X3:term, auto___def_19 X3 -> auto_knows_old X1 -> auto___def_17 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_1795 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_17_r_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1797 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old.  tauto.
Defined.

Remark rem_1798 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_knows_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old.  case (rem_1797 epsilon_magent_pknows_old). clear  epsilon_magent_pknows_old. intros. apply trans_knows_old_bob_1;  tauto.
 clear  epsilon_magent_pknows_old. tauto.
Defined.

Remark rem_1799 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_agent bob -> auto_knows_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intro H. intros.
  elim (rem_1083 H);  intros.
  apply (rem_1798 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_1800 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_knows_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old.  case (rem_1797 epsilon_magent_pknows_old). clear  epsilon_magent_pknows_old. intros. apply trans_knows_old_alice_1;  tauto.
 clear  epsilon_magent_pknows_old. tauto.
Defined.

Remark rem_1801 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_agent alice -> auto_knows_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intro H. intros.
  elim (rem_1086 H);  intros.
  apply (rem_1800 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_1802 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_knows_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old.  case (rem_1797 epsilon_magent_pknows_old). clear  epsilon_magent_pknows_old. intros. apply trans_knows_old_i_1;  tauto.
 clear  epsilon_magent_pknows_old. tauto.
Defined.

Remark rem_1803 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_agent i -> auto_knows_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intro H. intros.
  elim (rem_1089 H);  intros.
  apply (rem_1802 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_1804 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_knows_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old.  case (rem_1797 epsilon_magent_pknows_old). clear  epsilon_magent_pknows_old. intros. apply trans_knows_old_server_1;  tauto.
 clear  epsilon_magent_pknows_old. tauto.
Defined.

Remark rem_1805 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_agent server -> auto_knows_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intro H. intros.
  elim (rem_1092 H);  intros.
  apply (rem_1804 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_1806 : forall X1:term, auto_agent X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_magent_pknows_old 1.
  intro X. case X.
  exact (rem_1801 epsilon_magent_pknows_old ).
  exact (rem_1799 epsilon_magent_pknows_old ).
  intros X1 X2. intro H. elim (rem_1108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1094 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1106 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1107 X1 X2 H).
  exact (rem_1803 epsilon_magent_pknows_old ).
  intros X1 X2. intro H. elim (rem_1114 X1 X2 H).
   intro H. elim (rem_1112  H).
  intros X1 X2. intro H. elim (rem_1113 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1097 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1105 X1 X2 H).
  intros X1. intro H. elim (rem_1100 X1 H).
  intros X1 X2. intro H. elim (rem_1103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1102 X1 X2 H).
   intro H. elim (rem_1104  H).
   intro H. elim (rem_1101  H).
  intros X1 X2. intro H. elim (rem_1099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1098 X1 X2 H).
  intros X1. intro H. elim (rem_1109 X1 H).
  exact (rem_1805 epsilon_magent_pknows_old ).
  intros X1 X2. intro H. elim (rem_1111 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1096 X1 X2 H).
   intro H. elim (rem_1110  H).
Qed.

Remark rem_1807 : forall X1 X2 X3:term, auto___def_10 X3 -> auto_agent X2 -> auto_agent X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X1 -> auto_knows_old X1). tauto. exact (rem_1806 X1).
Qed.

Remark rem_1808 : forall X1 X2 X3:term, auto___def_10 X3 -> auto_agent X2 -> auto_agent X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_1807 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1809 : forall X1 X2 X3:term, auto___def_10 X3 -> auto_agent X2 -> auto_agent X1 -> auto___def_17 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1808 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_17_r_old_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1810 : forall X1 X2 X3:term, auto_agent X2 -> auto___def_10 X3 -> auto_agent X1 -> auto___def_17 (r_old X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_10 X3 -> auto_agent X2 -> auto_agent X1 -> auto___def_17 (r_old X1 X2)). tauto. exact (rem_1809 X1 X2 X3).
Qed.

Remark rem_1811 : forall X1 X3:term, auto___def_15 X3 -> auto_knows_old X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_1812 : forall X1 X3:term, auto___def_15 X3 -> auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X3. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_1811 X1 X3);  assumption.
  tauto.
Qed.

Remark rem_1813 : forall X1 X2 X3:term, auto___def_15 X3 -> auto_knows_old X1 -> auto___def_17 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_1812 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_17_r_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1814 : forall X1 X2 X3:term, auto___def_14 X1 X2 X3 -> or_3
    (auto___def_19 X2 /\ auto_knows_old X3)
    (auto_agent X1 /\ auto___def_10 X2 /\ auto_agent X3)
    (auto___def_15 X2 /\ auto_knows_old X3)
.
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_1815 : forall X1 X2 X3:term, auto___def_14 X2 X3 X1 -> auto___def_17 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1814 X2 X3 X1 H);  intros.
  apply (rem_1796 X1 X2 X3);  tauto.
  apply (rem_1810 X1 X2 X3);  tauto.
  apply (rem_1813 X1 X2 X3);  tauto.
Qed.

Remark rem_1816 : auto___def_45 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_45_sym_1;  tauto.
 tauto.
Qed.

Remark rem_1817 : forall X1 X2:term, auto_agent X2 -> auto_agent X1 -> auto___def_72 (passwd_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1792 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_72_passwd_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1818 : forall X1 X2:term, auto___def_10 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1819 : forall X1 X2 X3:term, auto___def_10 (crypt X1 (key pub (session_old X3 X2))) -> auto___def_11 (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1818 X1 (key pub (session_old X3 X2)) H);  intros.
Qed.

Remark rem_1820 : forall X1 X2 X3:term, auto___def_17 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_old X3 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_1302 X1).
Qed.

Remark rem_1821 : forall X1 X2 X3:term, auto___def_17 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_925 X2).
Qed.

Remark rem_1822 : forall X1 X2 X3:term, auto___def_17 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_old X3 -> auto_agent X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X3 -> auto_agent X3). tauto. exact (rem_1269 X3).
Qed.

Remark rem_1823 : forall X1 X2 X3:term, auto___def_17 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_old X3 -> (auto___def_17 X1 /\ auto_agent X2 /\ auto_agent X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto___def_17 X1). 2:apply (rem_1820 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_1821 X1 X2 X3);  assumption.
  cut (auto_agent X3). 2:apply (rem_1822 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1824 : forall X1 X2 X3:term, auto___def_17 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_old X3 -> auto___def_23 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_1823 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_23_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_1825 : forall X1 X2 X3:term, auto_agent X3 -> auto_agent X2 -> auto___def_17 X1 -> auto_knows_old X3 -> auto___def_23 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_17 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_old X3 -> auto___def_23 X1 X2 X3). tauto. exact (rem_1824 X1 X2 X3).
Qed.

Remark rem_1826 : forall X1 X2 X3:term, auto___def_13 (session_old X3 X2) -> auto___def_17 X1 -> auto_knows_old X3 -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1761 X3 X2 H);  intros.
  apply (rem_1825 X1 X2 X3);  tauto.
Qed.

Remark rem_1827 : forall X1 X2 X3:term, auto___def_12 pub -> auto___def_13 (session_old X3 X2) -> auto___def_17 X1 -> auto_knows_old X3 -> auto___def_23 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_13 (session_old X3 X2) -> auto___def_17 X1 -> auto_knows_old X3 -> auto___def_23 X1 X2 X3). tauto.
  exact (rem_1826 X1 X2 X3).
Qed.

Remark rem_1828 : forall X1 X2 X3:term, auto___def_17 X1 -> auto___type_2 (key pub (session_old X3 X2)) -> auto_knows_old X3 -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1399 pub (session_old X3 X2) H);  intros.
  apply (rem_1827 X1 X2 X3);  tauto.
Qed.

Remark rem_1829 : forall X1 X2 X3:term, auto_knows_old X3 -> auto___def_17 X1 -> auto___type_2 (key pub (session_old X3 X2)) -> auto___def_23 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_17 X1 -> auto___type_2 (key pub (session_old X3 X2)) -> auto_knows_old X3 -> auto___def_23 X1 X2 X3). tauto. exact (rem_1828 X1 X2 X3).
Qed.

Remark rem_1830 : forall X1 X2:term, auto___def_16 (passwd_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1831 : forall X1 X2 X3:term, auto___def_16 (passwd_old X3 X2) -> auto___def_17 X1 -> auto___type_2 (key pub (session_old X3 X2)) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1830 X3 X2 H);  intros.
  apply (rem_1829 X1 X2 X3);  tauto.
Qed.

Remark rem_1832 : forall X1 X2 X3:term, auto___def_17 X1 -> auto___type_2 (key pub (session_old X3 X2)) -> auto___def_16 (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_16 (passwd_old X3 X2) -> auto___def_17 X1 -> auto___type_2 (key pub (session_old X3 X2)) -> auto___def_23 X1 X2 X3). tauto. exact (rem_1831 X1 X2 X3).
Qed.

Remark rem_1833 : forall X1 X2:term, auto___def_15 (crypt X1 X2) -> or_1
    (auto___def_17 X1 /\ auto___type_2 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1834 : forall X1 X2 X3:term, auto___def_15 (crypt X1 (key pub (session_old X3 X2))) -> auto___def_16 (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1833 X1 (key pub (session_old X3 X2)) H);  intros.
  apply (rem_1832 X1 X2 X3);  tauto.
Qed.

Remark rem_1835 : forall X1 X2 X3:term, auto___def_21 X1 -> auto___def_22 (key pub (session_old X3 X2)) -> auto_knows_old X3 -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1407 pub (session_old X3 X2) H);  intros.
Qed.

Remark rem_1836 : forall X1 X2 X3:term, auto_knows_old X3 -> auto___def_21 X1 -> auto___def_22 (key pub (session_old X3 X2)) -> auto___def_23 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_21 X1 -> auto___def_22 (key pub (session_old X3 X2)) -> auto_knows_old X3 -> auto___def_23 X1 X2 X3). tauto. exact (rem_1835 X1 X2 X3).
Qed.

Remark rem_1837 : forall X1 X2:term, auto___def_20 (passwd_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1838 : forall X1 X2 X3:term, auto___def_20 (passwd_old X3 X2) -> auto___def_21 X1 -> auto___def_22 (key pub (session_old X3 X2)) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1837 X3 X2 H);  intros.
  apply (rem_1836 X1 X2 X3);  tauto.
Qed.

Remark rem_1839 : forall X1 X2 X3:term, auto___def_21 X1 -> auto___def_22 (key pub (session_old X3 X2)) -> auto___def_20 (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_20 (passwd_old X3 X2) -> auto___def_21 X1 -> auto___def_22 (key pub (session_old X3 X2)) -> auto___def_23 X1 X2 X3). tauto. exact (rem_1838 X1 X2 X3).
Qed.

Remark rem_1840 : forall X1 X2:term, auto___def_19 (crypt X1 X2) -> or_1
    (auto___def_21 X1 /\ auto___def_22 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1841 : forall X1 X2 X3:term, auto___def_19 (crypt X1 (key pub (session_old X3 X2))) -> auto___def_20 (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1840 X1 (key pub (session_old X3 X2)) H);  intros.
  apply (rem_1839 X1 X2 X3);  tauto.
Qed.

Remark rem_1842 : forall X1 X2 X3:term, auto___def_36 X1 -> auto___def_42 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_396 X3 X2 H);  intros.
Qed.

Remark rem_1843 : forall X1 X2 X3:term, auto___def_36 X1 -> auto___def_41 pub -> auto___def_42 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_36 X1 -> auto___def_42 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3). tauto.
  exact (rem_1842 X1 X2 X3).
Qed.

Remark rem_1844 : forall X1 X2 X3:term, auto___def_41 pub -> auto___def_42 (session_old X3 X2) -> auto___def_36 X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_36 X1 -> auto___def_41 pub -> auto___def_42 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3). tauto. exact (rem_1843 X1 X2 X3).
Qed.

Remark rem_1845 : forall X1 X2 X3:term, auto___def_36 X1 -> auto___def_37 (key pub (session_old X3 X2)) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1405 pub (session_old X3 X2) H);  intros.
  apply (rem_1844 X1 X2 X3);  tauto.
Qed.

Remark rem_1846 : forall X1 X2 X3:term, auto___def_24 X1 -> auto___type_4 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_523 X3 X2 H);  intros.
Qed.

Remark rem_1847 : forall X1 X2 X3:term, auto___def_24 X1 -> auto___def_26 pub -> auto___type_4 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_24 X1 -> auto___type_4 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3). tauto.
  exact (rem_1846 X1 X2 X3).
Qed.

Remark rem_1848 : forall X1 X2 X3:term, auto___def_26 pub -> auto___type_4 (session_old X3 X2) -> auto___def_24 X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_24 X1 -> auto___def_26 pub -> auto___type_4 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3). tauto. exact (rem_1847 X1 X2 X3).
Qed.

Remark rem_1849 : forall X1 X2 X3:term, auto___def_24 X1 -> auto___def_25 (key pub (session_old X3 X2)) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1444 pub (session_old X3 X2) H);  intros.
  apply (rem_1848 X1 X2 X3);  tauto.
Qed.

Remark rem_1850 : forall X1 X2 X3:term, auto___type_7 X1 -> auto___type_8 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_460 X3 X2 H);  intros.
Qed.

Remark rem_1851 : forall X1 X2 X3:term, auto___def_45 pub -> auto___type_7 X1 -> auto___type_8 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___type_7 X1 -> auto___type_8 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3). tauto.
  exact (rem_1850 X1 X2 X3).
Qed.

Remark rem_1852 : forall X1 X2 X3:term, auto___def_45 pub -> auto___type_8 (session_old X3 X2) -> auto___type_7 X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_45 pub -> auto___type_7 X1 -> auto___type_8 (session_old X3 X2) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3). tauto. exact (rem_1851 X1 X2 X3).
Qed.

Remark rem_1853 : forall X1 X2 X3:term, auto___def_44 (key pub (session_old X3 X2)) -> auto___type_7 X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1450 pub (session_old X3 X2) H);  intros.
  apply (rem_1852 X1 X2 X3);  tauto.
Qed.

Remark rem_1854 : forall X1 X2 X3:term, auto___type_7 X1 -> auto___def_44 (key pub (session_old X3 X2)) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_44 (key pub (session_old X3 X2)) -> auto___type_7 X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3). tauto. exact (rem_1853 X1 X2 X3).
Qed.

Remark rem_1855 : forall X1 X2 X3:term, auto___def_62 (session_old X3 X2) -> auto_knows_old X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_316 X3 X2 H);  intros.
Qed.

Remark rem_1856 : forall X1 X2 X3:term, auto___def_61 pub -> auto___def_62 (session_old X3 X2) -> auto_knows_old X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_62 (session_old X3 X2) -> auto_knows_old X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3). tauto.
  exact (rem_1855 X1 X2 X3).
Qed.

Remark rem_1857 : forall X1 X2 X3:term, auto_agent (session_old X3 X2) -> auto_knows_old X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1096 X3 X2 H);  intros.
Qed.

Remark rem_1858 : forall X1 X2 X3:term, auto___def_51 pub -> auto_agent (session_old X3 X2) -> auto_knows_old X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent (session_old X3 X2) -> auto_knows_old X1 -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3). tauto.
  exact (rem_1857 X1 X2 X3).
Qed.

Remark rem_1859 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_knows_old (key pub (session_old X3 X2)) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1361 pub (session_old X3 X2) H);  intros.
  apply (rem_1856 X1 X2 X3);  tauto.
  apply (rem_1858 X1 X2 X3);  tauto.
Qed.

Remark rem_1860 : forall X1 X2:term, auto_knows_old (crypt X1 X2) -> or_4
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_1861 : forall X1 X2 X3:term, auto_knows_old (crypt X1 (key pub (session_old X3 X2))) -> auto_knows_old (passwd_old X3 X2) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1860 X1 (key pub (session_old X3 X2)) H);  intros.
  apply (rem_1845 X1 X2 X3);  tauto.
  apply (rem_1849 X1 X2 X3);  tauto.
  apply (rem_1854 X1 X2 X3);  tauto.
  apply (rem_1859 X1 X2 X3);  tauto.
Qed.

Remark rem_1862 : forall X1 X2 X3:term, auto_knows_old (enc (crypt X1 (key pub (session_old X3 X2))) (passwd_old X3 X2)) -> auto___def_23 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1290 (crypt X1 (key pub (session_old X3 X2))) (passwd_old X3 X2) H);  intros.
  apply (rem_1819 X1 X2 X3);  tauto.
  apply (rem_1834 X1 X2 X3);  tauto.
  apply (rem_1841 X1 X2 X3);  tauto.
  apply (rem_1861 X1 X2 X3);  tauto.
Qed.

Remark rem_1863 : forall X1 X2 X3:term, auto___type_22 X3 -> auto_knows_current X1 -> auto___def_91 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_290 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_91_nonceb_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1864 : forall X1 X2 X3:term, auto___def_96 X3 -> auto_knows_current X1 -> auto___def_91 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_293 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_91_nonceb_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1865 : forall X1 X2 X3:term, auto___def_84 X3 -> auto_knows_current X1 -> auto___def_91 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_296 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_91_nonceb_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1866 : forall X1 X2 X3:term, auto___def_87 X2 X3 X1 -> auto___def_91 (nonceb_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1709 X2 X3 X1 H);  intros.
  apply (rem_1863 X1 X2 X3);  tauto.
  apply (rem_1864 X1 X2 X3);  tauto.
  apply (rem_1865 X1 X2 X3);  tauto.
Qed.

Remark rem_1867 : forall X1:term, auto___def_86 X1 -> auto___def_86 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1868 : forall X1 X2:term, auto___def_86 X1 -> auto___type_19 X2 -> auto___def_86 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_86 X1 -> auto___def_86 X1). tauto. exact (rem_1867 X1).
Qed.

Remark rem_1869 : forall X2:term, auto___type_19 X2 -> auto___type_19 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1870 : forall X1 X2:term, auto___def_86 X1 -> auto___type_19 X2 -> auto___type_19 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_19 X2 -> auto___type_19 X2). tauto. exact (rem_1869 X2).
Qed.

Remark rem_1871 : forall X1 X2:term, auto___def_86 X1 -> auto___type_19 X2 -> (auto___def_86 X1 /\ auto___type_19 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_86 X1). 2:apply (rem_1868 X1 X2);  assumption.
  cut (auto___type_19 X2). 2:apply (rem_1870 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1872 : forall X1 X2:term, auto___def_86 X1 -> auto___type_19 X2 -> auto___def_85 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1871 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_85_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1873 : forall X1 X2:term, auto___type_19 X2 -> auto___def_86 X1 -> auto___def_85 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_86 X1 -> auto___type_19 X2 -> auto___def_85 (key X1 X2)). tauto. exact (rem_1872 X1 X2).
Qed.

Remark rem_1874 : forall X1:term, auto___def_41 X1 -> auto___def_41 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1875 : forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> auto___def_41 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_41 X1 -> auto___def_41 X1). tauto. exact (rem_1874 X1).
Qed.

Remark rem_1876 : forall X2:term, auto___def_42 X2 -> auto___def_42 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1877 : forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> auto___def_42 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_42 X2 -> auto___def_42 X2). tauto. exact (rem_1876 X2).
Qed.

Remark rem_1878 : forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> (auto___def_41 X1 /\ auto___def_42 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_41 X1). 2:apply (rem_1875 X1 X2);  assumption.
  cut (auto___def_42 X2). 2:apply (rem_1877 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1879 : forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> auto___def_37 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1878 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_37_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1880 : forall X1 X2:term, auto___def_42 X2 -> auto___def_41 X1 -> auto___def_37 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_41 X1 -> auto___def_42 X2 -> auto___def_37 (key X1 X2)). tauto. exact (rem_1879 X1 X2).
Qed.

Remark rem_1881 : auto___def_105 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_105_sym_1;  tauto.
 tauto.
Qed.

Remark rem_1882 : forall X1:term, auto___def_42 X1 -> auto___def_42 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1883 : forall X1 X2:term, auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 X1 -> auto___def_42 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_42 X1 -> auto___def_42 X1). tauto. exact (rem_1882 X1).
Qed.

Remark rem_1884 : forall X2:term, auto___def_36 X2 -> auto___def_36 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1885 : forall X1 X2:term, auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 X1 -> auto___def_36 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_36 X2 -> auto___def_36 X2). tauto. exact (rem_1884 X2).
Qed.

Remark rem_1886 : forall X1 X2:term, auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 X1 -> (auto___def_42 X1 /\ auto___def_36 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_42 X1). 2:apply (rem_1883 X1 X2);  assumption.
  cut (auto___def_36 X2). 2:apply (rem_1885 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1887 : forall X1 X2:term, auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 X1 -> auto___def_5 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1886 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_5_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1888 : forall X1 X2:term, auto___def_41 sym -> auto___def_42 X1 -> auto___def_36 X2 -> auto___def_5 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 X1 -> auto___def_5 X1 X2). tauto. exact (rem_1887 X1 X2).
Qed.

Remark rem_1889 : forall X1 X2:term, auto___def_36 X2 -> auto___def_37 (key sym X1) -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1405 sym X1 H);  intros.
  apply (rem_1888 X1 X2);  tauto.
Qed.

Remark rem_1890 : forall X1:term, auto___type_4 X1 -> auto___type_4 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1891 : forall X1 X2:term, auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 X1 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_1890 X1).
Qed.

Remark rem_1892 : forall X2:term, auto___def_24 X2 -> auto___def_24 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1893 : forall X1 X2:term, auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 X1 -> auto___def_24 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_24 X2 -> auto___def_24 X2). tauto. exact (rem_1892 X2).
Qed.

Remark rem_1894 : forall X1 X2:term, auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 X1 -> (auto___type_4 X1 /\ auto___def_24 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___type_4 X1). 2:apply (rem_1891 X1 X2);  assumption.
  cut (auto___def_24 X2). 2:apply (rem_1893 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1895 : forall X1 X2:term, auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 X1 -> auto___def_5 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1894 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_5_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1896 : forall X1 X2:term, auto___def_26 sym -> auto___type_4 X1 -> auto___def_24 X2 -> auto___def_5 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 X1 -> auto___def_5 X1 X2). tauto. exact (rem_1895 X1 X2).
Qed.

Remark rem_1897 : forall X1 X2:term, auto___def_24 X2 -> auto___def_25 (key sym X1) -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1444 sym X1 H);  intros.
  apply (rem_1896 X1 X2);  tauto.
Qed.

Remark rem_1898 : forall X1:term, auto___type_8 X1 -> auto___type_8 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1899 : forall X1 X2:term, auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 X1 -> auto___type_8 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_8 X1 -> auto___type_8 X1). tauto. exact (rem_1898 X1).
Qed.

Remark rem_1900 : forall X2:term, auto___type_7 X2 -> auto___type_7 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1901 : forall X1 X2:term, auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 X1 -> auto___type_7 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_7 X2 -> auto___type_7 X2). tauto. exact (rem_1900 X2).
Qed.

Remark rem_1902 : forall X1 X2:term, auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 X1 -> (auto___type_8 X1 /\ auto___type_7 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___type_8 X1). 2:apply (rem_1899 X1 X2);  assumption.
  cut (auto___type_7 X2). 2:apply (rem_1901 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1903 : forall X1 X2:term, auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_5 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1902 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_5_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1904 : forall X1 X2:term, auto___def_45 sym -> auto___type_8 X1 -> auto___type_7 X2 -> auto___def_5 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_5 X1 X2). tauto. exact (rem_1903 X1 X2).
Qed.

Remark rem_1905 : forall X1 X2:term, auto___def_44 (key sym X1) -> auto___type_7 X2 -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1450 sym X1 H);  intros.
  apply (rem_1904 X1 X2);  tauto.
Qed.

Remark rem_1906 : forall X1 X2:term, auto___type_7 X2 -> auto___def_44 (key sym X1) -> auto___def_5 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_44 (key sym X1) -> auto___type_7 X2 -> auto___def_5 X1 X2). tauto. exact (rem_1905 X1 X2).
Qed.

Remark rem_1907 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_5 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_61 sym -> False). tauto.
  exact (rem_1310).
Qed.

Remark rem_1908 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto_knows_old X2 -> auto___def_5 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_1313).
Qed.

Remark rem_1909 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1361 sym X1 H);  intros.
  apply (rem_1907 X1 X2);  tauto.
  apply (rem_1908 X1 X2);  tauto.
Qed.

Remark rem_1910 : forall X1 X2:term, auto_knows_old (crypt X2 (key sym X1)) -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1860 X2 (key sym X1) H);  intros.
  apply (rem_1889 X1 X2);  tauto.
  apply (rem_1897 X1 X2);  tauto.
  apply (rem_1906 X1 X2);  tauto.
  apply (rem_1909 X1 X2);  tauto.
Qed.

Remark rem_1911 : forall X1:term, auto___def_112 X1 -> auto___def_112 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1912 : forall X1 X2:term, auto___def_112 X1 -> auto___def_64 X2 -> auto___def_112 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_112 X1 -> auto___def_112 X1). tauto. exact (rem_1911 X1).
Qed.

Remark rem_1913 : forall X2:term, auto___def_64 X2 -> auto___def_64 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1914 : forall X1 X2:term, auto___def_112 X1 -> auto___def_64 X2 -> auto___def_64 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_64 X2 -> auto___def_64 X2). tauto. exact (rem_1913 X2).
Qed.

Remark rem_1915 : forall X1 X2:term, auto___def_112 X1 -> auto___def_64 X2 -> (auto___def_112 X1 /\ auto___def_64 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_112 X1). 2:apply (rem_1912 X1 X2);  assumption.
  cut (auto___def_64 X2). 2:apply (rem_1914 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1916 : forall X1 X2:term, auto___def_112 X1 -> auto___def_64 X2 -> auto___def_111 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1915 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_111_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1917 : forall X1 X2:term, auto___def_64 X2 -> auto___def_112 X1 -> auto___def_111 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_112 X1 -> auto___def_64 X2 -> auto___def_111 (key X1 X2)). tauto. exact (rem_1916 X1 X2).
Qed.

Remark rem_1918 : forall X1 X2 X3 X4:term, auto___def_39 X2 -> auto___def_40 nil -> auto___def_42 X1 -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_42 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_42 X1 -> auto___def_42 X1). tauto. exact (rem_1882 X1).
Qed.

Remark rem_1919 : (forall X:term, auto___def_42 X -> auto___def_17 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1920 : (forall X:term, auto___def_42 X -> auto___def_17 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_42_p__def_17. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_1919 epsilon_m__def_42_p__def_17 X1);  assumption.
  tauto.
Defined.

Remark rem_1921 : (forall X:term, auto___def_42 X -> auto___def_17 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___def_17 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_42_p__def_17. intros X1 X2. intros A1.
  case (rem_1920 epsilon_m__def_42_p__def_17 X1 A1). clear  epsilon_m__def_42_p__def_17 A1. intros. apply trans___def_17_r_old_1;  tauto.
 clear  epsilon_m__def_42_p__def_17 A1. tauto.
Defined.

Remark rem_1922 : (forall X:term, auto___def_42 X -> auto___def_17 X)
    -> forall X1 X2:term, auto___def_42 (r_old X1 X2) -> auto___def_17 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_42_p__def_17. intros X1 X2. intro H. intros.
  elim (rem_392 X1 X2 H);  intros.
  apply (rem_1921 epsilon_m__def_42_p__def_17 X1 X2);  tauto.
Defined.

Remark rem_1923 : forall X1:term, auto___def_42 X1 -> auto___def_17 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_42_p__def_17 1.
  intro X. case X.
   intro H. elim (rem_404  H).
   intro H. elim (rem_397  H).
  intros X1 X2. intro H. elim (rem_409 X1 X2 H).
  intros X1 X2. intro H. elim (rem_394 X1 X2 H).
  intros X1 X2. intro H. elim (rem_407 X1 X2 H).
  intros X1 X2. intro H. elim (rem_408 X1 X2 H).
   intro H. elim (rem_413  H).
  intros X1 X2. intro H. elim (rem_417 X1 X2 H).
   intro H. elim (rem_414  H).
  intros X1 X2. intro H. elim (rem_416 X1 X2 H).
  intros X1 X2. intro H. elim (rem_398 X1 X2 H).
  intros X1 X2. intro H. elim (rem_395 X1 X2 H).
  intros X1 X2. intro H. elim (rem_406 X1 X2 H).
  intros X1. intro H. elim (rem_400 X1 H).
  intros X1 X2. intro H. elim (rem_403 X1 X2 H).
  intros X1 X2. intro H. elim (rem_402 X1 X2 H).
   intro H. elim (rem_405  H).
   intro H. elim (rem_401  H).
  intros X1 X2. intro H. elim (rem_399 X1 X2 H).
  intros X1 X2;  exact (rem_1922 epsilon_m__def_42_p__def_17 X1 X2).
  intros X1. intro H. elim (rem_410 X1 H).
   intro H. elim (rem_415  H).
  intros X1 X2. intro H. elim (rem_412 X1 X2 H).
  intros X1 X2. intro H. elim (rem_396 X1 X2 H).
   intro H. elim (rem_411  H).
Qed.

Remark rem_1924 : forall X1 X2 X3 X4:term, auto___def_39 X2 -> auto___def_40 nil -> auto___def_42 X1 -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_42 X1 -> auto___def_17 X1). tauto. exact (rem_1923 X1).
Qed.

Remark rem_1925 : forall X2:term, auto___def_39 X2 -> auto___def_39 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1926 : forall X1 X2 X3 X4:term, auto___def_39 X2 -> auto___def_40 nil -> auto___def_42 X1 -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_39 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_39 X2 -> auto___def_39 X2). tauto. exact (rem_1925 X2).
Qed.

Remark rem_1927 : forall X1 X2 X3 X4:term, auto___def_39 X2 -> auto___def_40 nil -> auto___def_42 X1 -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> (auto___def_42 X1 /\ auto___def_17 X1 /\ auto___def_39 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto___def_42 X1). 2:apply (rem_1918 X1 X2 X3 X4);  assumption.
  cut (auto___def_17 X1). 2:apply (rem_1924 X1 X2 X3 X4);  assumption.
  cut (auto___def_39 X2). 2:apply (rem_1926 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1928 : forall X1 X2 X3 X4:term, auto___def_39 X2 -> auto___def_40 nil -> auto___def_42 X1 -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_1927 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans___def_43_1;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_1929 : forall X1 X2:term, auto___def_38 (cons X1 X2) -> or_1
    (auto___def_39 X1 /\ auto___def_40 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1930 : forall X1 X2 X3 X4:term, auto___def_38 (cons X2 nil) -> auto___def_42 X1 -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1929 X2 nil H);  intros.
  apply (rem_1928 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1931 : forall X1 X2 X3 X4:term, auto___def_38 (cons X2 nil) -> auto___def_41 sym -> auto___def_42 X1 -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_38 (cons X2 nil) -> auto___def_42 X1 -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2). tauto.
  exact (rem_1930 X1 X2 X3 X4).
Qed.

Remark rem_1932 : forall X1 X2 X3 X4:term, auto___def_41 sym -> auto___def_42 X1 -> auto___def_38 (cons X2 nil) -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_38 (cons X2 nil) -> auto___def_41 sym -> auto___def_42 X1 -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2). tauto. exact (rem_1931 X1 X2 X3 X4).
Qed.

Remark rem_1933 : forall X1 X2 X3 X4:term, auto___def_37 (key sym X1) -> auto___def_38 (cons X2 nil) -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1405 sym X1 H);  intros.
  apply (rem_1932 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1934 : forall X1 X2 X3 X4:term, auto___type_6 (noncea_old X3 X4) -> auto___def_38 (cons X2 nil) -> auto___def_37 (key sym X1) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_37 (key sym X1) -> auto___def_38 (cons X2 nil) -> auto___type_6 (noncea_old X3 X4) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2). tauto. exact (rem_1933 X1 X2 X3 X4).
Qed.

Remark rem_1935 : forall X1 X2:term, auto___def_36 (cons X1 X2) -> or_1
    (auto___type_6 X1 /\ auto___def_38 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1936 : forall X1 X2 X3 X4:term, auto___def_36 (cons (noncea_old X3 X4) (cons X2 nil)) -> auto___def_37 (key sym X1) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1935 (noncea_old X3 X4) (cons X2 nil) H);  intros.
  apply (rem_1934 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1937 : forall X1 X2:term, auto___def_24 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1938 : forall X1 X2 X3 X4:term, auto___def_24 (cons (noncea_old X3 X4) (cons X2 nil)) -> auto___def_25 (key sym X1) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1937 (noncea_old X3 X4) (cons X2 nil) H);  intros.
Qed.

Remark rem_1939 : forall X1 X2:term, auto___type_7 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1940 : forall X1 X2 X3 X4:term, auto___type_7 (cons (noncea_old X3 X4) (cons X2 nil)) -> auto___type_8 X1 -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1939 (noncea_old X3 X4) (cons X2 nil) H);  intros.
Qed.

Remark rem_1941 : forall X1 X2 X3 X4:term, auto___def_45 sym -> auto___type_7 (cons (noncea_old X3 X4) (cons X2 nil)) -> auto___type_8 X1 -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_7 (cons (noncea_old X3 X4) (cons X2 nil)) -> auto___type_8 X1 -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2). tauto.
  exact (rem_1940 X1 X2 X3 X4).
Qed.

Remark rem_1942 : forall X1 X2 X3 X4:term, auto___def_45 sym -> auto___type_8 X1 -> auto___type_7 (cons (noncea_old X3 X4) (cons X2 nil)) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_45 sym -> auto___type_7 (cons (noncea_old X3 X4) (cons X2 nil)) -> auto___type_8 X1 -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2). tauto. exact (rem_1941 X1 X2 X3 X4).
Qed.

Remark rem_1943 : forall X1 X2 X3 X4:term, auto___def_44 (key sym X1) -> auto___type_7 (cons (noncea_old X3 X4) (cons X2 nil)) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1450 sym X1 H);  intros.
  apply (rem_1942 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1944 : forall X1 X2 X3 X4:term, auto___type_7 (cons (noncea_old X3 X4) (cons X2 nil)) -> auto___def_44 (key sym X1) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_44 (key sym X1) -> auto___type_7 (cons (noncea_old X3 X4) (cons X2 nil)) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2). tauto. exact (rem_1943 X1 X2 X3 X4).
Qed.

Remark rem_1945 : forall X1 X2 X3 X4:term, auto___def_10 (crypt X1 (key pub (session_old X3 X4))) -> auto___def_11 (passwd_old X3 X4) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1818 X1 (key pub (session_old X3 X4)) H);  intros.
Qed.

Remark rem_1946 : (forall X:term, auto___def_62 X -> auto___def_17 X -> False)
    -> auto___def_17 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_m__def_17. intro H. intros.
  elim (rem_1343 H);  intros.
Defined.

Remark rem_1947 : (forall X:term, auto___def_62 X -> auto___def_17 X -> False)
    -> auto___def_62 i -> auto___def_17 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_m__def_17. intro H. intros.
  elim (rem_312 H);  intros.
  apply (rem_1946 epsilon_m__def_62_m__def_17);  tauto.
Defined.

Remark rem_1948 : forall X1:term, auto___def_62 X1 -> auto___def_17 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_62_m__def_17 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_1947 epsilon_m__def_62_m__def_17 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_1949 : forall X1 X2:term, auto___def_17 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_1948 X1)). tauto.
Qed.

Remark rem_1950 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_17 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2). tauto. exact (rem_1949 X1 X2).
Qed.

Remark rem_1951 : (forall X:term, auto___def_17 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (r_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_magent. intros X1 X2. intro H. intros.
  elim (rem_1098 X1 X2 H);  intros.
Defined.

Remark rem_1952 : (forall X:term, auto___def_17 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto___def_17 (r_old X1 X2) -> auto_agent (r_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_magent. intros X1 X2. intro H. intros.
  elim (rem_1322 X1 X2 H);  intros.
  apply (rem_1951 epsilon_m__def_17_magent X1 X2);  tauto.
Defined.

Remark rem_1953 : forall X1:term, auto___def_17 X1 -> auto_agent X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_17_magent 1.
  intro X. case X.
   intro H. elim (rem_1334  H).
   intro H. elim (rem_1327  H).
  intros X1 X2. intro H. elim (rem_1339 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1337 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1338 X1 X2 H).
   intro H. elim (rem_1343  H).
  intros X1 X2. intro H. elim (rem_1347 X1 X2 H).
   intro H. elim (rem_1344  H).
  intros X1 X2. intro H. elim (rem_1346 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1325 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1336 X1 X2 H).
  intros X1. intro H. elim (rem_1330 X1 H).
  intros X1 X2. intro H. elim (rem_1333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1332 X1 X2 H).
   intro H. elim (rem_1335  H).
   intro H. elim (rem_1331  H).
  intros X1 X2. intro H. elim (rem_1329 X1 X2 H).
  intros X1 X2;  exact (rem_1952 epsilon_m__def_17_magent X1 X2).
  intros X1. intro H. elim (rem_1340 X1 H).
   intro H. elim (rem_1345  H).
  intros X1 X2. intro H. elim (rem_1342 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1326 X1 X2 H).
   intro H. elim (rem_1341  H).
Qed.

Remark rem_1954 : forall X1 X2:term, auto___def_17 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_1953 X1)). tauto.
Qed.

Remark rem_1955 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_17 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_old X2 -> auto___def_43 X1 X2). tauto. exact (rem_1954 X1 X2).
Qed.

Remark rem_1956 : forall X1 X2:term, auto___def_17 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1361 sym X1 H);  intros.
  apply (rem_1950 X1 X2);  tauto.
  apply (rem_1955 X1 X2);  tauto.
Qed.

Remark rem_1957 : forall X1 X2 X3 X4:term, auto___def_16 (passwd_old X3 X4) -> auto___def_17 X1 -> auto___type_2 (key pub (session_old X3 X4)) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_17 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2). tauto.
  exact (rem_1956 X1 X2).
Qed.

Remark rem_1958 : forall X1 X2 X3 X4:term, auto___def_17 X1 -> auto___type_2 (key pub (session_old X3 X4)) -> auto___def_16 (passwd_old X3 X4) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_16 (passwd_old X3 X4) -> auto___def_17 X1 -> auto___type_2 (key pub (session_old X3 X4)) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2). tauto. exact (rem_1957 X1 X2 X3 X4).
Qed.

Remark rem_1959 : forall X1 X2 X3 X4:term, auto___def_15 (crypt X1 (key pub (session_old X3 X4))) -> auto___def_16 (passwd_old X3 X4) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1833 X1 (key pub (session_old X3 X4)) H);  intros.
  apply (rem_1958 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1960 : auto___def_21 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1961 : (forall X:term, auto___def_62 X -> auto___def_21 X -> False)
    -> auto___def_21 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_m__def_21. intro H. intros.
  elim (rem_1960 H);  intros.
Defined.

Remark rem_1962 : (forall X:term, auto___def_62 X -> auto___def_21 X -> False)
    -> auto___def_62 i -> auto___def_21 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_m__def_21. intro H. intros.
  elim (rem_312 H);  intros.
  apply (rem_1961 epsilon_m__def_62_m__def_21);  tauto.
Defined.

Remark rem_1963 : forall X1:term, auto___def_62 X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_62_m__def_21 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_1962 epsilon_m__def_62_m__def_21 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_1964 : forall X1 X2:term, auto___def_21 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_1963 X1)). tauto.
Qed.

Remark rem_1965 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_21 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2). tauto. exact (rem_1964 X1 X2).
Qed.

Remark rem_1966 : auto___def_21 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1967 : (forall X:term, auto_agent X -> auto___def_21 X -> False)
    -> auto___def_21 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_21. intro H. intros.
  elim (rem_1966 H);  intros.
Defined.

Remark rem_1968 : (forall X:term, auto_agent X -> auto___def_21 X -> False)
    -> auto_agent bob -> auto___def_21 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_21. intro H. intros.
  elim (rem_1083 H);  intros.
  apply (rem_1967 epsilon_magent_m__def_21);  tauto.
Defined.

Remark rem_1969 : auto___def_21 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1970 : (forall X:term, auto_agent X -> auto___def_21 X -> False)
    -> auto___def_21 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_21. intro H. intros.
  elim (rem_1969 H);  intros.
Defined.

Remark rem_1971 : (forall X:term, auto_agent X -> auto___def_21 X -> False)
    -> auto_agent alice -> auto___def_21 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_21. intro H. intros.
  elim (rem_1086 H);  intros.
  apply (rem_1970 epsilon_magent_m__def_21);  tauto.
Defined.

Remark rem_1972 : (forall X:term, auto_agent X -> auto___def_21 X -> False)
    -> auto___def_21 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_21. intro H. intros.
  elim (rem_1960 H);  intros.
Defined.

Remark rem_1973 : (forall X:term, auto_agent X -> auto___def_21 X -> False)
    -> auto_agent i -> auto___def_21 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_21. intro H. intros.
  elim (rem_1089 H);  intros.
  apply (rem_1972 epsilon_magent_m__def_21);  tauto.
Defined.

Remark rem_1974 : auto___def_21 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1975 : (forall X:term, auto_agent X -> auto___def_21 X -> False)
    -> auto___def_21 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_21. intro H. intros.
  elim (rem_1974 H);  intros.
Defined.

Remark rem_1976 : (forall X:term, auto_agent X -> auto___def_21 X -> False)
    -> auto_agent server -> auto___def_21 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_21. intro H. intros.
  elim (rem_1092 H);  intros.
  apply (rem_1975 epsilon_magent_m__def_21);  tauto.
Defined.

Remark rem_1977 : forall X1:term, auto_agent X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_magent_m__def_21 1.
  intro X. case X.
  exact (rem_1971 epsilon_magent_m__def_21 ).
  exact (rem_1968 epsilon_magent_m__def_21 ).
  intros X1 X2. intro H. elim (rem_1108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1094 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1106 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1107 X1 X2 H).
  exact (rem_1973 epsilon_magent_m__def_21 ).
  intros X1 X2. intro H. elim (rem_1114 X1 X2 H).
   intro H. elim (rem_1112  H).
  intros X1 X2. intro H. elim (rem_1113 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1097 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1105 X1 X2 H).
  intros X1. intro H. elim (rem_1100 X1 H).
  intros X1 X2. intro H. elim (rem_1103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1102 X1 X2 H).
   intro H. elim (rem_1104  H).
   intro H. elim (rem_1101  H).
  intros X1 X2. intro H. elim (rem_1099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1098 X1 X2 H).
  intros X1. intro H. elim (rem_1109 X1 H).
  exact (rem_1976 epsilon_magent_m__def_21 ).
  intros X1 X2. intro H. elim (rem_1111 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1096 X1 X2 H).
   intro H. elim (rem_1110  H).
Qed.

Remark rem_1978 : forall X1 X2:term, auto___def_21 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_1977 X1)). tauto.
Qed.

Remark rem_1979 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_21 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_old X2 -> auto___def_43 X1 X2). tauto. exact (rem_1978 X1 X2).
Qed.

Remark rem_1980 : forall X1 X2:term, auto___def_21 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1361 sym X1 H);  intros.
  apply (rem_1965 X1 X2);  tauto.
  apply (rem_1979 X1 X2);  tauto.
Qed.

Remark rem_1981 : forall X1 X2 X3 X4:term, auto___def_20 (passwd_old X3 X4) -> auto___def_21 X1 -> auto___def_22 (key pub (session_old X3 X4)) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_21 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2). tauto.
  exact (rem_1980 X1 X2).
Qed.

Remark rem_1982 : forall X1 X2 X3 X4:term, auto___def_21 X1 -> auto___def_22 (key pub (session_old X3 X4)) -> auto___def_20 (passwd_old X3 X4) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_20 (passwd_old X3 X4) -> auto___def_21 X1 -> auto___def_22 (key pub (session_old X3 X4)) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2). tauto. exact (rem_1981 X1 X2 X3 X4).
Qed.

Remark rem_1983 : forall X1 X2 X3 X4:term, auto___def_19 (crypt X1 (key pub (session_old X3 X4))) -> auto___def_20 (passwd_old X3 X4) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1840 X1 (key pub (session_old X3 X4)) H);  intros.
  apply (rem_1982 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1984 : auto___def_36 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1985 : (forall X:term, auto___def_62 X -> auto___def_36 X -> False)
    -> auto___def_36 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_m__def_36. intro H. intros.
  elim (rem_1984 H);  intros.
Defined.

Remark rem_1986 : (forall X:term, auto___def_62 X -> auto___def_36 X -> False)
    -> auto___def_62 i -> auto___def_36 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_m__def_36. intro H. intros.
  elim (rem_312 H);  intros.
  apply (rem_1985 epsilon_m__def_62_m__def_36);  tauto.
Defined.

Remark rem_1987 : forall X1:term, auto___def_62 X1 -> auto___def_36 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_62_m__def_36 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_1986 epsilon_m__def_62_m__def_36 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_1988 : forall X1 X2:term, auto___def_36 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_1987 X1)). tauto.
Qed.

Remark rem_1989 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_36 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2). tauto. exact (rem_1988 X1 X2).
Qed.

Remark rem_1990 : auto___def_36 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1991 : (forall X:term, auto_agent X -> auto___def_36 X -> False)
    -> auto___def_36 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_36. intro H. intros.
  elim (rem_1990 H);  intros.
Defined.

Remark rem_1992 : (forall X:term, auto_agent X -> auto___def_36 X -> False)
    -> auto_agent bob -> auto___def_36 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_36. intro H. intros.
  elim (rem_1083 H);  intros.
  apply (rem_1991 epsilon_magent_m__def_36);  tauto.
Defined.

Remark rem_1993 : auto___def_36 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1994 : (forall X:term, auto_agent X -> auto___def_36 X -> False)
    -> auto___def_36 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_36. intro H. intros.
  elim (rem_1993 H);  intros.
Defined.

Remark rem_1995 : (forall X:term, auto_agent X -> auto___def_36 X -> False)
    -> auto_agent alice -> auto___def_36 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_36. intro H. intros.
  elim (rem_1086 H);  intros.
  apply (rem_1994 epsilon_magent_m__def_36);  tauto.
Defined.

Remark rem_1996 : (forall X:term, auto_agent X -> auto___def_36 X -> False)
    -> auto___def_36 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_36. intro H. intros.
  elim (rem_1984 H);  intros.
Defined.

Remark rem_1997 : (forall X:term, auto_agent X -> auto___def_36 X -> False)
    -> auto_agent i -> auto___def_36 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_36. intro H. intros.
  elim (rem_1089 H);  intros.
  apply (rem_1996 epsilon_magent_m__def_36);  tauto.
Defined.

Remark rem_1998 : auto___def_36 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1999 : (forall X:term, auto_agent X -> auto___def_36 X -> False)
    -> auto___def_36 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_36. intro H. intros.
  elim (rem_1998 H);  intros.
Defined.

Remark rem_2000 : (forall X:term, auto_agent X -> auto___def_36 X -> False)
    -> auto_agent server -> auto___def_36 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_36. intro H. intros.
  elim (rem_1092 H);  intros.
  apply (rem_1999 epsilon_magent_m__def_36);  tauto.
Defined.

Remark rem_2001 : forall X1:term, auto_agent X1 -> auto___def_36 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_magent_m__def_36 1.
  intro X. case X.
  exact (rem_1995 epsilon_magent_m__def_36 ).
  exact (rem_1992 epsilon_magent_m__def_36 ).
  intros X1 X2. intro H. elim (rem_1108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1094 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1106 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1107 X1 X2 H).
  exact (rem_1997 epsilon_magent_m__def_36 ).
  intros X1 X2. intro H. elim (rem_1114 X1 X2 H).
   intro H. elim (rem_1112  H).
  intros X1 X2. intro H. elim (rem_1113 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1097 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1105 X1 X2 H).
  intros X1. intro H. elim (rem_1100 X1 H).
  intros X1 X2. intro H. elim (rem_1103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1102 X1 X2 H).
   intro H. elim (rem_1104  H).
   intro H. elim (rem_1101  H).
  intros X1 X2. intro H. elim (rem_1099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1098 X1 X2 H).
  intros X1. intro H. elim (rem_1109 X1 H).
  exact (rem_2000 epsilon_magent_m__def_36 ).
  intros X1 X2. intro H. elim (rem_1111 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1096 X1 X2 H).
   intro H. elim (rem_1110  H).
Qed.

Remark rem_2002 : forall X1 X2:term, auto___def_36 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2001 X1)). tauto.
Qed.

Remark rem_2003 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_36 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_old X2 -> auto___def_43 X1 X2). tauto. exact (rem_2002 X1 X2).
Qed.

Remark rem_2004 : forall X1 X2:term, auto___def_36 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1361 sym X1 H);  intros.
  apply (rem_1989 X1 X2);  tauto.
  apply (rem_2003 X1 X2);  tauto.
Qed.

Remark rem_2005 : forall X1 X2 X3 X4:term, auto___def_36 X1 -> auto___def_37 (key pub (session_old X3 X4)) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto_knows_old (passwd_old X3 X4) -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_36 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2). tauto.
  exact (rem_2004 X1 X2).
Qed.

Remark rem_2006 : (forall X:term, auto___def_24 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_62 (noncea_old X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_318 X1 X2 H);  intros.
Defined.

Remark rem_2007 : forall X1 X2:term, auto___def_24 (noncea_old X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2008 : (forall X:term, auto___def_24 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_24 (noncea_old X1 X2) -> auto___def_62 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_2007 X1 X2 H);  intros.
  apply (rem_2006 epsilon_m__def_24_m__def_62 X1 X2);  tauto.
Defined.

Remark rem_2009 : forall X1 X2:term, auto___def_24 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2010 : forall X1 X2:term, auto___def_24 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2011 : forall X1 X2:term, auto___def_24 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2012 : auto___def_24 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2013 : forall X1 X2:term, auto___def_24 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2014 : forall X1 X2:term, auto___def_24 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2015 : forall X1:term, auto___def_24 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2016 : auto___def_24 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2017 : forall X1 X2:term, auto___def_24 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2018 : forall X1 X2:term, auto___def_24 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2019 : auto___def_24 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2020 : auto___def_24 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2021 : forall X1 X2:term, auto___def_24 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2022 : forall X1 X2:term, auto___def_24 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2023 : forall X1 X2:term, auto___def_24 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2024 : forall X1:term, auto___def_24 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2025 : auto___def_24 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2026 : forall X1 X2:term, auto___def_24 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2027 : auto___def_24 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2028 : auto___def_24 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2029 : auto___def_24 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2030 : forall X1 X2:term, auto___def_24 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2031 : forall X1 X2:term, auto___def_24 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2032 : forall X1:term, auto___def_24 X1 -> auto___def_62 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_24_m__def_62 1.
  intro X. case X.
   intro H. elim (rem_2019  H).
   intro H. elim (rem_2012  H).
  intros X1 X2. intro H. elim (rem_1937 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2009 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2022 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2023 X1 X2 H).
   intro H. elim (rem_2027  H).
  intros X1 X2. intro H. elim (rem_2031 X1 X2 H).
   intro H. elim (rem_2028  H).
  intros X1 X2. intro H. elim (rem_2030 X1 X2 H).
  intros X1 X2;  exact (rem_2008 epsilon_m__def_24_m__def_62 X1 X2).
  intros X1 X2. intro H. elim (rem_2010 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2021 X1 X2 H).
  intros X1. intro H. elim (rem_2015 X1 H).
  intros X1 X2. intro H. elim (rem_2018 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2017 X1 X2 H).
   intro H. elim (rem_2020  H).
   intro H. elim (rem_2016  H).
  intros X1 X2. intro H. elim (rem_2014 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2013 X1 X2 H).
  intros X1. intro H. elim (rem_2024 X1 H).
   intro H. elim (rem_2029  H).
  intros X1 X2. intro H. elim (rem_2026 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2011 X1 X2 H).
   intro H. elim (rem_2025  H).
Qed.

Remark rem_2033 : forall X1 X2:term, auto___def_24 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2032 X1)). tauto.
Qed.

Remark rem_2034 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_24 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2). tauto. exact (rem_2033 X1 X2).
Qed.

Remark rem_2035 : (forall X:term, auto___def_24 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (noncea_old X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_magent. intros X1 X2. intro H. intros.
  elim (rem_1097 X1 X2 H);  intros.
Defined.

Remark rem_2036 : (forall X:term, auto___def_24 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto___def_24 (noncea_old X1 X2) -> auto_agent (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_magent. intros X1 X2. intro H. intros.
  elim (rem_2007 X1 X2 H);  intros.
  apply (rem_2035 epsilon_m__def_24_magent X1 X2);  tauto.
Defined.

Remark rem_2037 : forall X1:term, auto___def_24 X1 -> auto_agent X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_24_magent 1.
  intro X. case X.
   intro H. elim (rem_2019  H).
   intro H. elim (rem_2012  H).
  intros X1 X2. intro H. elim (rem_1937 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2009 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2022 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2023 X1 X2 H).
   intro H. elim (rem_2027  H).
  intros X1 X2. intro H. elim (rem_2031 X1 X2 H).
   intro H. elim (rem_2028  H).
  intros X1 X2. intro H. elim (rem_2030 X1 X2 H).
  intros X1 X2;  exact (rem_2036 epsilon_m__def_24_magent X1 X2).
  intros X1 X2. intro H. elim (rem_2010 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2021 X1 X2 H).
  intros X1. intro H. elim (rem_2015 X1 H).
  intros X1 X2. intro H. elim (rem_2018 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2017 X1 X2 H).
   intro H. elim (rem_2020  H).
   intro H. elim (rem_2016  H).
  intros X1 X2. intro H. elim (rem_2014 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2013 X1 X2 H).
  intros X1. intro H. elim (rem_2024 X1 H).
   intro H. elim (rem_2029  H).
  intros X1 X2. intro H. elim (rem_2026 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2011 X1 X2 H).
   intro H. elim (rem_2025  H).
Qed.

Remark rem_2038 : forall X1 X2:term, auto___def_24 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2037 X1)). tauto.
Qed.

Remark rem_2039 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_24 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_old X2 -> auto___def_43 X1 X2). tauto. exact (rem_2038 X1 X2).
Qed.

Remark rem_2040 : forall X1 X2:term, auto___def_24 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1361 sym X1 H);  intros.
  apply (rem_2034 X1 X2);  tauto.
  apply (rem_2039 X1 X2);  tauto.
Qed.

Remark rem_2041 : forall X1 X2 X3 X4:term, auto___def_24 X1 -> auto___def_25 (key pub (session_old X3 X4)) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto_knows_old (passwd_old X3 X4) -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_24 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2). tauto.
  exact (rem_2040 X1 X2).
Qed.

Remark rem_2042 : (forall X:term, auto___type_7 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_62 (nonceb_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_327 X1 X2 H);  intros.
Defined.

Remark rem_2043 : forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2044 : (forall X:term, auto___type_7 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> auto___def_62 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_2043 X1 X2 H);  intros.
  apply (rem_2042 epsilon_m__type_7_m__def_62 X1 X2);  tauto.
Defined.

Remark rem_2045 : forall X1 X2:term, auto___type_7 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2046 : forall X1 X2:term, auto___type_7 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2047 : forall X1 X2:term, auto___type_7 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2048 : auto___type_7 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2049 : forall X1 X2:term, auto___type_7 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2050 : forall X1 X2:term, auto___type_7 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2051 : forall X1 X2:term, auto___type_7 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2052 : forall X1:term, auto___type_7 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2053 : auto___type_7 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2054 : forall X1 X2:term, auto___type_7 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2055 : forall X1 X2:term, auto___type_7 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2056 : auto___type_7 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2057 : auto___type_7 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2058 : forall X1 X2:term, auto___type_7 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2059 : forall X1 X2:term, auto___type_7 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2060 : forall X1:term, auto___type_7 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2061 : auto___type_7 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2062 : forall X1 X2:term, auto___type_7 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2063 : auto___type_7 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2064 : auto___type_7 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2065 : auto___type_7 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2066 : forall X1 X2:term, auto___type_7 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2067 : forall X1 X2:term, auto___type_7 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2068 : forall X1:term, auto___type_7 X1 -> auto___def_62 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_7_m__def_62 1.
  intro X. case X.
   intro H. elim (rem_2056  H).
   intro H. elim (rem_2048  H).
  intros X1 X2. intro H. elim (rem_1939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2058 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2059 X1 X2 H).
   intro H. elim (rem_2063  H).
  intros X1 X2. intro H. elim (rem_2067 X1 X2 H).
   intro H. elim (rem_2064  H).
  intros X1 X2. intro H. elim (rem_2066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2046 X1 X2 H).
  intros X1 X2;  exact (rem_2044 epsilon_m__type_7_m__def_62 X1 X2).
  intros X1. intro H. elim (rem_2052 X1 H).
  intros X1 X2. intro H. elim (rem_2055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2054 X1 X2 H).
   intro H. elim (rem_2057  H).
   intro H. elim (rem_2053  H).
  intros X1 X2. intro H. elim (rem_2051 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2050 X1 X2 H).
  intros X1. intro H. elim (rem_2060 X1 H).
   intro H. elim (rem_2065  H).
  intros X1 X2. intro H. elim (rem_2062 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2047 X1 X2 H).
   intro H. elim (rem_2061  H).
Qed.

Remark rem_2069 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___type_7 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2068 X1)). tauto.
Qed.

Remark rem_2070 : (forall X:term, auto___type_7 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (nonceb_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_magent. intros X1 X2. intro H. intros.
  elim (rem_1105 X1 X2 H);  intros.
Defined.

Remark rem_2071 : (forall X:term, auto___type_7 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> auto_agent (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_magent. intros X1 X2. intro H. intros.
  elim (rem_2043 X1 X2 H);  intros.
  apply (rem_2070 epsilon_m__type_7_magent X1 X2);  tauto.
Defined.

Remark rem_2072 : forall X1:term, auto___type_7 X1 -> auto_agent X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_7_magent 1.
  intro X. case X.
   intro H. elim (rem_2056  H).
   intro H. elim (rem_2048  H).
  intros X1 X2. intro H. elim (rem_1939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2058 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2059 X1 X2 H).
   intro H. elim (rem_2063  H).
  intros X1 X2. intro H. elim (rem_2067 X1 X2 H).
   intro H. elim (rem_2064  H).
  intros X1 X2. intro H. elim (rem_2066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2046 X1 X2 H).
  intros X1 X2;  exact (rem_2071 epsilon_m__type_7_magent X1 X2).
  intros X1. intro H. elim (rem_2052 X1 H).
  intros X1 X2. intro H. elim (rem_2055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2054 X1 X2 H).
   intro H. elim (rem_2057  H).
   intro H. elim (rem_2053  H).
  intros X1 X2. intro H. elim (rem_2051 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2050 X1 X2 H).
  intros X1. intro H. elim (rem_2060 X1 H).
   intro H. elim (rem_2065  H).
  intros X1 X2. intro H. elim (rem_2062 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2047 X1 X2 H).
   intro H. elim (rem_2061  H).
Qed.

Remark rem_2073 : forall X1 X2:term, auto___def_51 sym -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2072 X1)). tauto.
Qed.

Remark rem_2074 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___type_7 X1 -> auto_knows_old X2 -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_51 sym -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto___def_43 X1 X2). tauto. exact (rem_2073 X1 X2).
Qed.

Remark rem_2075 : forall X1 X2:term, auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1361 sym X1 H);  intros.
  apply (rem_2069 X1 X2);  tauto.
  apply (rem_2074 X1 X2);  tauto.
Qed.

Remark rem_2076 : forall X1 X2 X3 X4:term, auto___def_44 (key pub (session_old X3 X4)) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto_knows_old (passwd_old X3 X4) -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2). tauto.
  exact (rem_2075 X1 X2).
Qed.

Remark rem_2077 : forall X1 X2 X3 X4:term, auto___type_7 X1 -> auto___def_44 (key pub (session_old X3 X4)) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto_knows_old (passwd_old X3 X4) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_44 (key pub (session_old X3 X4)) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto_knows_old (passwd_old X3 X4) -> auto___def_43 X1 X2). tauto. exact (rem_2076 X1 X2 X3 X4).
Qed.

Remark rem_2078 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto_knows_old X2 -> auto_knows_old X1 -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_61 sym -> False). tauto.
  exact (rem_1310).
Qed.

Remark rem_2079 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X1 -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_1313).
Qed.

Remark rem_2080 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1361 sym X1 H);  intros.
  apply (rem_2078 X1 X2);  tauto.
  apply (rem_2079 X1 X2);  tauto.
Qed.

Remark rem_2081 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old (key pub (session_old X3 X4)) -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto_knows_old (passwd_old X3 X4) -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2). tauto.
  exact (rem_2080 X1 X2).
Qed.

Remark rem_2082 : forall X1 X2 X3 X4:term, auto_knows_old X1 -> auto_knows_old (key pub (session_old X3 X4)) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto_knows_old (passwd_old X3 X4) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old (key pub (session_old X3 X4)) -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto_knows_old (passwd_old X3 X4) -> auto___def_43 X1 X2). tauto. exact (rem_2081 X1 X2 X3 X4).
Qed.

Remark rem_2083 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old (crypt X1 (key pub (session_old X3 X4))) -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto_knows_old (passwd_old X3 X4) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1860 X1 (key pub (session_old X3 X4)) H);  intros.
  apply (rem_2005 X1 X2 X3 X4);  tauto.
  apply (rem_2041 X1 X2 X3 X4);  tauto.
  apply (rem_2077 X1 X2 X3 X4);  tauto.
  apply (rem_2082 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2084 : forall X1 X2 X3 X4:term, auto_knows_old (crypt X1 (key pub (session_old X3 X4))) -> auto_knows_old (passwd_old X3 X4) -> auto_knows_old X2 -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old (crypt X1 (key pub (session_old X3 X4))) -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto_knows_old (passwd_old X3 X4) -> auto___def_43 X1 X2). tauto. exact (rem_2083 X1 X2 X3 X4).
Qed.

Remark rem_2085 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1290 (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4) H);  intros.
  apply (rem_1945 X1 X2 X3 X4);  tauto.
  apply (rem_1959 X1 X2 X3 X4);  tauto.
  apply (rem_1983 X1 X2 X3 X4);  tauto.
  apply (rem_2084 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2086 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (key sym X1) -> auto_knows_old nil -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2). tauto.
  exact (rem_2085 X1 X2 X3 X4).
Qed.

Remark rem_2087 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old nil -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (key sym X1) -> auto_knows_old nil -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2). tauto. exact (rem_2086 X1 X2 X3 X4).
Qed.

Remark rem_2088 : forall X1 X2 X3 X4:term, auto_knows_old (cons X2 nil) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1263 X2 nil H);  intros.
  apply (rem_2087 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2089 : forall X1 X2 X3 X4:term, auto_knows_old (noncea_old X3 X4) -> auto_knows_old (cons X2 nil) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old (cons X2 nil) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (key sym X1) -> auto_knows_old (noncea_old X3 X4) -> auto___def_43 X1 X2). tauto. exact (rem_2088 X1 X2 X3 X4).
Qed.

Remark rem_2090 : forall X1 X2 X3 X4:term, auto_knows_old (cons (noncea_old X3 X4) (cons X2 nil)) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1263 (noncea_old X3 X4) (cons X2 nil) H);  intros.
  apply (rem_2089 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2091 : forall X1 X2 X3 X4:term, auto_knows_old (cons (noncea_old X3 X4) (cons X2 nil)) -> auto_knows_old (key sym X1) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old (cons (noncea_old X3 X4) (cons X2 nil)) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (key sym X1) -> auto___def_43 X1 X2). tauto. exact (rem_2090 X1 X2 X3 X4).
Qed.

Remark rem_2092 : forall X1 X2 X3 X4:term, auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X2 nil)) (key sym X1)) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1860 (cons (noncea_old X3 X4) (cons X2 nil)) (key sym X1) H);  intros.
  apply (rem_1936 X1 X2 X3 X4);  tauto.
  apply (rem_1938 X1 X2 X3 X4);  tauto.
  apply (rem_1944 X1 X2 X3 X4);  tauto.
  apply (rem_2091 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2093 : forall X1 X2 X3 X4:term, auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X2 nil)) (key sym X1)) -> auto___def_43 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X2 nil)) (key sym X1)) -> auto_knows_old (enc (crypt X1 (key pub (session_old X3 X4))) (passwd_old X3 X4)) -> auto___def_43 X1 X2). tauto. exact (rem_2092 X1 X2 X3 X4).
Qed.

Remark rem_2094 : auto___def_100 nil. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_100_nil_1;  tauto.
 tauto.
Qed.

Remark rem_2095 : auto___def_62 i. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_62_i_1;  tauto.
 tauto.
Qed.

Remark rem_2096 : forall X1:term, auto___type_20 X1 -> auto___type_20 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2097 : forall X1 X2:term, auto___def_90 X2 -> auto___type_20 X1 -> auto___type_20 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_20 X1 -> auto___type_20 X1). tauto. exact (rem_2096 X1).
Qed.

Remark rem_2098 : forall X2:term, auto___def_90 X2 -> auto___def_90 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2099 : forall X1 X2:term, auto___def_90 X2 -> auto___type_20 X1 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_2098 X2).
Qed.

Remark rem_2100 : forall X1 X2:term, auto___def_90 X2 -> auto___type_20 X1 -> (auto___type_20 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_20 X1). 2:apply (rem_2097 X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_2099 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2101 : forall X1 X2:term, auto___def_90 X2 -> auto___type_20 X1 -> auto___def_88 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2100 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_88_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2102 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current nil -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_2103 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current nil -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_1414 X2).
Qed.

Remark rem_2104 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current nil -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_2102 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_2103 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2105 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current nil -> auto___def_78 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_2104 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_78_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_2106 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current nil -> auto_knows_current X1 -> auto___def_78 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current nil -> auto___def_78 X1 X2). tauto. exact (rem_2105 X1 X2).
Qed.

Remark rem_2107 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current (cons X2 nil) -> auto___def_78 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1034 X2 nil H);  intros.
  apply (rem_2106 X1 X2);  tauto.
Qed.

Remark rem_2108 : forall X1 X2:term, auto_knows_current (cons X1 (cons X2 nil)) -> auto___def_78 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1034 X1 (cons X2 nil) H);  intros.
  apply (rem_2107 X1 X2);  tauto.
Qed.

Remark rem_2109 : forall X1:term, auto___def_39 X1 -> auto___def_39 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2110 : forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto___def_39 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_39 X1 -> auto___def_39 X1). tauto. exact (rem_2109 X1).
Qed.

Remark rem_2111 : forall X2:term, auto___def_40 X2 -> auto___def_40 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2112 : forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto___def_40 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_40 X2 -> auto___def_40 X2). tauto. exact (rem_2111 X2).
Qed.

Remark rem_2113 : forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> (auto___def_39 X1 /\ auto___def_40 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_39 X1). 2:apply (rem_2110 X1 X2);  assumption.
  cut (auto___def_40 X2). 2:apply (rem_2112 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2114 : forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto___def_38 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2113 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_38_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2115 : forall X1 X2:term, auto___def_40 X2 -> auto___def_39 X1 -> auto___def_38 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_39 X1 -> auto___def_40 X2 -> auto___def_38 (cons X1 X2)). tauto. exact (rem_2114 X1 X2).
Qed.

Remark rem_2116 : auto___def_92 nil. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_92_nil_1;  tauto.
 tauto.
Qed.

Remark rem_2117 : (forall X:term, auto_agent X -> auto___type_1 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p__type_1.  tauto.
Defined.

Remark rem_2118 : (forall X:term, auto_agent X -> auto___type_1 X)
    -> auto___type_1 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_1.  case (rem_2117 epsilon_magent_p__type_1). clear  epsilon_magent_p__type_1. intros. apply trans___type_1_bob_1;  tauto.
 clear  epsilon_magent_p__type_1. tauto.
Defined.

Remark rem_2119 : (forall X:term, auto_agent X -> auto___type_1 X)
    -> auto_agent bob -> auto___type_1 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_1. intro H. intros.
  elim (rem_1083 H);  intros.
  apply (rem_2118 epsilon_magent_p__type_1);  tauto.
Defined.

Remark rem_2120 : (forall X:term, auto_agent X -> auto___type_1 X)
    -> auto___type_1 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_1.  case (rem_2117 epsilon_magent_p__type_1). clear  epsilon_magent_p__type_1. intros. apply trans___type_1_alice_1;  tauto.
 clear  epsilon_magent_p__type_1. tauto.
Defined.

Remark rem_2121 : (forall X:term, auto_agent X -> auto___type_1 X)
    -> auto_agent alice -> auto___type_1 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_1. intro H. intros.
  elim (rem_1086 H);  intros.
  apply (rem_2120 epsilon_magent_p__type_1);  tauto.
Defined.

Remark rem_2122 : (forall X:term, auto_agent X -> auto___type_1 X)
    -> auto___type_1 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_1.  case (rem_2117 epsilon_magent_p__type_1). clear  epsilon_magent_p__type_1. intros. apply trans___type_1_i_1;  tauto.
 clear  epsilon_magent_p__type_1. tauto.
Defined.

Remark rem_2123 : (forall X:term, auto_agent X -> auto___type_1 X)
    -> auto_agent i -> auto___type_1 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_1. intro H. intros.
  elim (rem_1089 H);  intros.
  apply (rem_2122 epsilon_magent_p__type_1);  tauto.
Defined.

Remark rem_2124 : (forall X:term, auto_agent X -> auto___type_1 X)
    -> auto___type_1 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_1.  case (rem_2117 epsilon_magent_p__type_1). clear  epsilon_magent_p__type_1. intros. apply trans___type_1_server_1;  tauto.
 clear  epsilon_magent_p__type_1. tauto.
Defined.

Remark rem_2125 : (forall X:term, auto_agent X -> auto___type_1 X)
    -> auto_agent server -> auto___type_1 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_1. intro H. intros.
  elim (rem_1092 H);  intros.
  apply (rem_2124 epsilon_magent_p__type_1);  tauto.
Defined.

Remark rem_2126 : forall X1:term, auto_agent X1 -> auto___type_1 X1. (* Induct. *)
Proof.
  fix epsilon_magent_p__type_1 1.
  intro X. case X.
  exact (rem_2121 epsilon_magent_p__type_1 ).
  exact (rem_2119 epsilon_magent_p__type_1 ).
  intros X1 X2. intro H. elim (rem_1108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1094 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1106 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1107 X1 X2 H).
  exact (rem_2123 epsilon_magent_p__type_1 ).
  intros X1 X2. intro H. elim (rem_1114 X1 X2 H).
   intro H. elim (rem_1112  H).
  intros X1 X2. intro H. elim (rem_1113 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1097 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1105 X1 X2 H).
  intros X1. intro H. elim (rem_1100 X1 H).
  intros X1 X2. intro H. elim (rem_1103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1102 X1 X2 H).
   intro H. elim (rem_1104  H).
   intro H. elim (rem_1101  H).
  intros X1 X2. intro H. elim (rem_1099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1098 X1 X2 H).
  intros X1. intro H. elim (rem_1109 X1 H).
  exact (rem_2125 epsilon_magent_p__type_1 ).
  intros X1 X2. intro H. elim (rem_1111 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1096 X1 X2 H).
   intro H. elim (rem_1110  H).
Qed.

Remark rem_2127 : forall X1 X2 X3:term, auto___type_22 X3 -> auto_knows_current X1 -> auto___def_94 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_290 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_94_r_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2128 : forall X1 X2 X3:term, auto___def_96 X3 -> auto_knows_current X1 -> auto___def_94 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_293 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_94_r_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2129 : forall X1 X2 X3:term, auto___def_84 X3 -> auto_knows_current X1 -> auto___def_94 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_296 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_94_r_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2130 : forall X1 X2 X3:term, auto___def_87 X2 X3 X1 -> auto___def_94 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1709 X2 X3 X1 H);  intros.
  apply (rem_2127 X1 X2 X3);  tauto.
  apply (rem_2128 X1 X2 X3);  tauto.
  apply (rem_2129 X1 X2 X3);  tauto.
Qed.

Remark rem_2131 : auto___def_53 pub. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_53_pub_1;  tauto.
 tauto.
Qed.

Remark rem_2132 : forall X1 X2 X3:term, auto_knows_current X3 -> auto_knows_current X1 -> auto___def_81 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_915 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_81_r_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2133 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_knows_current X3 -> auto___def_81 (r_current X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X1 -> auto___def_81 (r_current X1 X2)). tauto. exact (rem_2132 X1 X2 X3).
Qed.

Remark rem_2134 : forall X1 X2 X3:term, auto___def_78 X1 X3 -> auto___def_81 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_918 X1 X3 H);  intros.
  apply (rem_2133 X1 X2 X3);  tauto.
Qed.

Remark rem_2135 : forall X1:term, auto___type_6 X1 -> auto___type_6 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2136 : forall X1 X2:term, auto___def_38 X2 -> auto___type_6 X1 -> auto___type_6 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_6 X1 -> auto___type_6 X1). tauto. exact (rem_2135 X1).
Qed.

Remark rem_2137 : forall X2:term, auto___def_38 X2 -> auto___def_38 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2138 : forall X1 X2:term, auto___def_38 X2 -> auto___type_6 X1 -> auto___def_38 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_38 X2 -> auto___def_38 X2). tauto. exact (rem_2137 X2).
Qed.

Remark rem_2139 : forall X1 X2:term, auto___def_38 X2 -> auto___type_6 X1 -> (auto___type_6 X1 /\ auto___def_38 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_6 X1). 2:apply (rem_2136 X1 X2);  assumption.
  cut (auto___def_38 X2). 2:apply (rem_2138 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2140 : forall X1 X2:term, auto___def_38 X2 -> auto___type_6 X1 -> auto___def_36 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2139 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_36_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2141 : forall X1 X2:term, auto_agent X2 -> auto_agent X1 -> auto___def_11 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1792 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_11_passwd_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2142 : forall X1:term, auto___def_10 X1 -> auto___def_10 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2143 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_10 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_10 X1). tauto. exact (rem_2142 X1).
Qed.

Remark rem_2144 : forall X2:term, auto___def_11 X2 -> auto___def_11 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2145 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_11 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_11 X2 -> auto___def_11 X2). tauto. exact (rem_2144 X2).
Qed.

Remark rem_2146 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto___def_10 X1 /\ auto___def_11 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_10 X1). 2:apply (rem_2143 X1 X2);  assumption.
  cut (auto___def_11 X2). 2:apply (rem_2145 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2147 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_8 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2146 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_8_enc_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2148 : forall X1 X2:term, auto___def_11 X2 -> auto___def_10 X1 -> auto___def_8 (enc X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_11 X2 -> auto___def_8 (enc X1 X2)). tauto. exact (rem_2147 X1 X2).
Qed.

Remark rem_2149 : auto___def_12 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2150 : auto___def_12 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2149 H);  intros.
Qed.

Remark rem_2151 : forall X1 X2:term, auto___def_12 prv -> auto___def_13 X1 -> auto___def_17 X2 -> auto___def_65 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_12 prv -> False). tauto.
  exact (rem_2150).
Qed.

Remark rem_2152 : forall X1 X2:term, auto___def_17 X2 -> auto___type_2 (key prv X1) -> auto___def_65 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1399 prv X1 H);  intros.
  apply (rem_2151 X1 X2);  tauto.
Qed.

Remark rem_2153 : auto___def_41 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2154 : auto___def_41 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2153 H);  intros.
Qed.

Remark rem_2155 : forall X1 X2:term, auto___def_36 X2 -> auto___def_41 prv -> auto___def_42 X1 -> auto___def_65 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_41 prv -> False). tauto.
  exact (rem_2154).
Qed.

Remark rem_2156 : forall X1 X2:term, auto___def_41 prv -> auto___def_42 X1 -> auto___def_36 X2 -> auto___def_65 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X2 -> auto___def_41 prv -> auto___def_42 X1 -> auto___def_65 X1 X2). tauto. exact (rem_2155 X1 X2).
Qed.

Remark rem_2157 : forall X1 X2:term, auto___def_36 X2 -> auto___def_37 (key prv X1) -> auto___def_65 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1405 prv X1 H);  intros.
  apply (rem_2156 X1 X2);  tauto.
Qed.

Remark rem_2158 : forall X1 X2:term, auto___def_21 X2 -> auto___def_22 (key prv X1) -> auto___def_65 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1407 prv X1 H);  intros.
Qed.

Remark rem_2159 : forall X1:term, auto___def_62 X1 -> auto___def_62 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2160 : forall X1 X2:term, auto___def_61 prv -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_62 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_62 X1 -> auto___def_62 X1). tauto. exact (rem_2159 X1).
Qed.

Remark rem_2161 : forall X1 X2:term, auto___def_61 prv -> auto___def_62 X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_1414 X2).
Qed.

Remark rem_2162 : forall X1 X2:term, auto___def_61 prv -> auto___def_62 X1 -> auto_knows_current X2 -> (auto___def_62 X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_62 X1). 2:apply (rem_2160 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_2161 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2163 : forall X1 X2:term, auto___def_61 prv -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_65 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_2162 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_65_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_2164 : forall X1 X2:term, auto___def_51 prv -> auto_agent X1 -> auto_knows_current X2 -> auto___def_65 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_51 prv -> False). tauto.
  exact (rem_1359).
Qed.

Remark rem_2165 : forall X1 X2:term, auto___def_12 prv -> auto___def_13 X1 -> auto_knows_current X2 -> auto___def_65 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_12 prv -> False). tauto.
  exact (rem_2150).
Qed.

Remark rem_2166 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current (key prv X1) -> auto___def_65 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1066 prv X1 H);  intros.
  apply (rem_2163 X1 X2);  tauto.
  apply (rem_2164 X1 X2);  tauto.
  apply (rem_2165 X1 X2);  tauto.
Qed.

Remark rem_2167 : auto___def_105 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2168 : auto___def_105 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2167 H);  intros.
Qed.

Remark rem_2169 : forall X1 X2:term, auto___def_105 prv -> auto___type_22 X2 -> auto___type_23 X1 -> auto___def_65 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_105 prv -> False). tauto.
  exact (rem_2168).
Qed.

Remark rem_2170 : forall X1 X2:term, auto___def_105 prv -> auto___type_23 X1 -> auto___type_22 X2 -> auto___def_65 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_105 prv -> auto___type_22 X2 -> auto___type_23 X1 -> auto___def_65 X1 X2). tauto. exact (rem_2169 X1 X2).
Qed.

Remark rem_2171 : forall X1 X2:term, auto___def_104 (key prv X1) -> auto___type_22 X2 -> auto___def_65 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1431 prv X1 H);  intros.
  apply (rem_2170 X1 X2);  tauto.
Qed.

Remark rem_2172 : forall X1 X2:term, auto___type_22 X2 -> auto___def_104 (key prv X1) -> auto___def_65 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_104 (key prv X1) -> auto___type_22 X2 -> auto___def_65 X1 X2). tauto. exact (rem_2171 X1 X2).
Qed.

Remark rem_2173 : auto___def_93 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2174 : auto___def_93 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2173 H);  intros.
Qed.

Remark rem_2175 : forall X1 X2:term, auto___def_88 X2 -> auto___def_93 prv -> auto___def_94 X1 -> auto___def_65 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_93 prv -> False). tauto.
  exact (rem_2174).
Qed.

Remark rem_2176 : forall X1 X2:term, auto___def_93 prv -> auto___def_94 X1 -> auto___def_88 X2 -> auto___def_65 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_88 X2 -> auto___def_93 prv -> auto___def_94 X1 -> auto___def_65 X1 X2). tauto. exact (rem_2175 X1 X2).
Qed.

Remark rem_2177 : forall X1 X2:term, auto___def_88 X2 -> auto___def_89 (key prv X1) -> auto___def_65 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1438 prv X1 H);  intros.
  apply (rem_2176 X1 X2);  tauto.
Qed.

Remark rem_2178 : auto___def_26 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2179 : auto___def_26 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2178 H);  intros.
Qed.

Remark rem_2180 : forall X1 X2:term, auto___def_24 X2 -> auto___def_26 prv -> auto___type_4 X1 -> auto___def_65 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_26 prv -> False). tauto.
  exact (rem_2179).
Qed.

Remark rem_2181 : forall X1 X2:term, auto___def_26 prv -> auto___type_4 X1 -> auto___def_24 X2 -> auto___def_65 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X2 -> auto___def_26 prv -> auto___type_4 X1 -> auto___def_65 X1 X2). tauto. exact (rem_2180 X1 X2).
Qed.

Remark rem_2182 : forall X1 X2:term, auto___def_24 X2 -> auto___def_25 (key prv X1) -> auto___def_65 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1444 prv X1 H);  intros.
  apply (rem_2181 X1 X2);  tauto.
Qed.

Remark rem_2183 : auto___def_45 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2184 : auto___def_45 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2183 H);  intros.
Qed.

Remark rem_2185 : forall X1 X2:term, auto___def_45 prv -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_65 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_45 prv -> False). tauto.
  exact (rem_2184).
Qed.

Remark rem_2186 : forall X1 X2:term, auto___def_45 prv -> auto___type_8 X1 -> auto___type_7 X2 -> auto___def_65 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_45 prv -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_65 X1 X2). tauto. exact (rem_2185 X1 X2).
Qed.

Remark rem_2187 : forall X1 X2:term, auto___def_44 (key prv X1) -> auto___type_7 X2 -> auto___def_65 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1450 prv X1 H);  intros.
  apply (rem_2186 X1 X2);  tauto.
Qed.

Remark rem_2188 : forall X1 X2:term, auto___type_7 X2 -> auto___def_44 (key prv X1) -> auto___def_65 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_44 (key prv X1) -> auto___type_7 X2 -> auto___def_65 X1 X2). tauto. exact (rem_2187 X1 X2).
Qed.

Remark rem_2189 : auto___def_86 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2190 : auto___def_86 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2189 H);  intros.
Qed.

Remark rem_2191 : forall X1 X2:term, auto___def_84 X2 -> auto___def_86 prv -> auto___type_19 X1 -> auto___def_65 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_86 prv -> False). tauto.
  exact (rem_2190).
Qed.

Remark rem_2192 : forall X1 X2:term, auto___def_86 prv -> auto___type_19 X1 -> auto___def_84 X2 -> auto___def_65 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_84 X2 -> auto___def_86 prv -> auto___type_19 X1 -> auto___def_65 X1 X2). tauto. exact (rem_2191 X1 X2).
Qed.

Remark rem_2193 : forall X1 X2:term, auto___def_84 X2 -> auto___def_85 (key prv X1) -> auto___def_65 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1457 prv X1 H);  intros.
  apply (rem_2192 X1 X2);  tauto.
Qed.

Remark rem_2194 : forall X1 X2:term, auto_knows_current (crypt X2 (key prv X1)) -> auto___def_65 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_987 X2 (key prv X1) H);  intros.
  apply (rem_2152 X1 X2);  tauto.
  apply (rem_2157 X1 X2);  tauto.
  apply (rem_2158 X1 X2);  tauto.
  apply (rem_2166 X1 X2);  tauto.
  apply (rem_2172 X1 X2);  tauto.
  apply (rem_2177 X1 X2);  tauto.
  apply (rem_2182 X1 X2);  tauto.
  apply (rem_2188 X1 X2);  tauto.
  apply (rem_2193 X1 X2);  tauto.
Qed.

Remark rem_2195 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2196 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_2195 epsilon_m__type_6_p__type_5 X1).
Defined.

Remark rem_2197 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2198 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2197 epsilon_m__type_6_p__type_5 X2).
Defined.

Remark rem_2199 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_2196 epsilon_m__type_6_p__type_5 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_2198 epsilon_m__type_6_p__type_5 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2200 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_5 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2. intros A1 A2.
  case (rem_2199 epsilon_m__type_6_p__type_5 X1 X2 A1 A2). clear  epsilon_m__type_6_p__type_5 A1 A2. intros. apply trans___type_5_noncea_old_1;  tauto.
 clear  epsilon_m__type_6_p__type_5 A1 A2. tauto.
Defined.

Remark rem_2201 : forall X1 X2:term, auto___type_6 (noncea_old X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2202 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_6 (noncea_old X1 X2) -> auto___type_5 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2. intro H. intros.
  elim (rem_2201 X1 X2 H);  intros.
  apply (rem_2200 epsilon_m__type_6_p__type_5 X1 X2);  tauto.
Defined.

Remark rem_2203 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2204 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_2203 epsilon_m__type_6_p__type_5 X1);  assumption.
  tauto.
Defined.

Remark rem_2205 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_5 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2. intros A1.
  case (rem_2204 epsilon_m__type_6_p__type_5 X1 A1). clear  epsilon_m__type_6_p__type_5 A1. intros. apply trans___type_5_nonceb_old_1;  tauto.
 clear  epsilon_m__type_6_p__type_5 A1. tauto.
Defined.

Remark rem_2206 : forall X1 X2:term, auto___type_6 (nonceb_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2207 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_6 (nonceb_old X1 X2) -> auto___type_5 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2. intro H. intros.
  elim (rem_2206 X1 X2 H);  intros.
  apply (rem_2205 epsilon_m__type_6_p__type_5 X1 X2);  tauto.
Defined.

Remark rem_2208 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1:term, auto___type_6 X1 -> auto___type_6 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2209 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___type_6 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2.
  cut (auto___type_6 X1 -> auto___type_6 X1). tauto. exact (rem_2208 epsilon_m__type_6_p__type_5 X1).
Defined.

Remark rem_2210 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X2:term, auto___def_38 X2 -> auto___def_38 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2211 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___def_38 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2.
  cut (auto___def_38 X2 -> auto___def_38 X2). tauto. exact (rem_2210 epsilon_m__type_6_p__type_5 X2).
Defined.

Remark rem_2212 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> (auto___type_6 X1 /\ auto___def_38 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2. intros A1 A2.
  cut (auto___type_6 X1). 2:apply (rem_2209 epsilon_m__type_6_p__type_5 X1 X2);  assumption.
  cut (auto___def_38 X2). 2:apply (rem_2211 epsilon_m__type_6_p__type_5 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2213 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___type_5 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2. intros A1 A2.
  case (rem_2212 epsilon_m__type_6_p__type_5 X1 X2 A1 A2). clear  epsilon_m__type_6_p__type_5 A1 A2. intros. apply trans___type_5_cons_1;  tauto.
 clear  epsilon_m__type_6_p__type_5 A1 A2. tauto.
Defined.

Remark rem_2214 : forall X1 X2:term, auto___type_6 (cons X1 X2) -> or_1
    (auto___type_6 X1 /\ auto___def_38 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2215 : (forall X:term, auto___type_6 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_6 (cons X1 X2) -> auto___type_5 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_p__type_5. intros X1 X2. intro H. intros.
  elim (rem_2214 X1 X2 H);  intros.
  apply (rem_2213 epsilon_m__type_6_p__type_5 X1 X2);  tauto.
Defined.

Remark rem_2216 : forall X1 X2:term, auto___type_6 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2217 : forall X1 X2:term, auto___type_6 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2218 : forall X1 X2:term, auto___type_6 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2219 : auto___type_6 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2220 : forall X1 X2:term, auto___type_6 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2221 : forall X1 X2:term, auto___type_6 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2222 : forall X1:term, auto___type_6 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2223 : auto___type_6 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2224 : forall X1 X2:term, auto___type_6 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2225 : forall X1 X2:term, auto___type_6 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2226 : auto___type_6 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2227 : auto___type_6 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2228 : forall X1 X2:term, auto___type_6 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2229 : forall X1 X2:term, auto___type_6 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2230 : forall X1:term, auto___type_6 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2231 : auto___type_6 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2232 : forall X1 X2:term, auto___type_6 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2233 : auto___type_6 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2234 : auto___type_6 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2235 : auto___type_6 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2236 : forall X1 X2:term, auto___type_6 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2237 : forall X1 X2:term, auto___type_6 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2238 : forall X1:term, auto___type_6 X1 -> auto___type_5 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_6_p__type_5 1.
  intro X. case X.
   intro H. elim (rem_2226  H).
   intro H. elim (rem_2219  H).
  intros X1 X2;  exact (rem_2215 epsilon_m__type_6_p__type_5 X1 X2).
  intros X1 X2. intro H. elim (rem_2216 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2228 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2229 X1 X2 H).
   intro H. elim (rem_2233  H).
  intros X1 X2. intro H. elim (rem_2237 X1 X2 H).
   intro H. elim (rem_2234  H).
  intros X1 X2. intro H. elim (rem_2236 X1 X2 H).
  intros X1 X2;  exact (rem_2202 epsilon_m__type_6_p__type_5 X1 X2).
  intros X1 X2. intro H. elim (rem_2217 X1 X2 H).
  intros X1 X2;  exact (rem_2207 epsilon_m__type_6_p__type_5 X1 X2).
  intros X1. intro H. elim (rem_2222 X1 H).
  intros X1 X2. intro H. elim (rem_2225 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2224 X1 X2 H).
   intro H. elim (rem_2227  H).
   intro H. elim (rem_2223  H).
  intros X1 X2. intro H. elim (rem_2221 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2220 X1 X2 H).
  intros X1. intro H. elim (rem_2230 X1 H).
   intro H. elim (rem_2235  H).
  intros X1 X2. intro H. elim (rem_2232 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2218 X1 X2 H).
   intro H. elim (rem_2231  H).
Qed.

Remark rem_2239 : (forall X:term, auto___def_36 X -> auto___def_28 X)
    -> forall X1:term, auto___type_6 X1 -> auto___type_5 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_36_p__def_28. exact (rem_2238).
Defined.

Remark rem_2240 : (forall X:term, auto___def_36 X -> auto___def_28 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___type_5 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_36_p__def_28. intros X1 X2.
  cut (auto___type_6 X1 -> auto___type_5 X1). tauto. exact (rem_2239 epsilon_m__def_36_p__def_28 X1).
Defined.

Remark rem_2241 : (forall X:term, auto___def_39 X -> auto___def_31 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2242 : (forall X:term, auto___def_39 X -> auto___def_31 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_39_p__def_31. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_2241 epsilon_m__def_39_p__def_31 X1);  assumption.
  tauto.
Defined.

Remark rem_2243 : (forall X:term, auto___def_39 X -> auto___def_31 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___def_31 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_39_p__def_31. intros X1 X2. intros A1.
  case (rem_2242 epsilon_m__def_39_p__def_31 X1 A1). clear  epsilon_m__def_39_p__def_31 A1. intros. apply trans___def_31_nonceb_old_1;  tauto.
 clear  epsilon_m__def_39_p__def_31 A1. tauto.
Defined.

Remark rem_2244 : (forall X:term, auto___def_39 X -> auto___def_31 X)
    -> forall X1 X2:term, auto___def_39 (nonceb_old X1 X2) -> auto___def_31 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_39_p__def_31. intros X1 X2. intro H. intros.
  elim (rem_1473 X1 X2 H);  intros.
  apply (rem_2243 epsilon_m__def_39_p__def_31 X1 X2);  tauto.
Defined.

Remark rem_2245 : forall X1:term, auto___def_39 X1 -> auto___def_31 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_39_p__def_31 1.
  intro X. case X.
   intro H. elim (rem_1486  H).
   intro H. elim (rem_1478  H).
  intros X1 X2. intro H. elim (rem_1490 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1475 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1488 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1489 X1 X2 H).
   intro H. elim (rem_1494  H).
  intros X1 X2. intro H. elim (rem_1498 X1 X2 H).
   intro H. elim (rem_1495  H).
  intros X1 X2. intro H. elim (rem_1497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1479 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1476 X1 X2 H).
  intros X1 X2;  exact (rem_2244 epsilon_m__def_39_p__def_31 X1 X2).
  intros X1. intro H. elim (rem_1482 X1 H).
  intros X1 X2. intro H. elim (rem_1485 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1484 X1 X2 H).
   intro H. elim (rem_1487  H).
   intro H. elim (rem_1483  H).
  intros X1 X2. intro H. elim (rem_1481 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1480 X1 X2 H).
  intros X1. intro H. elim (rem_1491 X1 H).
   intro H. elim (rem_1496  H).
  intros X1 X2. intro H. elim (rem_1493 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1477 X1 X2 H).
   intro H. elim (rem_1492  H).
Qed.

Remark rem_2246 : (forall X:term, auto___def_38 X -> auto___def_30 X)
    -> forall X1:term, auto___def_39 X1 -> auto___def_31 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_38_p__def_30. exact (rem_2245).
Defined.

Remark rem_2247 : (forall X:term, auto___def_38 X -> auto___def_30 X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto___def_31 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_38_p__def_30. intros X1 X2.
  cut (auto___def_39 X1 -> auto___def_31 X1). tauto. exact (rem_2246 epsilon_m__def_38_p__def_30 X1).
Defined.

Remark rem_2248 : (forall X:term, auto___def_40 X -> auto___def_32 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_p__def_32.  tauto.
Defined.

Remark rem_2249 : (forall X:term, auto___def_40 X -> auto___def_32 X)
    -> auto___def_32 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_p__def_32.  case (rem_2248 epsilon_m__def_40_p__def_32). clear  epsilon_m__def_40_p__def_32. intros. apply trans___def_32_nil_1;  tauto.
 clear  epsilon_m__def_40_p__def_32. tauto.
Defined.

Remark rem_2250 : auto___def_40 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2251 : (forall X:term, auto___def_40 X -> auto___def_32 X)
    -> auto___def_40 nil -> auto___def_32 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_p__def_32. intro H. intros.
  elim (rem_2250 H);  intros.
  apply (rem_2249 epsilon_m__def_40_p__def_32);  tauto.
Defined.

Remark rem_2252 : forall X1 X2:term, auto___def_40 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2253 : forall X1 X2:term, auto___def_40 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2254 : forall X1 X2:term, auto___def_40 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2255 : auto___def_40 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2256 : forall X1 X2:term, auto___def_40 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2257 : forall X1 X2:term, auto___def_40 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2258 : forall X1 X2:term, auto___def_40 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2259 : forall X1:term, auto___def_40 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2260 : auto___def_40 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2261 : forall X1 X2:term, auto___def_40 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2262 : forall X1 X2:term, auto___def_40 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2263 : auto___def_40 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2264 : auto___def_40 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2265 : forall X1 X2:term, auto___def_40 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2266 : forall X1 X2:term, auto___def_40 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2267 : forall X1 X2:term, auto___def_40 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2268 : forall X1 X2:term, auto___def_40 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2269 : forall X1:term, auto___def_40 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2270 : auto___def_40 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2271 : forall X1 X2:term, auto___def_40 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2272 : auto___def_40 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2273 : auto___def_40 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2274 : forall X1 X2:term, auto___def_40 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2275 : forall X1 X2:term, auto___def_40 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2276 : forall X2:term, auto___def_40 X2 -> auto___def_32 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_40_p__def_32 1.
  intro X. case X.
   intro H. elim (rem_2263  H).
   intro H. elim (rem_2255  H).
  intros X1 X2. intro H. elim (rem_2268 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2252 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2266 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2267 X1 X2 H).
   intro H. elim (rem_2272  H).
  intros X1 X2. intro H. elim (rem_2275 X1 X2 H).
  exact (rem_2251 epsilon_m__def_40_p__def_32 ).
  intros X1 X2. intro H. elim (rem_2274 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2256 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2253 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2265 X1 X2 H).
  intros X1. intro H. elim (rem_2259 X1 H).
  intros X1 X2. intro H. elim (rem_2262 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2261 X1 X2 H).
   intro H. elim (rem_2264  H).
   intro H. elim (rem_2260  H).
  intros X1 X2. intro H. elim (rem_2258 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2257 X1 X2 H).
  intros X1. intro H. elim (rem_2269 X1 H).
   intro H. elim (rem_2273  H).
  intros X1 X2. intro H. elim (rem_2271 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2254 X1 X2 H).
   intro H. elim (rem_2270  H).
Qed.

Remark rem_2277 : (forall X:term, auto___def_38 X -> auto___def_30 X)
    -> forall X2:term, auto___def_40 X2 -> auto___def_32 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_38_p__def_30. exact (rem_2276).
Defined.

Remark rem_2278 : (forall X:term, auto___def_38 X -> auto___def_30 X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_38_p__def_30. intros X1 X2.
  cut (auto___def_40 X2 -> auto___def_32 X2). tauto. exact (rem_2277 epsilon_m__def_38_p__def_30 X2).
Defined.

Remark rem_2279 : (forall X:term, auto___def_38 X -> auto___def_30 X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> (auto___def_31 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_38_p__def_30. intros X1 X2. intros A1 A2.
  cut (auto___def_31 X1). 2:apply (rem_2247 epsilon_m__def_38_p__def_30 X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_2278 epsilon_m__def_38_p__def_30 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2280 : (forall X:term, auto___def_38 X -> auto___def_30 X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto___def_30 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_38_p__def_30. intros X1 X2. intros A1 A2.
  case (rem_2279 epsilon_m__def_38_p__def_30 X1 X2 A1 A2). clear  epsilon_m__def_38_p__def_30 A1 A2. intros. apply trans___def_30_cons_1;  tauto.
 clear  epsilon_m__def_38_p__def_30 A1 A2. tauto.
Defined.

Remark rem_2281 : (forall X:term, auto___def_38 X -> auto___def_30 X)
    -> forall X1 X2:term, auto___def_38 (cons X1 X2) -> auto___def_30 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_38_p__def_30. intros X1 X2. intro H. intros.
  elim (rem_1929 X1 X2 H);  intros.
  apply (rem_2280 epsilon_m__def_38_p__def_30 X1 X2);  tauto.
Defined.

Remark rem_2282 : forall X1 X2:term, auto___def_38 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2283 : forall X1 X2:term, auto___def_38 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2284 : forall X1 X2:term, auto___def_38 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2285 : auto___def_38 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2286 : forall X1 X2:term, auto___def_38 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2287 : forall X1 X2:term, auto___def_38 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2288 : forall X1 X2:term, auto___def_38 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2289 : forall X1:term, auto___def_38 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2290 : auto___def_38 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2291 : forall X1 X2:term, auto___def_38 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2292 : forall X1 X2:term, auto___def_38 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2293 : auto___def_38 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2294 : auto___def_38 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2295 : forall X1 X2:term, auto___def_38 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2296 : forall X1 X2:term, auto___def_38 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2297 : forall X1 X2:term, auto___def_38 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2298 : forall X1:term, auto___def_38 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2299 : auto___def_38 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2300 : forall X1 X2:term, auto___def_38 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2301 : auto___def_38 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2302 : auto___def_38 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2303 : auto___def_38 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2304 : forall X1 X2:term, auto___def_38 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2305 : forall X1 X2:term, auto___def_38 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2306 : forall X2:term, auto___def_38 X2 -> auto___def_30 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_38_p__def_30 1.
  intro X. case X.
   intro H. elim (rem_2293  H).
   intro H. elim (rem_2285  H).
  intros X1 X2;  exact (rem_2281 epsilon_m__def_38_p__def_30 X1 X2).
  intros X1 X2. intro H. elim (rem_2282 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2296 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2297 X1 X2 H).
   intro H. elim (rem_2301  H).
  intros X1 X2. intro H. elim (rem_2305 X1 X2 H).
   intro H. elim (rem_2302  H).
  intros X1 X2. intro H. elim (rem_2304 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2286 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2283 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2295 X1 X2 H).
  intros X1. intro H. elim (rem_2289 X1 H).
  intros X1 X2. intro H. elim (rem_2292 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2291 X1 X2 H).
   intro H. elim (rem_2294  H).
   intro H. elim (rem_2290  H).
  intros X1 X2. intro H. elim (rem_2288 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2287 X1 X2 H).
  intros X1. intro H. elim (rem_2298 X1 H).
   intro H. elim (rem_2303  H).
  intros X1 X2. intro H. elim (rem_2300 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2284 X1 X2 H).
   intro H. elim (rem_2299  H).
Qed.

Remark rem_2307 : (forall X:term, auto___def_36 X -> auto___def_28 X)
    -> forall X2:term, auto___def_38 X2 -> auto___def_30 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_36_p__def_28. exact (rem_2306).
Defined.

Remark rem_2308 : (forall X:term, auto___def_36 X -> auto___def_28 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_36_p__def_28. intros X1 X2.
  cut (auto___def_38 X2 -> auto___def_30 X2). tauto. exact (rem_2307 epsilon_m__def_36_p__def_28 X2).
Defined.

Remark rem_2309 : (forall X:term, auto___def_36 X -> auto___def_28 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> (auto___type_5 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_36_p__def_28. intros X1 X2. intros A1 A2.
  cut (auto___type_5 X1). 2:apply (rem_2240 epsilon_m__def_36_p__def_28 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_2308 epsilon_m__def_36_p__def_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2310 : (forall X:term, auto___def_36 X -> auto___def_28 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___def_28 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_36_p__def_28. intros X1 X2. intros A1 A2.
  case (rem_2309 epsilon_m__def_36_p__def_28 X1 X2 A1 A2). clear  epsilon_m__def_36_p__def_28 A1 A2. intros. apply trans___def_28_cons_1;  tauto.
 clear  epsilon_m__def_36_p__def_28 A1 A2. tauto.
Defined.

Remark rem_2311 : (forall X:term, auto___def_36 X -> auto___def_28 X)
    -> forall X1 X2:term, auto___def_36 (cons X1 X2) -> auto___def_28 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_36_p__def_28. intros X1 X2. intro H. intros.
  elim (rem_1935 X1 X2 H);  intros.
  apply (rem_2310 epsilon_m__def_36_p__def_28 X1 X2);  tauto.
Defined.

Remark rem_2312 : forall X1 X2:term, auto___def_36 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2313 : forall X1 X2:term, auto___def_36 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2314 : forall X1 X2:term, auto___def_36 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2315 : forall X1 X2:term, auto___def_36 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2316 : forall X1 X2:term, auto___def_36 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2317 : forall X1 X2:term, auto___def_36 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2318 : forall X1:term, auto___def_36 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2319 : auto___def_36 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2320 : forall X1 X2:term, auto___def_36 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2321 : forall X1 X2:term, auto___def_36 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2322 : auto___def_36 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2323 : forall X1 X2:term, auto___def_36 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2324 : forall X1 X2:term, auto___def_36 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2325 : forall X1 X2:term, auto___def_36 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2326 : forall X1:term, auto___def_36 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2327 : auto___def_36 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2328 : forall X1 X2:term, auto___def_36 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2329 : auto___def_36 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2330 : forall X1 X2:term, auto___def_36 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2331 : forall X1 X2:term, auto___def_36 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2332 : forall X2:term, auto___def_36 X2 -> auto___def_28 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_36_p__def_28 1.
  intro X. case X.
   intro H. elim (rem_1993  H).
   intro H. elim (rem_1990  H).
  intros X1 X2;  exact (rem_2311 epsilon_m__def_36_p__def_28 X1 X2).
  intros X1 X2. intro H. elim (rem_2312 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2325 X1 X2 H).
   intro H. elim (rem_1984  H).
  intros X1 X2. intro H. elim (rem_2331 X1 X2 H).
   intro H. elim (rem_2329  H).
  intros X1 X2. intro H. elim (rem_2330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2313 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2323 X1 X2 H).
  intros X1. intro H. elim (rem_2318 X1 H).
  intros X1 X2. intro H. elim (rem_2321 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2320 X1 X2 H).
   intro H. elim (rem_2322  H).
   intro H. elim (rem_2319  H).
  intros X1 X2. intro H. elim (rem_2317 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2316 X1 X2 H).
  intros X1. intro H. elim (rem_2326 X1 H).
   intro H. elim (rem_1998  H).
  intros X1 X2. intro H. elim (rem_2328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2314 X1 X2 H).
   intro H. elim (rem_2327  H).
Qed.

Remark rem_2333 : forall X1 X2 X3:term, auto___def_36 X2 -> auto___def_37 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto___def_28 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_36 X2 -> auto___def_28 X2). tauto. exact (rem_2332 X2).
Qed.

Remark rem_2334 : forall X1 X2 X3:term, auto___def_36 X2 -> auto___def_37 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_1278 X3).
Qed.

Remark rem_2335 : forall X1 X2 X3:term, auto___def_36 X2 -> auto___def_37 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> (auto___def_28 X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto___def_28 X2). 2:apply (rem_2333 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2334 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_2336 : forall X1 X2 X3:term, auto___def_36 X2 -> auto___def_37 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto___def_35 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2335 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_35_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_2337 : forall X1 X2 X3:term, auto___def_24 X2 -> auto___def_25 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto___def_24 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_24 X2 -> auto___def_24 X2). tauto. exact (rem_1892 X2).
Qed.

Remark rem_2338 : forall X1 X2 X3:term, auto___def_24 X2 -> auto___def_25 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_1278 X3).
Qed.

Remark rem_2339 : forall X1 X2 X3:term, auto___def_24 X2 -> auto___def_25 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> (auto___def_24 X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto___def_24 X2). 2:apply (rem_2337 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2338 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_2340 : forall X1 X2 X3:term, auto___def_24 X2 -> auto___def_25 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto___def_35 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2339 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_35_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_2341 : forall X1 X2 X3:term, auto___def_44 (key sym (r_old X3 X1)) -> auto___type_7 X2 -> auto_knows_old X3 -> auto___type_7 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___type_7 X2 -> auto___type_7 X2). tauto. exact (rem_1900 X2).
Qed.

Remark rem_2342 : forall X1 X2 X3:term, auto___def_44 (key sym (r_old X3 X1)) -> auto___type_7 X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_1278 X3).
Qed.

Remark rem_2343 : forall X1 X2 X3:term, auto___def_44 (key sym (r_old X3 X1)) -> auto___type_7 X2 -> auto_knows_old X3 -> (auto___type_7 X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto___type_7 X2). 2:apply (rem_2341 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2342 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_2344 : forall X1 X2 X3:term, auto___def_44 (key sym (r_old X3 X1)) -> auto___type_7 X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2343 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_35_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_2345 : forall X1 X2 X3:term, auto___type_7 X2 -> auto___def_44 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto___def_35 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_44 (key sym (r_old X3 X1)) -> auto___type_7 X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3). tauto. exact (rem_2344 X1 X2 X3).
Qed.

Remark rem_2346 : forall X1 X2 X3:term, auto___def_62 (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_319 X3 X1 H);  intros.
Qed.

Remark rem_2347 : forall X1 X2 X3:term, auto___def_61 sym -> auto___def_62 (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_62 (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3). tauto.
  exact (rem_2346 X1 X2 X3).
Qed.

Remark rem_2348 : forall X1 X2 X3:term, auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1098 X3 X1 H);  intros.
Qed.

Remark rem_2349 : forall X1 X2 X3:term, auto___def_51 sym -> auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_35 X1 X2 X3). tauto.
  exact (rem_2348 X1 X2 X3).
Qed.

Remark rem_2350 : forall X1 X2 X3:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_35 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1361 sym (r_old X3 X1) H);  intros.
  apply (rem_2347 X1 X2 X3);  tauto.
  apply (rem_2349 X1 X2 X3);  tauto.
Qed.

Remark rem_2351 : forall X1 X2 X3:term, auto_knows_old X2 -> auto_knows_old (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto___def_35 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_35 X1 X2 X3). tauto. exact (rem_2350 X1 X2 X3).
Qed.

Remark rem_2352 : forall X1 X2 X3:term, auto_knows_old X3 -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto___def_35 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1860 X2 (key sym (r_old X3 X1)) H);  intros.
  apply (rem_2336 X1 X2 X3);  tauto.
  apply (rem_2340 X1 X2 X3);  tauto.
  apply (rem_2345 X1 X2 X3);  tauto.
  apply (rem_2351 X1 X2 X3);  tauto.
Qed.

Remark rem_2353 : forall X1 X2 X3 X4:term, auto_knows_old X3 -> auto_knows_old (cons X4 nil) -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto___def_35 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X3 -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto___def_35 X1 X2 X3). tauto.
  exact (rem_2352 X1 X2 X3).
Qed.

Remark rem_2354 : forall X1 X2 X3 X4:term, auto_knows_old (cons X3 (cons X4 nil)) -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto___def_35 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1263 X3 (cons X4 nil) H);  intros.
  apply (rem_2353 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2355 : forall X1 X2 X3 X4:term, auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto_knows_old (cons X3 (cons X4 nil)) -> auto___def_35 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old (cons X3 (cons X4 nil)) -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto___def_35 X1 X2 X3). tauto. exact (rem_2354 X1 X2 X3 X4).
Qed.

Remark rem_2356 : auto___def_117 prv. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_117_prv_1;  tauto.
 tauto.
Qed.

Remark rem_2357 : (forall X:term, auto___type_22 X -> auto___type_21 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2358 : (forall X:term, auto___type_22 X -> auto___type_21 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_22_p__type_21. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_2357 epsilon_m__type_22_p__type_21 X1);  assumption.
  tauto.
Defined.

Remark rem_2359 : (forall X:term, auto___type_22 X -> auto___type_21 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_21 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_22_p__type_21. intros X1 X2. intros A1.
  case (rem_2358 epsilon_m__type_22_p__type_21 X1 A1). clear  epsilon_m__type_22_p__type_21 A1. intros. apply trans___type_21_nonceb_current_1;  tauto.
 clear  epsilon_m__type_22_p__type_21 A1. tauto.
Defined.

Remark rem_2360 : (forall X:term, auto___type_22 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_22 (nonceb_current X1 X2) -> auto___type_21 (nonceb_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_p__type_21. intros X1 X2. intro H. intros.
  elim (rem_1610 X1 X2 H);  intros.
  apply (rem_2359 epsilon_m__type_22_p__type_21 X1 X2);  tauto.
Defined.

Remark rem_2361 : forall X1:term, auto___type_22 X1 -> auto___type_21 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_22_p__type_21 1.
  intro X. case X.
   intro H. elim (rem_1622  H).
   intro H. elim (rem_1614  H).
  intros X1 X2. intro H. elim (rem_1627 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1612 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1625 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1626 X1 X2 H).
   intro H. elim (rem_1631  H).
  intros X1 X2. intro H. elim (rem_1635 X1 X2 H).
   intro H. elim (rem_1632  H).
  intros X1 X2. intro H. elim (rem_1634 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1615 X1 X2 H).
  intros X1 X2;  exact (rem_2360 epsilon_m__type_22_p__type_21 X1 X2).
  intros X1 X2. intro H. elim (rem_1624 X1 X2 H).
  intros X1. intro H. elim (rem_1618 X1 H).
  intros X1 X2. intro H. elim (rem_1621 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1620 X1 X2 H).
   intro H. elim (rem_1623  H).
   intro H. elim (rem_1619  H).
  intros X1 X2. intro H. elim (rem_1617 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1616 X1 X2 H).
  intros X1. intro H. elim (rem_1628 X1 H).
   intro H. elim (rem_1633  H).
  intros X1 X2. intro H. elim (rem_1630 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1613 X1 X2 H).
   intro H. elim (rem_1629  H).
Qed.

Remark rem_2362 : forall X1 X2:term, auto___type_22 X1 -> auto_knows_current X2 -> auto___type_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_21 X1). tauto. exact (rem_2361 X1).
Qed.

Remark rem_2363 : forall X1 X3:term, auto___type_22 X1 -> auto_knows_current X3 -> auto___type_21 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___type_22 X1 -> auto_knows_current X2 -> auto___type_21 X1). tauto. exact (rem_2362 X1 X2).
Qed.

Remark rem_2364 : (forall X:term, auto___def_96 X -> auto___type_21 X)
    -> forall X1:term, auto___type_21 X1 -> auto___type_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2365 : (forall X:term, auto___def_96 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_96_p__type_21. intros X1 X2.
  cut (auto___type_21 X1 -> auto___type_21 X1). tauto. exact (rem_2364 epsilon_m__def_96_p__type_21 X1).
Defined.

Remark rem_2366 : (forall X:term, auto___def_96 X -> auto___type_21 X)
    -> forall X2:term, auto___def_98 X2 -> auto___def_98 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2367 : (forall X:term, auto___def_96 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___def_98 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_96_p__type_21. intros X1 X2.
  cut (auto___def_98 X2 -> auto___def_98 X2). tauto. exact (rem_2366 epsilon_m__def_96_p__type_21 X2).
Defined.

Remark rem_2368 : (forall X:term, auto___def_96 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> (auto___type_21 X1 /\ auto___def_98 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_96_p__type_21. intros X1 X2. intros A1 A2.
  cut (auto___type_21 X1). 2:apply (rem_2365 epsilon_m__def_96_p__type_21 X1 X2);  assumption.
  cut (auto___def_98 X2). 2:apply (rem_2367 epsilon_m__def_96_p__type_21 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2369 : (forall X:term, auto___def_96 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_21 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_96_p__type_21. intros X1 X2. intros A1 A2.
  case (rem_2368 epsilon_m__def_96_p__type_21 X1 X2 A1 A2). clear  epsilon_m__def_96_p__type_21 A1 A2. intros. apply trans___type_21_cons_1;  tauto.
 clear  epsilon_m__def_96_p__type_21 A1 A2. tauto.
Defined.

Remark rem_2370 : (forall X:term, auto___def_96 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___def_96 (cons X1 X2) -> auto___type_21 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_96_p__type_21. intros X1 X2. intro H. intros.
  elim (rem_1645 X1 X2 H);  intros.
  apply (rem_2369 epsilon_m__def_96_p__type_21 X1 X2);  tauto.
Defined.

Remark rem_2371 : forall X1:term, auto___def_96 X1 -> auto___type_21 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_96_p__type_21 1.
  intro X. case X.
   intro H. elim (rem_1658  H).
   intro H. elim (rem_1650  H).
  intros X1 X2;  exact (rem_2370 epsilon_m__def_96_p__type_21 X1 X2).
  intros X1 X2. intro H. elim (rem_1647 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1661 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1662 X1 X2 H).
   intro H. elim (rem_1666  H).
  intros X1 X2. intro H. elim (rem_1670 X1 X2 H).
   intro H. elim (rem_1667  H).
  intros X1 X2. intro H. elim (rem_1669 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1651 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1648 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1660 X1 X2 H).
  intros X1. intro H. elim (rem_1654 X1 H).
  intros X1 X2. intro H. elim (rem_1657 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1656 X1 X2 H).
   intro H. elim (rem_1659  H).
   intro H. elim (rem_1655  H).
  intros X1 X2. intro H. elim (rem_1653 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1652 X1 X2 H).
  intros X1. intro H. elim (rem_1663 X1 H).
   intro H. elim (rem_1668  H).
  intros X1 X2. intro H. elim (rem_1665 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1649 X1 X2 H).
   intro H. elim (rem_1664  H).
Qed.

Remark rem_2372 : forall X1 X2:term, auto___def_96 X1 -> auto_knows_current X2 -> auto___type_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_96 X1 -> auto___type_21 X1). tauto. exact (rem_2371 X1).
Qed.

Remark rem_2373 : forall X1 X3:term, auto___def_96 X1 -> auto_knows_current X3 -> auto___type_21 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_96 X1 -> auto_knows_current X2 -> auto___type_21 X1). tauto. exact (rem_2372 X1 X2).
Qed.

Remark rem_2374 : (forall X:term, auto___def_84 X -> auto___type_21 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2375 : (forall X:term, auto___def_84 X -> auto___type_21 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_84_p__type_21. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_2374 epsilon_m__def_84_p__type_21 X1).
Defined.

Remark rem_2376 : (forall X:term, auto___def_84 X -> auto___type_21 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2377 : (forall X:term, auto___def_84 X -> auto___type_21 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_84_p__type_21. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2376 epsilon_m__def_84_p__type_21 X2).
Defined.

Remark rem_2378 : (forall X:term, auto___def_84 X -> auto___type_21 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_84_p__type_21. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_2375 epsilon_m__def_84_p__type_21 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_2377 epsilon_m__def_84_p__type_21 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2379 : (forall X:term, auto___def_84 X -> auto___type_21 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_21 (noncea_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_84_p__type_21. intros X1 X2. intros A1 A2.
  case (rem_2378 epsilon_m__def_84_p__type_21 X1 X2 A1 A2). clear  epsilon_m__def_84_p__type_21 A1 A2. intros. apply trans___type_21_noncea_current_1;  tauto.
 clear  epsilon_m__def_84_p__type_21 A1 A2. tauto.
Defined.

Remark rem_2380 : (forall X:term, auto___def_84 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___def_84 (noncea_current X1 X2) -> auto___type_21 (noncea_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_p__type_21. intros X1 X2. intro H. intros.
  elim (rem_1680 X1 X2 H);  intros.
  apply (rem_2379 epsilon_m__def_84_p__type_21 X1 X2);  tauto.
Defined.

Remark rem_2381 : forall X1:term, auto___def_84 X1 -> auto___type_21 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_84_p__type_21 1.
  intro X. case X.
   intro H. elim (rem_1693  H).
   intro H. elim (rem_1685  H).
  intros X1 X2. intro H. elim (rem_1698 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1682 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1696 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1697 X1 X2 H).
   intro H. elim (rem_1702  H).
  intros X1 X2. intro H. elim (rem_1705 X1 X2 H).
   intro H. elim (rem_1703  H).
  intros X1 X2;  exact (rem_2380 epsilon_m__def_84_p__type_21 X1 X2).
  intros X1 X2. intro H. elim (rem_1686 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1683 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1695 X1 X2 H).
  intros X1. intro H. elim (rem_1689 X1 H).
  intros X1 X2. intro H. elim (rem_1692 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1691 X1 X2 H).
   intro H. elim (rem_1694  H).
   intro H. elim (rem_1690  H).
  intros X1 X2. intro H. elim (rem_1688 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1687 X1 X2 H).
  intros X1. intro H. elim (rem_1699 X1 H).
   intro H. elim (rem_1704  H).
  intros X1 X2. intro H. elim (rem_1701 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1684 X1 X2 H).
   intro H. elim (rem_1700  H).
Qed.

Remark rem_2382 : forall X1 X2:term, auto___def_84 X1 -> auto_knows_current X2 -> auto___type_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_84 X1 -> auto___type_21 X1). tauto. exact (rem_2381 X1).
Qed.

Remark rem_2383 : forall X1 X3:term, auto___def_84 X1 -> auto_knows_current X3 -> auto___type_21 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_84 X1 -> auto_knows_current X2 -> auto___type_21 X1). tauto. exact (rem_2382 X1 X2).
Qed.

Remark rem_2384 : forall X1 X2 X3:term, auto___def_95 X2 X1 X3 -> auto___type_21 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_298 X2 X1 X3 H);  intros.
  apply (rem_2363 X1 X3);  tauto.
  apply (rem_2373 X1 X3);  tauto.
  apply (rem_2383 X1 X3);  tauto.
Qed.

Remark rem_2385 : forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2386 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_2385 X1).
Qed.

Remark rem_2387 : forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2388 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_2387 X2).
Qed.

Remark rem_2389 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_2386 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_2388 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2390 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_10 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2389 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_10_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2391 : forall X1 X2:term, auto___def_13 X2 -> auto___def_12 X1 -> auto___def_10 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_13 X2 -> auto___def_10 (key X1 X2)). tauto. exact (rem_2390 X1 X2).
Qed.

Remark rem_2392 : forall X1:term, auto___type_21 X1 -> auto___type_21 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2393 : forall X1 X2:term, auto___def_98 X2 -> auto___type_21 X1 -> auto___type_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_21 X1 -> auto___type_21 X1). tauto. exact (rem_2392 X1).
Qed.

Remark rem_2394 : forall X2:term, auto___def_98 X2 -> auto___def_98 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2395 : forall X1 X2:term, auto___def_98 X2 -> auto___type_21 X1 -> auto___def_98 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_98 X2 -> auto___def_98 X2). tauto. exact (rem_2394 X2).
Qed.

Remark rem_2396 : forall X1 X2:term, auto___def_98 X2 -> auto___type_21 X1 -> (auto___type_21 X1 /\ auto___def_98 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_21 X1). 2:apply (rem_2393 X1 X2);  assumption.
  cut (auto___def_98 X2). 2:apply (rem_2395 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2397 : forall X1 X2:term, auto___def_98 X2 -> auto___type_21 X1 -> auto___def_96 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2396 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_96_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2398 : forall X1:term, auto___def_91 X1 -> auto___def_91 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2399 : forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> auto___def_91 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_91 X1 -> auto___def_91 X1). tauto. exact (rem_2398 X1).
Qed.

Remark rem_2400 : forall X2:term, auto___def_92 X2 -> auto___def_92 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2401 : forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> auto___def_92 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_92 X2 -> auto___def_92 X2). tauto. exact (rem_2400 X2).
Qed.

Remark rem_2402 : forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> (auto___def_91 X1 /\ auto___def_92 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_91 X1). 2:apply (rem_2399 X1 X2);  assumption.
  cut (auto___def_92 X2). 2:apply (rem_2401 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2403 : forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> auto___def_90 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2402 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_90_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2404 : forall X1 X2:term, auto___def_92 X2 -> auto___def_91 X1 -> auto___def_90 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_91 X1 -> auto___def_92 X2 -> auto___def_90 (cons X1 X2)). tauto. exact (rem_2403 X1 X2).
Qed.

Remark rem_2405 : forall X1:term, auto___type_5 X1 -> auto___type_5 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2406 : forall X1 X2:term, auto___def_30 X2 -> auto___type_5 X1 -> auto___type_5 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_5 X1 -> auto___type_5 X1). tauto. exact (rem_2405 X1).
Qed.

Remark rem_2407 : forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2408 : forall X1 X2:term, auto___def_30 X2 -> auto___type_5 X1 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_2407 X2).
Qed.

Remark rem_2409 : forall X1 X2:term, auto___def_30 X2 -> auto___type_5 X1 -> (auto___type_5 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_5 X1). 2:apply (rem_2406 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_2408 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2410 : forall X1 X2:term, auto___def_30 X2 -> auto___type_5 X1 -> auto___def_28 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2409 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_28_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2411 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2412 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_2411 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_2413 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2414 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_2413 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_2415 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_2412 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_2414 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2416 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_3 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2415 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_crypt_1;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2417 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2418 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_2417 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_2419 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2420 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_2419 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_2421 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_2418 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_2420 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2422 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_3 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2421 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_crypt_2;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2423 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2424 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_2423 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_2425 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2426 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_2425 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_2427 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_2424 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_2426 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2428 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_3 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2427 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_crypt_3;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2429 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2430 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2429 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_2431 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2432 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_2431 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_2433 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_2430 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2432 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2434 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_3 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2433 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_crypt_4;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2435 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto___type_3 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intro H. intros.
  elim (rem_1860 X1 X2 H);  intros.
  apply (rem_2416 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_2422 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_2428 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_2434 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
Defined.

Remark rem_2436 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3.  tauto.
Defined.

Remark rem_2437 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> auto___type_3 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3.  case (rem_2436 epsilon_mknows_old_p__type_3). clear  epsilon_mknows_old_p__type_3. intros. apply trans___type_3_bob_1;  tauto.
 clear  epsilon_mknows_old_p__type_3. tauto.
Defined.

Remark rem_2438 : auto_knows_old bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2439 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> auto_knows_old bob -> auto___type_3 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intro H. intros.
  elim (rem_2438 H);  intros.
  apply (rem_2437 epsilon_mknows_old_p__type_3);  tauto.
Defined.

Remark rem_2440 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_2429 epsilon_mknows_old_p__type_3 X1);  assumption.
  tauto.
Defined.

Remark rem_2441 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_3 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1. intros A1.
  case (rem_2440 epsilon_mknows_old_p__type_3 X1 A1). clear  epsilon_mknows_old_p__type_3 A1. intros. apply trans___type_3_p_1;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1. tauto.
Defined.

Remark rem_2442 : forall X1:term, auto_knows_old (p X1) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2443 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto_knows_old (p X1) -> auto___type_3 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1. intro H. intros.
  elim (rem_2442 X1 H);  intros.
  apply (rem_2441 epsilon_mknows_old_p__type_3 X1);  tauto.
Defined.

Remark rem_2444 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> auto___type_3 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3.  case (rem_2436 epsilon_mknows_old_p__type_3). clear  epsilon_mknows_old_p__type_3. intros. apply trans___type_3_alice_1;  tauto.
 clear  epsilon_mknows_old_p__type_3. tauto.
Defined.

Remark rem_2445 : auto_knows_old alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2446 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> auto_knows_old alice -> auto___type_3 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intro H. intros.
  elim (rem_2445 H);  intros.
  apply (rem_2444 epsilon_mknows_old_p__type_3);  tauto.
Defined.

Remark rem_2447 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_3 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2433 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_dec_1;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2448 : forall X1 X2:term, auto_knows_old (dec X1 X2) -> or_1
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2449 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old (dec X1 X2) -> auto___type_3 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intro H. intros.
  elim (rem_2448 X1 X2 H);  intros.
  apply (rem_2447 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
Defined.

Remark rem_2450 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_10 X1 -> auto___def_10 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2451 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_10 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_10 X1). tauto. exact (rem_2450 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_2452 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_11 X2 -> auto___def_11 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2453 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_11 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_11 X2 -> auto___def_11 X2). tauto. exact (rem_2452 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_2454 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto___def_10 X1 /\ auto___def_11 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_10 X1). 2:apply (rem_2451 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_11 X2). 2:apply (rem_2453 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2455 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___type_3 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2454 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_enc_1;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2456 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_15 X1 -> auto___def_15 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2457 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_15 X1 -> auto___def_15 X1). tauto. exact (rem_2456 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_2458 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_16 X2 -> auto___def_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2459 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_16 X2 -> auto___def_16 X2). tauto. exact (rem_2458 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_2460 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto___def_15 X1 /\ auto___def_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_15 X1). 2:apply (rem_2457 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_16 X2). 2:apply (rem_2459 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2461 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___type_3 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2460 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_enc_2;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2462 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_19 X1 -> auto___def_19 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2463 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_19 X1 -> auto___def_19 X1). tauto. exact (rem_2462 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_2464 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_20 X2 -> auto___def_20 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2465 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_20 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_20 X2 -> auto___def_20 X2). tauto. exact (rem_2464 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_2466 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto___def_19 X1 /\ auto___def_20 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_19 X1). 2:apply (rem_2463 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_20 X2). 2:apply (rem_2465 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2467 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___type_3 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2466 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_enc_3;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2468 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_3 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2433 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_enc_4;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2469 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old (enc X1 X2) -> auto___type_3 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intro H. intros.
  elim (rem_1290 X1 X2 H);  intros.
  apply (rem_2455 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_2461 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_2467 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_2468 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
Defined.

Remark rem_2470 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_3 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2433 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_cons_1;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2471 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto___type_3 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intro H. intros.
  elim (rem_1263 X1 X2 H);  intros.
  apply (rem_2470 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
Defined.

Remark rem_2472 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_3 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1. intros A1.
  case (rem_2440 epsilon_mknows_old_p__type_3 X1 A1). clear  epsilon_mknows_old_p__type_3 A1. intros. apply trans___type_3_s_1;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1. tauto.
Defined.

Remark rem_2473 : forall X1:term, auto_knows_old (s X1) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2474 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto_knows_old (s X1) -> auto___type_3 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1. intro H. intros.
  elim (rem_2473 X1 H);  intros.
  apply (rem_2472 epsilon_mknows_old_p__type_3 X1);  tauto.
Defined.

Remark rem_2475 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> auto___type_3 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3.  case (rem_2436 epsilon_mknows_old_p__type_3). clear  epsilon_mknows_old_p__type_3. intros. apply trans___type_3_i_1;  tauto.
 clear  epsilon_mknows_old_p__type_3. tauto.
Defined.

Remark rem_2476 : auto_knows_old i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2477 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> auto_knows_old i -> auto___type_3 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intro H. intros.
  elim (rem_2476 H);  intros.
  apply (rem_2475 epsilon_mknows_old_p__type_3);  tauto.
Defined.

Remark rem_2478 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> auto___type_3 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3.  case (rem_2436 epsilon_mknows_old_p__type_3). clear  epsilon_mknows_old_p__type_3. intros. apply trans___type_3_nil_1;  tauto.
 clear  epsilon_mknows_old_p__type_3. tauto.
Defined.

Remark rem_2479 : auto_knows_old nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2480 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> auto_knows_old nil -> auto___type_3 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intro H. intros.
  elim (rem_2479 H);  intros.
  apply (rem_2478 epsilon_mknows_old_p__type_3);  tauto.
Defined.

Remark rem_2481 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> auto___type_3 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3.  case (rem_2436 epsilon_mknows_old_p__type_3). clear  epsilon_mknows_old_p__type_3. intros. apply trans___type_3_server_1;  tauto.
 clear  epsilon_mknows_old_p__type_3. tauto.
Defined.

Remark rem_2482 : auto_knows_old server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2483 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> auto_knows_old server -> auto___type_3 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intro H. intros.
  elim (rem_2482 H);  intros.
  apply (rem_2481 epsilon_mknows_old_p__type_3);  tauto.
Defined.

Remark rem_2484 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_61 X1 -> auto___def_61 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2485 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_61 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_61 X1). tauto. exact (rem_2484 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_2486 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_62 X2 -> auto___def_62 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2487 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_62 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_62 X2). tauto. exact (rem_2486 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_2488 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_61 X1 /\ auto___def_62 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_61 X1). 2:apply (rem_2485 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_62 X2). 2:apply (rem_2487 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2489 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___type_3 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2488 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_key_1;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2490 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2491 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_2490 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_2492 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2493 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2492 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_2494 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_2491 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_2493 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2495 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_3 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  case (rem_2494 epsilon_mknows_old_p__type_3 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_3 A1 A2. intros. apply trans___type_3_key_2;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_2496 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto___type_3 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intro H. intros.
  elim (rem_1361 X1 X2 H);  intros.
  apply (rem_2489 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_2495 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
Defined.

Remark rem_2497 : forall X1 X2:term, auto_knows_old (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2498 : forall X1 X2:term, auto_knows_old (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2499 : forall X1 X2:term, auto_knows_old (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2500 : forall X1 X2:term, auto_knows_old (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2501 : forall X1 X2:term, auto_knows_old (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2502 : auto_knows_old pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2503 : forall X1 X2:term, auto_knows_old (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2504 : auto_knows_old prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2505 : forall X1 X2:term, auto_knows_old (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2506 : auto_knows_old sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2507 : forall X1 X2:term, auto_knows_old (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2508 : forall X1 X2:term, auto_knows_old (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2509 : forall X1:term, auto_knows_old X1 -> auto___type_3 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_old_p__type_3 1.
  intro X. case X.
  exact (rem_2446 epsilon_mknows_old_p__type_3 ).
  exact (rem_2439 epsilon_mknows_old_p__type_3 ).
  intros X1 X2;  exact (rem_2471 epsilon_mknows_old_p__type_3 X1 X2).
  intros X1 X2;  exact (rem_2435 epsilon_mknows_old_p__type_3 X1 X2).
  intros X1 X2;  exact (rem_2449 epsilon_mknows_old_p__type_3 X1 X2).
  intros X1 X2;  exact (rem_2469 epsilon_mknows_old_p__type_3 X1 X2).
  exact (rem_2477 epsilon_mknows_old_p__type_3 ).
  intros X1 X2;  exact (rem_2496 epsilon_mknows_old_p__type_3 X1 X2).
  exact (rem_2480 epsilon_mknows_old_p__type_3 ).
  intros X1 X2. intro H. elim (rem_2508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2505 X1 X2 H).
  intros X1;  exact (rem_2443 epsilon_mknows_old_p__type_3 X1).
  intros X1 X2. intro H. elim (rem_2503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1287 X1 X2 H).
   intro H. elim (rem_2504  H).
   intro H. elim (rem_2502  H).
  intros X1 X2. intro H. elim (rem_2501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2500 X1 X2 H).
  intros X1;  exact (rem_2474 epsilon_mknows_old_p__type_3 X1).
  exact (rem_2483 epsilon_mknows_old_p__type_3 ).
  intros X1 X2. intro H. elim (rem_2507 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2498 X1 X2 H).
   intro H. elim (rem_2506  H).
Qed.

Remark rem_2510 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto___type_3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X1 -> auto___type_3 X1). tauto. exact (rem_2509 X1).
Qed.

Remark rem_2511 : forall X1 X2:term, auto___def_18 X2 X1 -> auto___type_3 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_868 X2 X1 H);  intros.
  apply (rem_2510 X1 X2);  tauto.
Qed.

Remark rem_2512 : forall X1:term, auto___def_114 X1 -> auto___def_114 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2513 : forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_114 X1 -> auto___def_114 X1). tauto. exact (rem_2512 X1).
Qed.

Remark rem_2514 : forall X2:term, auto___def_66 X2 -> auto___def_66 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2515 : forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_66 X2 -> auto___def_66 X2). tauto. exact (rem_2514 X2).
Qed.

Remark rem_2516 : forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_2513 X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_2515 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2517 : forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_113 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2516 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_113_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2518 : forall X1 X2:term, auto___def_66 X2 -> auto___def_114 X1 -> auto___def_113 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_114 X1 -> auto___def_66 X2 -> auto___def_113 (key X1 X2)). tauto. exact (rem_2517 X1 X2).
Qed.

Remark rem_2519 : forall X1 X2 X3:term, auto___def_24 X3 -> auto_knows_old X1 -> auto___def_42 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_278 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_42_r_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2520 : forall X1 X2 X3:term, auto___def_28 X3 -> auto_knows_old X1 -> auto___def_42 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_281 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_42_r_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2521 : forall X1 X2 X3:term, auto___type_7 X3 -> auto_knows_old X1 -> auto___def_42 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_284 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_42_r_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2522 : forall X1 X2 X3:term, auto___def_35 X1 X2 X3 -> or_3
    (auto___def_24 X2 /\ auto_knows_old X3)
    (auto___def_28 X2 /\ auto_knows_old X3)
    (auto___type_7 X2 /\ auto_knows_old X3)
.
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_2523 : forall X1 X2 X3:term, auto___def_35 X2 X3 X1 -> auto___def_42 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_2522 X2 X3 X1 H);  intros.
  apply (rem_2519 X1 X2 X3);  tauto.
  apply (rem_2520 X1 X2 X3);  tauto.
  apply (rem_2521 X1 X2 X3);  tauto.
Qed.

Remark rem_2524 : forall X1:term, auto___def_99 X1 -> auto___def_99 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2525 : forall X1 X2:term, auto___def_100 X2 -> auto___def_99 X1 -> auto___def_99 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_99 X1 -> auto___def_99 X1). tauto. exact (rem_2524 X1).
Qed.

Remark rem_2526 : forall X2:term, auto___def_100 X2 -> auto___def_100 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2527 : forall X1 X2:term, auto___def_100 X2 -> auto___def_99 X1 -> auto___def_100 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_100 X2 -> auto___def_100 X2). tauto. exact (rem_2526 X2).
Qed.

Remark rem_2528 : forall X1 X2:term, auto___def_100 X2 -> auto___def_99 X1 -> (auto___def_99 X1 /\ auto___def_100 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_99 X1). 2:apply (rem_2525 X1 X2);  assumption.
  cut (auto___def_100 X2). 2:apply (rem_2527 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2529 : forall X1 X2:term, auto___def_100 X2 -> auto___def_99 X1 -> auto___def_98 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2528 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_98_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2530 : auto___def_86 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_86_sym_1;  tauto.
 tauto.
Qed.

Remark rem_2531 : forall X1 X2 X3 X4:term, auto___def_17 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___type_2 (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1339 (noncea_current X3 X4) (cons X2 nil) H);  intros.
Qed.

Remark rem_2532 : forall X1 X2 X3 X4:term, auto___def_39 X2 -> auto___def_42 X1 -> auto___type_6 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2236 X3 X4 H);  intros.
Qed.

Remark rem_2533 : forall X1 X2 X3 X4:term, auto___def_39 X2 -> auto___def_40 nil -> auto___def_42 X1 -> auto___type_6 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_39 X2 -> auto___def_42 X1 -> auto___type_6 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto.
  exact (rem_2532 X1 X2 X3 X4).
Qed.

Remark rem_2534 : forall X1 X2 X3 X4:term, auto___def_38 (cons X2 nil) -> auto___def_42 X1 -> auto___type_6 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1929 X2 nil H);  intros.
  apply (rem_2533 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2535 : forall X1 X2 X3 X4:term, auto___def_38 (cons X2 nil) -> auto___def_41 sym -> auto___def_42 X1 -> auto___type_6 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_38 (cons X2 nil) -> auto___def_42 X1 -> auto___type_6 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto.
  exact (rem_2534 X1 X2 X3 X4).
Qed.

Remark rem_2536 : forall X1 X2 X3 X4:term, auto___def_41 sym -> auto___def_42 X1 -> auto___def_38 (cons X2 nil) -> auto___type_6 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_38 (cons X2 nil) -> auto___def_41 sym -> auto___def_42 X1 -> auto___type_6 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto. exact (rem_2535 X1 X2 X3 X4).
Qed.

Remark rem_2537 : forall X1 X2 X3 X4:term, auto___def_37 (key sym X1) -> auto___def_38 (cons X2 nil) -> auto___type_6 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1405 sym X1 H);  intros.
  apply (rem_2536 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2538 : forall X1 X2 X3 X4:term, auto___type_6 (noncea_current X3 X4) -> auto___def_38 (cons X2 nil) -> auto___def_37 (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_37 (key sym X1) -> auto___def_38 (cons X2 nil) -> auto___type_6 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto. exact (rem_2537 X1 X2 X3 X4).
Qed.

Remark rem_2539 : forall X1 X2 X3 X4:term, auto___def_36 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___def_37 (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1935 (noncea_current X3 X4) (cons X2 nil) H);  intros.
  apply (rem_2538 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2540 : forall X1 X2:term, auto___def_21 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2541 : forall X1 X2 X3 X4:term, auto___def_21 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___def_22 (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2540 (noncea_current X3 X4) (cons X2 nil) H);  intros.
Qed.

Remark rem_2542 : forall X1 X2 X3 X4:term, auto___def_71 (crypt X1 (key pub (session_current X3 X4))) -> auto___def_72 (passwd_current X3 X4) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_803 X1 (key pub (session_current X3 X4)) H);  intros.
Qed.

Remark rem_2543 : forall X1 X2:term, auto___def_17 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_1948 X1)). tauto.
Qed.

Remark rem_2544 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_17 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2543 X1 X2).
Qed.

Remark rem_2545 : forall X1 X2:term, auto___def_17 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_1953 X1)). tauto.
Qed.

Remark rem_2546 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_17 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2545 X1 X2).
Qed.

Remark rem_2547 : (forall X:term, auto___def_17 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (r_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1767 X1 X2 H);  intros.
Defined.

Remark rem_2548 : (forall X:term, auto___def_17 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_17 (r_old X1 X2) -> auto___def_13 (r_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1322 X1 X2 H);  intros.
  apply (rem_2547 epsilon_m__def_17_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2549 : forall X1:term, auto___def_17 X1 -> auto___def_13 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_17_m__def_13 1.
  intro X. case X.
   intro H. elim (rem_1334  H).
   intro H. elim (rem_1327  H).
  intros X1 X2. intro H. elim (rem_1339 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1337 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1338 X1 X2 H).
   intro H. elim (rem_1343  H).
  intros X1 X2. intro H. elim (rem_1347 X1 X2 H).
   intro H. elim (rem_1344  H).
  intros X1 X2. intro H. elim (rem_1346 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1325 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1336 X1 X2 H).
  intros X1. intro H. elim (rem_1330 X1 H).
  intros X1 X2. intro H. elim (rem_1333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1332 X1 X2 H).
   intro H. elim (rem_1335  H).
   intro H. elim (rem_1331  H).
  intros X1 X2. intro H. elim (rem_1329 X1 X2 H).
  intros X1 X2;  exact (rem_2548 epsilon_m__def_17_m__def_13 X1 X2).
  intros X1. intro H. elim (rem_1340 X1 H).
   intro H. elim (rem_1345  H).
  intros X1 X2. intro H. elim (rem_1342 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1326 X1 X2 H).
   intro H. elim (rem_1341  H).
Qed.

Remark rem_2550 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___def_17 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2549 X1)). tauto.
Qed.

Remark rem_2551 : forall X1 X2:term, auto___def_17 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2544 X1 X2);  tauto.
  apply (rem_2546 X1 X2);  tauto.
  apply (rem_2550 X1 X2);  tauto.
Qed.

Remark rem_2552 : forall X1 X2 X3 X4:term, auto___def_17 X1 -> auto___type_2 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_17 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2551 X1 X2).
Qed.

Remark rem_2553 : forall X1 X2:term, auto___def_36 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_1987 X1)). tauto.
Qed.

Remark rem_2554 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_36 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2553 X1 X2).
Qed.

Remark rem_2555 : forall X1 X2:term, auto___def_36 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2001 X1)). tauto.
Qed.

Remark rem_2556 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_36 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2555 X1 X2).
Qed.

Remark rem_2557 : (forall X:term, auto___def_13 X -> auto___def_36 X -> False)
    -> forall X1 X2:term, auto___def_36 (session_old X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_13_m__def_36. intros X1 X2. intro H. intros.
  elim (rem_2314 X1 X2 H);  intros.
Defined.

Remark rem_2558 : (forall X:term, auto___def_13 X -> auto___def_36 X -> False)
    -> forall X1 X2:term, auto___def_13 (session_old X1 X2) -> auto___def_36 (session_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_13_m__def_36. intros X1 X2. intro H. intros.
  elim (rem_1761 X1 X2 H);  intros.
  apply (rem_2557 epsilon_m__def_13_m__def_36 X1 X2);  tauto.
Defined.

Remark rem_2559 : forall X1:term, auto___def_13 X1 -> auto___def_36 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_13_m__def_36 1.
  intro X. case X.
   intro H. elim (rem_1773  H).
   intro H. elim (rem_1765  H).
  intros X1 X2. intro H. elim (rem_1778 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1763 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1776 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1777 X1 X2 H).
   intro H. elim (rem_1782  H).
  intros X1 X2. intro H. elim (rem_1786 X1 X2 H).
   intro H. elim (rem_1783  H).
  intros X1 X2. intro H. elim (rem_1785 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1766 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1764 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1775 X1 X2 H).
  intros X1. intro H. elim (rem_1769 X1 H).
  intros X1 X2. intro H. elim (rem_1772 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1771 X1 X2 H).
   intro H. elim (rem_1774  H).
   intro H. elim (rem_1770  H).
  intros X1 X2. intro H. elim (rem_1768 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1767 X1 X2 H).
  intros X1. intro H. elim (rem_1779 X1 H).
   intro H. elim (rem_1784  H).
  intros X1 X2. intro H. elim (rem_1781 X1 X2 H).
  intros X1 X2;  exact (rem_2558 epsilon_m__def_13_m__def_36 X1 X2).
   intro H. elim (rem_1780  H).
Qed.

Remark rem_2560 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___def_36 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2559 X1)). tauto.
Qed.

Remark rem_2561 : forall X1 X2:term, auto___def_36 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2554 X1 X2);  tauto.
  apply (rem_2556 X1 X2);  tauto.
  apply (rem_2560 X1 X2);  tauto.
Qed.

Remark rem_2562 : forall X1 X2 X3 X4:term, auto___def_36 X1 -> auto___def_37 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_36 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2561 X1 X2).
Qed.

Remark rem_2563 : forall X1 X2:term, auto___def_21 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_1963 X1)). tauto.
Qed.

Remark rem_2564 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_21 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2563 X1 X2).
Qed.

Remark rem_2565 : forall X1 X2:term, auto___def_21 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_1977 X1)). tauto.
Qed.

Remark rem_2566 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_21 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2565 X1 X2).
Qed.

Remark rem_2567 : forall X1 X2:term, auto___def_21 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2568 : (forall X:term, auto___def_13 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (session_old X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_13_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2567 X1 X2 H);  intros.
Defined.

Remark rem_2569 : (forall X:term, auto___def_13 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_13 (session_old X1 X2) -> auto___def_21 (session_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_13_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_1761 X1 X2 H);  intros.
  apply (rem_2568 epsilon_m__def_13_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_2570 : forall X1:term, auto___def_13 X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_13_m__def_21 1.
  intro X. case X.
   intro H. elim (rem_1773  H).
   intro H. elim (rem_1765  H).
  intros X1 X2. intro H. elim (rem_1778 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1763 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1776 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1777 X1 X2 H).
   intro H. elim (rem_1782  H).
  intros X1 X2. intro H. elim (rem_1786 X1 X2 H).
   intro H. elim (rem_1783  H).
  intros X1 X2. intro H. elim (rem_1785 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1766 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1764 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1775 X1 X2 H).
  intros X1. intro H. elim (rem_1769 X1 H).
  intros X1 X2. intro H. elim (rem_1772 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1771 X1 X2 H).
   intro H. elim (rem_1774  H).
   intro H. elim (rem_1770  H).
  intros X1 X2. intro H. elim (rem_1768 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1767 X1 X2 H).
  intros X1. intro H. elim (rem_1779 X1 H).
   intro H. elim (rem_1784  H).
  intros X1 X2. intro H. elim (rem_1781 X1 X2 H).
  intros X1 X2;  exact (rem_2569 epsilon_m__def_13_m__def_21 X1 X2).
   intro H. elim (rem_1780  H).
Qed.

Remark rem_2571 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___def_21 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2570 X1)). tauto.
Qed.

Remark rem_2572 : forall X1 X2:term, auto___def_21 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2564 X1 X2);  tauto.
  apply (rem_2566 X1 X2);  tauto.
  apply (rem_2571 X1 X2);  tauto.
Qed.

Remark rem_2573 : forall X1 X2 X3 X4:term, auto___def_21 X1 -> auto___def_22 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_21 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2572 X1 X2).
Qed.

Remark rem_2574 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X2 -> auto_knows_current X1 -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_61 sym -> False). tauto.
  exact (rem_1310).
Qed.

Remark rem_2575 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X1 -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_1313).
Qed.

Remark rem_2576 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (crypt X1 X2) -> auto___def_17 X1 -> auto___type_2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1763 X1 X2 H);  intros.
Defined.

Remark rem_2577 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1763 X1 X2 H);  intros.
Defined.

Remark rem_2578 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (crypt X1 X2) -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1763 X1 X2 H);  intros.
Defined.

Remark rem_2579 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1763 X1 X2 H);  intros.
Defined.

Remark rem_2580 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (crypt X1 X2) -> auto___type_22 X1 -> auto___def_104 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1763 X1 X2 H);  intros.
Defined.

Remark rem_2581 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (crypt X1 X2) -> auto___def_88 X1 -> auto___def_89 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1763 X1 X2 H);  intros.
Defined.

Remark rem_2582 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1763 X1 X2 H);  intros.
Defined.

Remark rem_2583 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1763 X1 X2 H);  intros.
Defined.

Remark rem_2584 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (crypt X1 X2) -> auto___def_84 X1 -> auto___def_85 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1763 X1 X2 H);  intros.
Defined.

Remark rem_2585 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_13 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_987 X1 X2 H);  intros.
  apply (rem_2576 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2577 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2578 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2579 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2580 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2581 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2582 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2583 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2584 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2586 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> auto___def_13 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intro H. intros.
  elim (rem_1765 H);  intros.
Defined.

Remark rem_2587 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> auto_knows_current bob -> auto___def_13 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intro H. intros.
  elim (rem_991 H);  intros.
  apply (rem_2586 epsilon_mknows_current_m__def_13);  tauto.
Defined.

Remark rem_2588 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1766 X1 X2 H);  intros.
Defined.

Remark rem_2589 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_old X1 X2) -> auto___def_13 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_994 X1 X2 H);  intros.
  apply (rem_2588 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2590 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1:term, auto___def_13 (p X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1. intro H. intros.
  elim (rem_1769 X1 H);  intros.
Defined.

Remark rem_2591 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1:term, auto_knows_current (p X1) -> auto___def_13 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1. intro H. intros.
  elim (rem_998 X1 H);  intros.
  apply (rem_2590 epsilon_mknows_current_m__def_13 X1);  tauto.
Defined.

Remark rem_2592 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1771 X1 X2 H);  intros.
Defined.

Remark rem_2593 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto_knows_current (passwd_old X1 X2) -> auto___def_13 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1001 X1 X2 H);  intros.
  apply (rem_2592 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2594 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> auto___def_13 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intro H. intros.
  elim (rem_1773 H);  intros.
Defined.

Remark rem_2595 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> auto_knows_current alice -> auto___def_13 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intro H. intros.
  elim (rem_1004 H);  intros.
  apply (rem_2594 epsilon_mknows_current_m__def_13);  tauto.
Defined.

Remark rem_2596 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1775 X1 X2 H);  intros.
Defined.

Remark rem_2597 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto_knows_current (nonceb_old X1 X2) -> auto___def_13 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1007 X1 X2 H);  intros.
  apply (rem_2596 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2598 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (dec X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1776 X1 X2 H);  intros.
Defined.

Remark rem_2599 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto_knows_current (dec X1 X2) -> auto___def_13 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1010 X1 X2 H);  intros.
  apply (rem_2598 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2600 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (enc X1 X2) -> auto___def_71 X1 -> auto___def_72 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1777 X1 X2 H);  intros.
Defined.

Remark rem_2601 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (enc X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1777 X1 X2 H);  intros.
Defined.

Remark rem_2602 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (enc X1 X2) -> auto___def_79 X1 -> auto___def_80 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1777 X1 X2 H);  intros.
Defined.

Remark rem_2603 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (enc X1 X2) -> auto___def_75 X1 -> auto___def_76 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1777 X1 X2 H);  intros.
Defined.

Remark rem_2604 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto_knows_current (enc X1 X2) -> auto___def_13 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1031 X1 X2 H);  intros.
  apply (rem_2600 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2601 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2602 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2603 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2605 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (cons X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1778 X1 X2 H);  intros.
Defined.

Remark rem_2606 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___def_13 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1034 X1 X2 H);  intros.
  apply (rem_2605 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2607 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1:term, auto___def_13 (s X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1. intro H. intros.
  elim (rem_1779 X1 H);  intros.
Defined.

Remark rem_2608 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto___def_13 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1. intro H. intros.
  elim (rem_1037 X1 H);  intros.
  apply (rem_2607 epsilon_mknows_current_m__def_13 X1);  tauto.
Defined.

Remark rem_2609 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> auto___def_13 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intro H. intros.
  elim (rem_1782 H);  intros.
Defined.

Remark rem_2610 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> auto_knows_current i -> auto___def_13 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intro H. intros.
  elim (rem_1040 H);  intros.
  apply (rem_2609 epsilon_mknows_current_m__def_13);  tauto.
Defined.

Remark rem_2611 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> auto___def_13 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intro H. intros.
  elim (rem_1783 H);  intros.
Defined.

Remark rem_2612 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> auto_knows_current nil -> auto___def_13 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intro H. intros.
  elim (rem_1043 H);  intros.
  apply (rem_2611 epsilon_mknows_current_m__def_13);  tauto.
Defined.

Remark rem_2613 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> auto___def_13 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intro H. intros.
  elim (rem_1784 H);  intros.
Defined.

Remark rem_2614 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> auto_knows_current server -> auto___def_13 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intro H. intros.
  elim (rem_1046 H);  intros.
  apply (rem_2613 epsilon_mknows_current_m__def_13);  tauto.
Defined.

Remark rem_2615 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (key X1 X2) -> auto___def_61 X1 -> auto___def_62 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1786 X1 X2 H);  intros.
Defined.

Remark rem_2616 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1786 X1 X2 H);  intros.
Defined.

Remark rem_2617 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (key X1 X2) -> auto___def_12 X1 -> auto___def_13 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1786 X1 X2 H);  intros.
Defined.

Remark rem_2618 : (forall X:term, auto_knows_current X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___def_13 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1066 X1 X2 H);  intros.
  apply (rem_2615 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2616 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
  apply (rem_2617 epsilon_mknows_current_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2619 : forall X1:term, auto_knows_current X1 -> auto___def_13 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_current_m__def_13 1.
  intro X. case X.
  exact (rem_2595 epsilon_mknows_current_m__def_13 ).
  exact (rem_2587 epsilon_mknows_current_m__def_13 ).
  intros X1 X2;  exact (rem_2606 epsilon_mknows_current_m__def_13 X1 X2).
  intros X1 X2;  exact (rem_2585 epsilon_mknows_current_m__def_13 X1 X2).
  intros X1 X2;  exact (rem_2599 epsilon_mknows_current_m__def_13 X1 X2).
  intros X1 X2;  exact (rem_2604 epsilon_mknows_current_m__def_13 X1 X2).
  exact (rem_2610 epsilon_mknows_current_m__def_13 ).
  intros X1 X2;  exact (rem_2618 epsilon_mknows_current_m__def_13 X1 X2).
  exact (rem_2612 epsilon_mknows_current_m__def_13 ).
  intros X1 X2. intro H. elim (rem_1077 X1 X2 H).
  intros X1 X2;  exact (rem_2589 epsilon_mknows_current_m__def_13 X1 X2).
  intros X1 X2. intro H. elim (rem_1068 X1 X2 H).
  intros X1 X2;  exact (rem_2597 epsilon_mknows_current_m__def_13 X1 X2).
  intros X1;  exact (rem_2591 epsilon_mknows_current_m__def_13 X1).
  intros X1 X2. intro H. elim (rem_1073 X1 X2 H).
  intros X1 X2;  exact (rem_2593 epsilon_mknows_current_m__def_13 X1 X2).
   intro H. elim (rem_1074  H).
   intro H. elim (rem_1072  H).
  intros X1 X2. intro H. elim (rem_1071 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1070 X1 X2 H).
  intros X1;  exact (rem_2608 epsilon_mknows_current_m__def_13 X1).
  exact (rem_2614 epsilon_mknows_current_m__def_13 ).
  intros X1 X2. intro H. elim (rem_1076 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1069 X1 X2 H).
   intro H. elim (rem_1075  H).
Qed.

Remark rem_2620 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto_knows_current X2 -> auto_knows_current X1 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2619 X1)). tauto.
Qed.

Remark rem_2621 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2574 X1 X2);  tauto.
  apply (rem_2575 X1 X2);  tauto.
  apply (rem_2620 X1 X2);  tauto.
Qed.

Remark rem_2622 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (key pub (session_current X3 X4)) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2621 X1 X2).
Qed.

Remark rem_2623 : forall X1 X2 X3 X4:term, auto_knows_current X1 -> auto_knows_current (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (key pub (session_current X3 X4)) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2). tauto. exact (rem_2622 X1 X2 X3 X4).
Qed.

Remark rem_2624 : (forall X:term, auto___type_22 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_62 (nonceb_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_315 X1 X2 H);  intros.
Defined.

Remark rem_2625 : (forall X:term, auto___type_22 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___type_22 (nonceb_current X1 X2) -> auto___def_62 (nonceb_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_1610 X1 X2 H);  intros.
  apply (rem_2624 epsilon_m__type_22_m__def_62 X1 X2);  tauto.
Defined.

Remark rem_2626 : forall X1:term, auto___type_22 X1 -> auto___def_62 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_22_m__def_62 1.
  intro X. case X.
   intro H. elim (rem_1622  H).
   intro H. elim (rem_1614  H).
  intros X1 X2. intro H. elim (rem_1627 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1612 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1625 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1626 X1 X2 H).
   intro H. elim (rem_1631  H).
  intros X1 X2. intro H. elim (rem_1635 X1 X2 H).
   intro H. elim (rem_1632  H).
  intros X1 X2. intro H. elim (rem_1634 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1615 X1 X2 H).
  intros X1 X2;  exact (rem_2625 epsilon_m__type_22_m__def_62 X1 X2).
  intros X1 X2. intro H. elim (rem_1624 X1 X2 H).
  intros X1. intro H. elim (rem_1618 X1 H).
  intros X1 X2. intro H. elim (rem_1621 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1620 X1 X2 H).
   intro H. elim (rem_1623  H).
   intro H. elim (rem_1619  H).
  intros X1 X2. intro H. elim (rem_1617 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1616 X1 X2 H).
  intros X1. intro H. elim (rem_1628 X1 H).
   intro H. elim (rem_1633  H).
  intros X1 X2. intro H. elim (rem_1630 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1613 X1 X2 H).
   intro H. elim (rem_1629  H).
Qed.

Remark rem_2627 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___type_22 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2626 X1)). tauto.
Qed.

Remark rem_2628 : (forall X:term, auto___type_22 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (nonceb_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_magent. intros X1 X2. intro H. intros.
  elim (rem_1095 X1 X2 H);  intros.
Defined.

Remark rem_2629 : (forall X:term, auto___type_22 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto___type_22 (nonceb_current X1 X2) -> auto_agent (nonceb_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_magent. intros X1 X2. intro H. intros.
  elim (rem_1610 X1 X2 H);  intros.
  apply (rem_2628 epsilon_m__type_22_magent X1 X2);  tauto.
Defined.

Remark rem_2630 : forall X1:term, auto___type_22 X1 -> auto_agent X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_22_magent 1.
  intro X. case X.
   intro H. elim (rem_1622  H).
   intro H. elim (rem_1614  H).
  intros X1 X2. intro H. elim (rem_1627 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1612 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1625 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1626 X1 X2 H).
   intro H. elim (rem_1631  H).
  intros X1 X2. intro H. elim (rem_1635 X1 X2 H).
   intro H. elim (rem_1632  H).
  intros X1 X2. intro H. elim (rem_1634 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1615 X1 X2 H).
  intros X1 X2;  exact (rem_2629 epsilon_m__type_22_magent X1 X2).
  intros X1 X2. intro H. elim (rem_1624 X1 X2 H).
  intros X1. intro H. elim (rem_1618 X1 H).
  intros X1 X2. intro H. elim (rem_1621 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1620 X1 X2 H).
   intro H. elim (rem_1623  H).
   intro H. elim (rem_1619  H).
  intros X1 X2. intro H. elim (rem_1617 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1616 X1 X2 H).
  intros X1. intro H. elim (rem_1628 X1 H).
   intro H. elim (rem_1633  H).
  intros X1 X2. intro H. elim (rem_1630 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1613 X1 X2 H).
   intro H. elim (rem_1629  H).
Qed.

Remark rem_2631 : forall X1 X2:term, auto___def_51 sym -> auto___type_22 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2630 X1)). tauto.
Qed.

Remark rem_2632 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___type_22 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_51 sym -> auto___type_22 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2631 X1 X2).
Qed.

Remark rem_2633 : (forall X:term, auto___type_22 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (nonceb_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1764 X1 X2 H);  intros.
Defined.

Remark rem_2634 : (forall X:term, auto___type_22 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___type_22 (nonceb_current X1 X2) -> auto___def_13 (nonceb_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1610 X1 X2 H);  intros.
  apply (rem_2633 epsilon_m__type_22_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2635 : forall X1:term, auto___type_22 X1 -> auto___def_13 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_22_m__def_13 1.
  intro X. case X.
   intro H. elim (rem_1622  H).
   intro H. elim (rem_1614  H).
  intros X1 X2. intro H. elim (rem_1627 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1612 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1625 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1626 X1 X2 H).
   intro H. elim (rem_1631  H).
  intros X1 X2. intro H. elim (rem_1635 X1 X2 H).
   intro H. elim (rem_1632  H).
  intros X1 X2. intro H. elim (rem_1634 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1615 X1 X2 H).
  intros X1 X2;  exact (rem_2634 epsilon_m__type_22_m__def_13 X1 X2).
  intros X1 X2. intro H. elim (rem_1624 X1 X2 H).
  intros X1. intro H. elim (rem_1618 X1 H).
  intros X1 X2. intro H. elim (rem_1621 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1620 X1 X2 H).
   intro H. elim (rem_1623  H).
   intro H. elim (rem_1619  H).
  intros X1 X2. intro H. elim (rem_1617 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1616 X1 X2 H).
  intros X1. intro H. elim (rem_1628 X1 H).
   intro H. elim (rem_1633  H).
  intros X1 X2. intro H. elim (rem_1630 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1613 X1 X2 H).
   intro H. elim (rem_1629  H).
Qed.

Remark rem_2636 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___type_22 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2635 X1)). tauto.
Qed.

Remark rem_2637 : forall X1 X2:term, auto___type_22 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2627 X1 X2);  tauto.
  apply (rem_2632 X1 X2);  tauto.
  apply (rem_2636 X1 X2);  tauto.
Qed.

Remark rem_2638 : forall X1 X2 X3 X4:term, auto___def_104 (key pub (session_current X3 X4)) -> auto___type_22 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_22 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2637 X1 X2).
Qed.

Remark rem_2639 : forall X1 X2 X3 X4:term, auto___type_22 X1 -> auto___def_104 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_104 (key pub (session_current X3 X4)) -> auto___type_22 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2). tauto. exact (rem_2638 X1 X2 X3 X4).
Qed.

Remark rem_2640 : (forall X:term, auto___def_88 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_62 (cons X1 X2) -> auto___type_20 X1 -> auto___def_90 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_88_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_330 X1 X2 H);  intros.
Defined.

Remark rem_2641 : forall X1 X2:term, auto___def_88 (cons X1 X2) -> or_1
    (auto___type_20 X1 /\ auto___def_90 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2642 : (forall X:term, auto___def_88 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_88 (cons X1 X2) -> auto___def_62 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_88_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_2641 X1 X2 H);  intros.
  apply (rem_2640 epsilon_m__def_88_m__def_62 X1 X2);  tauto.
Defined.

Remark rem_2643 : forall X1 X2:term, auto___def_88 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2644 : forall X1 X2:term, auto___def_88 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2645 : forall X1 X2:term, auto___def_88 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2646 : auto___def_88 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2647 : forall X1 X2:term, auto___def_88 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2648 : forall X1 X2:term, auto___def_88 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2649 : forall X1 X2:term, auto___def_88 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2650 : forall X1:term, auto___def_88 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2651 : auto___def_88 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2652 : forall X1 X2:term, auto___def_88 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2653 : forall X1 X2:term, auto___def_88 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2654 : auto___def_88 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2655 : auto___def_88 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2656 : forall X1 X2:term, auto___def_88 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2657 : forall X1 X2:term, auto___def_88 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2658 : forall X1 X2:term, auto___def_88 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2659 : forall X1:term, auto___def_88 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2660 : auto___def_88 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2661 : forall X1 X2:term, auto___def_88 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2662 : auto___def_88 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2663 : auto___def_88 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2664 : auto___def_88 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2665 : forall X1 X2:term, auto___def_88 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2666 : forall X1 X2:term, auto___def_88 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2667 : forall X1:term, auto___def_88 X1 -> auto___def_62 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_88_m__def_62 1.
  intro X. case X.
   intro H. elim (rem_2654  H).
   intro H. elim (rem_2646  H).
  intros X1 X2;  exact (rem_2642 epsilon_m__def_88_m__def_62 X1 X2).
  intros X1 X2. intro H. elim (rem_2643 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2657 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2658 X1 X2 H).
   intro H. elim (rem_2662  H).
  intros X1 X2. intro H. elim (rem_2666 X1 X2 H).
   intro H. elim (rem_2663  H).
  intros X1 X2. intro H. elim (rem_2665 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2647 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2644 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2656 X1 X2 H).
  intros X1. intro H. elim (rem_2650 X1 H).
  intros X1 X2. intro H. elim (rem_2653 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2652 X1 X2 H).
   intro H. elim (rem_2655  H).
   intro H. elim (rem_2651  H).
  intros X1 X2. intro H. elim (rem_2649 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2648 X1 X2 H).
  intros X1. intro H. elim (rem_2659 X1 H).
   intro H. elim (rem_2664  H).
  intros X1 X2. intro H. elim (rem_2661 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2645 X1 X2 H).
   intro H. elim (rem_2660  H).
Qed.

Remark rem_2668 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_88 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2667 X1)). tauto.
Qed.

Remark rem_2669 : (forall X:term, auto___def_88 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (cons X1 X2) -> auto___type_20 X1 -> auto___def_90 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_88_magent. intros X1 X2. intro H. intros.
  elim (rem_1108 X1 X2 H);  intros.
Defined.

Remark rem_2670 : (forall X:term, auto___def_88 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto___def_88 (cons X1 X2) -> auto_agent (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_88_magent. intros X1 X2. intro H. intros.
  elim (rem_2641 X1 X2 H);  intros.
  apply (rem_2669 epsilon_m__def_88_magent X1 X2);  tauto.
Defined.

Remark rem_2671 : forall X1:term, auto___def_88 X1 -> auto_agent X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_88_magent 1.
  intro X. case X.
   intro H. elim (rem_2654  H).
   intro H. elim (rem_2646  H).
  intros X1 X2;  exact (rem_2670 epsilon_m__def_88_magent X1 X2).
  intros X1 X2. intro H. elim (rem_2643 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2657 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2658 X1 X2 H).
   intro H. elim (rem_2662  H).
  intros X1 X2. intro H. elim (rem_2666 X1 X2 H).
   intro H. elim (rem_2663  H).
  intros X1 X2. intro H. elim (rem_2665 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2647 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2644 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2656 X1 X2 H).
  intros X1. intro H. elim (rem_2650 X1 H).
  intros X1 X2. intro H. elim (rem_2653 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2652 X1 X2 H).
   intro H. elim (rem_2655  H).
   intro H. elim (rem_2651  H).
  intros X1 X2. intro H. elim (rem_2649 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2648 X1 X2 H).
  intros X1. intro H. elim (rem_2659 X1 H).
   intro H. elim (rem_2664  H).
  intros X1 X2. intro H. elim (rem_2661 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2645 X1 X2 H).
   intro H. elim (rem_2660  H).
Qed.

Remark rem_2672 : forall X1 X2:term, auto___def_51 sym -> auto___def_88 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2671 X1)). tauto.
Qed.

Remark rem_2673 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_88 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_51 sym -> auto___def_88 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2672 X1 X2).
Qed.

Remark rem_2674 : (forall X:term, auto___def_88 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (cons X1 X2) -> auto___type_20 X1 -> auto___def_90 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_88_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1778 X1 X2 H);  intros.
Defined.

Remark rem_2675 : (forall X:term, auto___def_88 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_88 (cons X1 X2) -> auto___def_13 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_88_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_2641 X1 X2 H);  intros.
  apply (rem_2674 epsilon_m__def_88_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2676 : forall X1:term, auto___def_88 X1 -> auto___def_13 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_88_m__def_13 1.
  intro X. case X.
   intro H. elim (rem_2654  H).
   intro H. elim (rem_2646  H).
  intros X1 X2;  exact (rem_2675 epsilon_m__def_88_m__def_13 X1 X2).
  intros X1 X2. intro H. elim (rem_2643 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2657 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2658 X1 X2 H).
   intro H. elim (rem_2662  H).
  intros X1 X2. intro H. elim (rem_2666 X1 X2 H).
   intro H. elim (rem_2663  H).
  intros X1 X2. intro H. elim (rem_2665 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2647 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2644 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2656 X1 X2 H).
  intros X1. intro H. elim (rem_2650 X1 H).
  intros X1 X2. intro H. elim (rem_2653 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2652 X1 X2 H).
   intro H. elim (rem_2655  H).
   intro H. elim (rem_2651  H).
  intros X1 X2. intro H. elim (rem_2649 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2648 X1 X2 H).
  intros X1. intro H. elim (rem_2659 X1 H).
   intro H. elim (rem_2664  H).
  intros X1 X2. intro H. elim (rem_2661 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2645 X1 X2 H).
   intro H. elim (rem_2660  H).
Qed.

Remark rem_2677 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___def_88 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2676 X1)). tauto.
Qed.

Remark rem_2678 : forall X1 X2:term, auto___def_88 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2668 X1 X2);  tauto.
  apply (rem_2673 X1 X2);  tauto.
  apply (rem_2677 X1 X2);  tauto.
Qed.

Remark rem_2679 : forall X1 X2 X3 X4:term, auto___def_88 X1 -> auto___def_89 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_88 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2678 X1 X2).
Qed.

Remark rem_2680 : forall X1 X2:term, auto___def_24 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2032 X1)). tauto.
Qed.

Remark rem_2681 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_24 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2680 X1 X2).
Qed.

Remark rem_2682 : forall X1 X2:term, auto___def_24 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2037 X1)). tauto.
Qed.

Remark rem_2683 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_24 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_51 sym -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2682 X1 X2).
Qed.

Remark rem_2684 : (forall X:term, auto___def_24 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (noncea_old X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1766 X1 X2 H);  intros.
Defined.

Remark rem_2685 : (forall X:term, auto___def_24 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_24 (noncea_old X1 X2) -> auto___def_13 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_2007 X1 X2 H);  intros.
  apply (rem_2684 epsilon_m__def_24_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2686 : forall X1:term, auto___def_24 X1 -> auto___def_13 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_24_m__def_13 1.
  intro X. case X.
   intro H. elim (rem_2019  H).
   intro H. elim (rem_2012  H).
  intros X1 X2. intro H. elim (rem_1937 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2009 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2022 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2023 X1 X2 H).
   intro H. elim (rem_2027  H).
  intros X1 X2. intro H. elim (rem_2031 X1 X2 H).
   intro H. elim (rem_2028  H).
  intros X1 X2. intro H. elim (rem_2030 X1 X2 H).
  intros X1 X2;  exact (rem_2685 epsilon_m__def_24_m__def_13 X1 X2).
  intros X1 X2. intro H. elim (rem_2010 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2021 X1 X2 H).
  intros X1. intro H. elim (rem_2015 X1 H).
  intros X1 X2. intro H. elim (rem_2018 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2017 X1 X2 H).
   intro H. elim (rem_2020  H).
   intro H. elim (rem_2016  H).
  intros X1 X2. intro H. elim (rem_2014 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2013 X1 X2 H).
  intros X1. intro H. elim (rem_2024 X1 H).
   intro H. elim (rem_2029  H).
  intros X1 X2. intro H. elim (rem_2026 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2011 X1 X2 H).
   intro H. elim (rem_2025  H).
Qed.

Remark rem_2687 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___def_24 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2686 X1)). tauto.
Qed.

Remark rem_2688 : forall X1 X2:term, auto___def_24 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2681 X1 X2);  tauto.
  apply (rem_2683 X1 X2);  tauto.
  apply (rem_2687 X1 X2);  tauto.
Qed.

Remark rem_2689 : forall X1 X2 X3 X4:term, auto___def_24 X1 -> auto___def_25 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_24 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2688 X1 X2).
Qed.

Remark rem_2690 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___type_7 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2068 X1)). tauto.
Qed.

Remark rem_2691 : forall X1 X2:term, auto___def_51 sym -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2072 X1)). tauto.
Qed.

Remark rem_2692 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___type_7 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_51 sym -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2691 X1 X2).
Qed.

Remark rem_2693 : (forall X:term, auto___type_7 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (nonceb_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1775 X1 X2 H);  intros.
Defined.

Remark rem_2694 : (forall X:term, auto___type_7 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> auto___def_13 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_2043 X1 X2 H);  intros.
  apply (rem_2693 epsilon_m__type_7_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2695 : forall X1:term, auto___type_7 X1 -> auto___def_13 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_7_m__def_13 1.
  intro X. case X.
   intro H. elim (rem_2056  H).
   intro H. elim (rem_2048  H).
  intros X1 X2. intro H. elim (rem_1939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2058 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2059 X1 X2 H).
   intro H. elim (rem_2063  H).
  intros X1 X2. intro H. elim (rem_2067 X1 X2 H).
   intro H. elim (rem_2064  H).
  intros X1 X2. intro H. elim (rem_2066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2046 X1 X2 H).
  intros X1 X2;  exact (rem_2694 epsilon_m__type_7_m__def_13 X1 X2).
  intros X1. intro H. elim (rem_2052 X1 H).
  intros X1 X2. intro H. elim (rem_2055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2054 X1 X2 H).
   intro H. elim (rem_2057  H).
   intro H. elim (rem_2053  H).
  intros X1 X2. intro H. elim (rem_2051 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2050 X1 X2 H).
  intros X1. intro H. elim (rem_2060 X1 H).
   intro H. elim (rem_2065  H).
  intros X1 X2. intro H. elim (rem_2062 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2047 X1 X2 H).
   intro H. elim (rem_2061  H).
Qed.

Remark rem_2696 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___type_7 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2695 X1)). tauto.
Qed.

Remark rem_2697 : forall X1 X2:term, auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2690 X1 X2);  tauto.
  apply (rem_2692 X1 X2);  tauto.
  apply (rem_2696 X1 X2);  tauto.
Qed.

Remark rem_2698 : forall X1 X2 X3 X4:term, auto___def_44 (key pub (session_current X3 X4)) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2697 X1 X2).
Qed.

Remark rem_2699 : forall X1 X2 X3 X4:term, auto___type_7 X1 -> auto___def_44 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_44 (key pub (session_current X3 X4)) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2). tauto. exact (rem_2698 X1 X2 X3 X4).
Qed.

Remark rem_2700 : (forall X:term, auto___def_84 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_62 (noncea_current X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_336 X1 X2 H);  intros.
Defined.

Remark rem_2701 : (forall X:term, auto___def_84 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_84 (noncea_current X1 X2) -> auto___def_62 (noncea_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_1680 X1 X2 H);  intros.
  apply (rem_2700 epsilon_m__def_84_m__def_62 X1 X2);  tauto.
Defined.

Remark rem_2702 : forall X1:term, auto___def_84 X1 -> auto___def_62 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_84_m__def_62 1.
  intro X. case X.
   intro H. elim (rem_1693  H).
   intro H. elim (rem_1685  H).
  intros X1 X2. intro H. elim (rem_1698 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1682 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1696 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1697 X1 X2 H).
   intro H. elim (rem_1702  H).
  intros X1 X2. intro H. elim (rem_1705 X1 X2 H).
   intro H. elim (rem_1703  H).
  intros X1 X2;  exact (rem_2701 epsilon_m__def_84_m__def_62 X1 X2).
  intros X1 X2. intro H. elim (rem_1686 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1683 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1695 X1 X2 H).
  intros X1. intro H. elim (rem_1689 X1 H).
  intros X1 X2. intro H. elim (rem_1692 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1691 X1 X2 H).
   intro H. elim (rem_1694  H).
   intro H. elim (rem_1690  H).
  intros X1 X2. intro H. elim (rem_1688 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1687 X1 X2 H).
  intros X1. intro H. elim (rem_1699 X1 H).
   intro H. elim (rem_1704  H).
  intros X1 X2. intro H. elim (rem_1701 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1684 X1 X2 H).
   intro H. elim (rem_1700  H).
Qed.

Remark rem_2703 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_84 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2702 X1)). tauto.
Qed.

Remark rem_2704 : (forall X:term, auto___def_84 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (noncea_current X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_magent. intros X1 X2. intro H. intros.
  elim (rem_1113 X1 X2 H);  intros.
Defined.

Remark rem_2705 : (forall X:term, auto___def_84 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto___def_84 (noncea_current X1 X2) -> auto_agent (noncea_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_magent. intros X1 X2. intro H. intros.
  elim (rem_1680 X1 X2 H);  intros.
  apply (rem_2704 epsilon_m__def_84_magent X1 X2);  tauto.
Defined.

Remark rem_2706 : forall X1:term, auto___def_84 X1 -> auto_agent X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_84_magent 1.
  intro X. case X.
   intro H. elim (rem_1693  H).
   intro H. elim (rem_1685  H).
  intros X1 X2. intro H. elim (rem_1698 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1682 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1696 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1697 X1 X2 H).
   intro H. elim (rem_1702  H).
  intros X1 X2. intro H. elim (rem_1705 X1 X2 H).
   intro H. elim (rem_1703  H).
  intros X1 X2;  exact (rem_2705 epsilon_m__def_84_magent X1 X2).
  intros X1 X2. intro H. elim (rem_1686 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1683 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1695 X1 X2 H).
  intros X1. intro H. elim (rem_1689 X1 H).
  intros X1 X2. intro H. elim (rem_1692 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1691 X1 X2 H).
   intro H. elim (rem_1694  H).
   intro H. elim (rem_1690  H).
  intros X1 X2. intro H. elim (rem_1688 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1687 X1 X2 H).
  intros X1. intro H. elim (rem_1699 X1 H).
   intro H. elim (rem_1704  H).
  intros X1 X2. intro H. elim (rem_1701 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1684 X1 X2 H).
   intro H. elim (rem_1700  H).
Qed.

Remark rem_2707 : forall X1 X2:term, auto___def_51 sym -> auto___def_84 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2706 X1)). tauto.
Qed.

Remark rem_2708 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_84 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_51 sym -> auto___def_84 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2707 X1 X2).
Qed.

Remark rem_2709 : (forall X:term, auto___def_84 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (noncea_current X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1785 X1 X2 H);  intros.
Defined.

Remark rem_2710 : (forall X:term, auto___def_84 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_84 (noncea_current X1 X2) -> auto___def_13 (noncea_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1680 X1 X2 H);  intros.
  apply (rem_2709 epsilon_m__def_84_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2711 : forall X1:term, auto___def_84 X1 -> auto___def_13 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_84_m__def_13 1.
  intro X. case X.
   intro H. elim (rem_1693  H).
   intro H. elim (rem_1685  H).
  intros X1 X2. intro H. elim (rem_1698 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1682 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1696 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1697 X1 X2 H).
   intro H. elim (rem_1702  H).
  intros X1 X2. intro H. elim (rem_1705 X1 X2 H).
   intro H. elim (rem_1703  H).
  intros X1 X2;  exact (rem_2710 epsilon_m__def_84_m__def_13 X1 X2).
  intros X1 X2. intro H. elim (rem_1686 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1683 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1695 X1 X2 H).
  intros X1. intro H. elim (rem_1689 X1 H).
  intros X1 X2. intro H. elim (rem_1692 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1691 X1 X2 H).
   intro H. elim (rem_1694  H).
   intro H. elim (rem_1690  H).
  intros X1 X2. intro H. elim (rem_1688 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1687 X1 X2 H).
  intros X1. intro H. elim (rem_1699 X1 H).
   intro H. elim (rem_1704  H).
  intros X1 X2. intro H. elim (rem_1701 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1684 X1 X2 H).
   intro H. elim (rem_1700  H).
Qed.

Remark rem_2712 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___def_84 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2711 X1)). tauto.
Qed.

Remark rem_2713 : forall X1 X2:term, auto___def_84 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2703 X1 X2);  tauto.
  apply (rem_2708 X1 X2);  tauto.
  apply (rem_2712 X1 X2);  tauto.
Qed.

Remark rem_2714 : forall X1 X2 X3 X4:term, auto___def_84 X1 -> auto___def_85 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_84 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2713 X1 X2).
Qed.

Remark rem_2715 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (crypt X1 (key pub (session_current X3 X4))) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_987 X1 (key pub (session_current X3 X4)) H);  intros.
  apply (rem_2552 X1 X2 X3 X4);  tauto.
  apply (rem_2562 X1 X2 X3 X4);  tauto.
  apply (rem_2573 X1 X2 X3 X4);  tauto.
  apply (rem_2623 X1 X2 X3 X4);  tauto.
  apply (rem_2639 X1 X2 X3 X4);  tauto.
  apply (rem_2679 X1 X2 X3 X4);  tauto.
  apply (rem_2689 X1 X2 X3 X4);  tauto.
  apply (rem_2699 X1 X2 X3 X4);  tauto.
  apply (rem_2714 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2716 : forall X1 X2 X3 X4:term, auto_knows_current (crypt X1 (key pub (session_current X3 X4))) -> auto_knows_current (passwd_current X3 X4) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current (crypt X1 (key pub (session_current X3 X4))) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto_knows_current (passwd_current X3 X4) -> auto___def_103 X1 X2). tauto. exact (rem_2715 X1 X2 X3 X4).
Qed.

Remark rem_2717 : (forall X:term, auto___def_81 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_62 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_320 X1 X2 H);  intros.
Defined.

Remark rem_2718 : forall X1 X2:term, auto___def_81 (r_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2719 : (forall X:term, auto___def_81 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_81 (r_current X1 X2) -> auto___def_62 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_2718 X1 X2 H);  intros.
  apply (rem_2717 epsilon_m__def_81_m__def_62 X1 X2);  tauto.
Defined.

Remark rem_2720 : forall X1 X2:term, auto___def_81 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2721 : forall X1 X2:term, auto___def_81 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2722 : forall X1 X2:term, auto___def_81 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2723 : auto___def_81 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2724 : forall X1 X2:term, auto___def_81 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2725 : forall X1 X2:term, auto___def_81 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2726 : forall X1:term, auto___def_81 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2727 : auto___def_81 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2728 : forall X1 X2:term, auto___def_81 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2729 : forall X1 X2:term, auto___def_81 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2730 : auto___def_81 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2731 : auto___def_81 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2732 : forall X1 X2:term, auto___def_81 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2733 : forall X1 X2:term, auto___def_81 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2734 : forall X1 X2:term, auto___def_81 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2735 : forall X1 X2:term, auto___def_81 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2736 : forall X1:term, auto___def_81 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2737 : auto___def_81 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2738 : forall X1 X2:term, auto___def_81 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2739 : auto___def_81 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2740 : auto___def_81 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2741 : auto___def_81 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2742 : forall X1 X2:term, auto___def_81 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2743 : forall X1 X2:term, auto___def_81 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2744 : forall X1:term, auto___def_81 X1 -> auto___def_62 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_81_m__def_62 1.
  intro X. case X.
   intro H. elim (rem_2730  H).
   intro H. elim (rem_2723  H).
  intros X1 X2. intro H. elim (rem_2735 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2720 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2734 X1 X2 H).
   intro H. elim (rem_2739  H).
  intros X1 X2. intro H. elim (rem_2743 X1 X2 H).
   intro H. elim (rem_2740  H).
  intros X1 X2. intro H. elim (rem_2742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2724 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2721 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2732 X1 X2 H).
  intros X1. intro H. elim (rem_2726 X1 H).
  intros X1 X2. intro H. elim (rem_2729 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2728 X1 X2 H).
   intro H. elim (rem_2731  H).
   intro H. elim (rem_2727  H).
  intros X1 X2;  exact (rem_2719 epsilon_m__def_81_m__def_62 X1 X2).
  intros X1 X2. intro H. elim (rem_2725 X1 X2 H).
  intros X1. intro H. elim (rem_2736 X1 H).
   intro H. elim (rem_2741  H).
  intros X1 X2. intro H. elim (rem_2738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2722 X1 X2 H).
   intro H. elim (rem_2737  H).
Qed.

Remark rem_2745 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_81 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2744 X1)). tauto.
Qed.

Remark rem_2746 : (forall X:term, auto___def_81 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_magent. intros X1 X2. intro H. intros.
  elim (rem_1099 X1 X2 H);  intros.
Defined.

Remark rem_2747 : (forall X:term, auto___def_81 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto___def_81 (r_current X1 X2) -> auto_agent (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_magent. intros X1 X2. intro H. intros.
  elim (rem_2718 X1 X2 H);  intros.
  apply (rem_2746 epsilon_m__def_81_magent X1 X2);  tauto.
Defined.

Remark rem_2748 : forall X1:term, auto___def_81 X1 -> auto_agent X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_81_magent 1.
  intro X. case X.
   intro H. elim (rem_2730  H).
   intro H. elim (rem_2723  H).
  intros X1 X2. intro H. elim (rem_2735 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2720 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2734 X1 X2 H).
   intro H. elim (rem_2739  H).
  intros X1 X2. intro H. elim (rem_2743 X1 X2 H).
   intro H. elim (rem_2740  H).
  intros X1 X2. intro H. elim (rem_2742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2724 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2721 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2732 X1 X2 H).
  intros X1. intro H. elim (rem_2726 X1 H).
  intros X1 X2. intro H. elim (rem_2729 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2728 X1 X2 H).
   intro H. elim (rem_2731  H).
   intro H. elim (rem_2727  H).
  intros X1 X2;  exact (rem_2747 epsilon_m__def_81_magent X1 X2).
  intros X1 X2. intro H. elim (rem_2725 X1 X2 H).
  intros X1. intro H. elim (rem_2736 X1 H).
   intro H. elim (rem_2741  H).
  intros X1 X2. intro H. elim (rem_2738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2722 X1 X2 H).
   intro H. elim (rem_2737  H).
Qed.

Remark rem_2749 : forall X1 X2:term, auto___def_51 sym -> auto___def_81 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2748 X1)). tauto.
Qed.

Remark rem_2750 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_81 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_51 sym -> auto___def_81 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2749 X1 X2).
Qed.

Remark rem_2751 : (forall X:term, auto___def_81 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1768 X1 X2 H);  intros.
Defined.

Remark rem_2752 : (forall X:term, auto___def_81 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_81 (r_current X1 X2) -> auto___def_13 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_2718 X1 X2 H);  intros.
  apply (rem_2751 epsilon_m__def_81_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2753 : forall X1:term, auto___def_81 X1 -> auto___def_13 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_81_m__def_13 1.
  intro X. case X.
   intro H. elim (rem_2730  H).
   intro H. elim (rem_2723  H).
  intros X1 X2. intro H. elim (rem_2735 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2720 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2734 X1 X2 H).
   intro H. elim (rem_2739  H).
  intros X1 X2. intro H. elim (rem_2743 X1 X2 H).
   intro H. elim (rem_2740  H).
  intros X1 X2. intro H. elim (rem_2742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2724 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2721 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2732 X1 X2 H).
  intros X1. intro H. elim (rem_2726 X1 H).
  intros X1 X2. intro H. elim (rem_2729 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2728 X1 X2 H).
   intro H. elim (rem_2731  H).
   intro H. elim (rem_2727  H).
  intros X1 X2;  exact (rem_2752 epsilon_m__def_81_m__def_13 X1 X2).
  intros X1 X2. intro H. elim (rem_2725 X1 X2 H).
  intros X1. intro H. elim (rem_2736 X1 H).
   intro H. elim (rem_2741  H).
  intros X1 X2. intro H. elim (rem_2738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2722 X1 X2 H).
   intro H. elim (rem_2737  H).
Qed.

Remark rem_2754 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___def_81 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2753 X1)). tauto.
Qed.

Remark rem_2755 : forall X1 X2:term, auto___def_81 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2745 X1 X2);  tauto.
  apply (rem_2750 X1 X2);  tauto.
  apply (rem_2754 X1 X2);  tauto.
Qed.

Remark rem_2756 : forall X1 X2 X3 X4:term, auto___def_80 (passwd_current X3 X4) -> auto___def_81 X1 -> auto___def_82 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_81 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2755 X1 X2).
Qed.

Remark rem_2757 : forall X1 X2 X3 X4:term, auto___def_81 X1 -> auto___def_82 (key pub (session_current X3 X4)) -> auto___def_80 (passwd_current X3 X4) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_80 (passwd_current X3 X4) -> auto___def_81 X1 -> auto___def_82 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2). tauto. exact (rem_2756 X1 X2 X3 X4).
Qed.

Remark rem_2758 : forall X1 X2 X3 X4:term, auto___def_79 (crypt X1 (key pub (session_current X3 X4))) -> auto___def_80 (passwd_current X3 X4) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_766 X1 (key pub (session_current X3 X4)) H);  intros.
  apply (rem_2757 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2759 : (forall X:term, auto___def_77 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_62 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_320 X1 X2 H);  intros.
Defined.

Remark rem_2760 : (forall X:term, auto___def_77 X -> auto___def_62 X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___def_62 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_62. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_2759 epsilon_m__def_77_m__def_62 X1 X2);  tauto.
Defined.

Remark rem_2761 : forall X1:term, auto___def_77 X1 -> auto___def_62 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_m__def_62 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_2760 epsilon_m__def_77_m__def_62 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_2762 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_77 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2761 X1)). tauto.
Qed.

Remark rem_2763 : (forall X:term, auto___def_77 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_magent. intros X1 X2. intro H. intros.
  elim (rem_1099 X1 X2 H);  intros.
Defined.

Remark rem_2764 : (forall X:term, auto___def_77 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto_agent (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_magent. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_2763 epsilon_m__def_77_magent X1 X2);  tauto.
Defined.

Remark rem_2765 : forall X1:term, auto___def_77 X1 -> auto_agent X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_magent 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_2764 epsilon_m__def_77_magent X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_2766 : forall X1 X2:term, auto___def_51 sym -> auto___def_77 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2765 X1)). tauto.
Qed.

Remark rem_2767 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto___def_77 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_51 sym -> auto___def_77 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto___def_103 X1 X2). tauto. exact (rem_2766 X1 X2).
Qed.

Remark rem_2768 : (forall X:term, auto___def_77 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1768 X1 X2 H);  intros.
Defined.

Remark rem_2769 : (forall X:term, auto___def_77 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___def_13 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_2768 epsilon_m__def_77_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_2770 : forall X1:term, auto___def_77 X1 -> auto___def_13 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_m__def_13 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_2769 epsilon_m__def_77_m__def_13 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_2771 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___def_77 X1 -> auto_knows_current X2 -> auto___def_103 X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_2770 X1)). tauto.
Qed.

Remark rem_2772 : forall X1 X2:term, auto___def_77 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2762 X1 X2);  tauto.
  apply (rem_2767 X1 X2);  tauto.
  apply (rem_2771 X1 X2);  tauto.
Qed.

Remark rem_2773 : forall X1 X2 X3 X4:term, auto___def_76 (passwd_current X3 X4) -> auto___def_77 X1 -> auto___type_17 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_77 X1 -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto.
  exact (rem_2772 X1 X2).
Qed.

Remark rem_2774 : forall X1 X2 X3 X4:term, auto___def_77 X1 -> auto___type_17 (key pub (session_current X3 X4)) -> auto___def_76 (passwd_current X3 X4) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_76 (passwd_current X3 X4) -> auto___def_77 X1 -> auto___type_17 (key pub (session_current X3 X4)) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2). tauto. exact (rem_2773 X1 X2 X3 X4).
Qed.

Remark rem_2775 : forall X1 X2 X3 X4:term, auto___def_75 (crypt X1 (key pub (session_current X3 X4))) -> auto___def_76 (passwd_current X3 X4) -> auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_731 X1 (key pub (session_current X3 X4)) H);  intros.
  apply (rem_2774 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2776 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1031 (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4) H);  intros.
  apply (rem_2542 X1 X2 X3 X4);  tauto.
  apply (rem_2716 X1 X2 X3 X4);  tauto.
  apply (rem_2758 X1 X2 X3 X4);  tauto.
  apply (rem_2775 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2777 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (key sym X1) -> auto_knows_current nil -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2). tauto.
  exact (rem_2776 X1 X2 X3 X4).
Qed.

Remark rem_2778 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current nil -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (key sym X1) -> auto_knows_current nil -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2). tauto. exact (rem_2777 X1 X2 X3 X4).
Qed.

Remark rem_2779 : forall X1 X2 X3 X4:term, auto_knows_current (cons X2 nil) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1034 X2 nil H);  intros.
  apply (rem_2778 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2780 : forall X1 X2 X3 X4:term, auto_knows_current (noncea_current X3 X4) -> auto_knows_current (cons X2 nil) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current (cons X2 nil) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X3 X4) -> auto___def_103 X1 X2). tauto. exact (rem_2779 X1 X2 X3 X4).
Qed.

Remark rem_2781 : forall X1 X2 X3 X4:term, auto_knows_current (cons (noncea_current X3 X4) (cons X2 nil)) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1034 (noncea_current X3 X4) (cons X2 nil) H);  intros.
  apply (rem_2780 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2782 : forall X1 X2 X3 X4:term, auto_knows_current (cons (noncea_current X3 X4) (cons X2 nil)) -> auto_knows_current (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current (cons (noncea_current X3 X4) (cons X2 nil)) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (key sym X1) -> auto___def_103 X1 X2). tauto. exact (rem_2781 X1 X2 X3 X4).
Qed.

Remark rem_2783 : forall X1 X2 X3 X4:term, auto___type_22 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___type_23 X1 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1627 (noncea_current X3 X4) (cons X2 nil) H);  intros.
Qed.

Remark rem_2784 : forall X1 X2 X3 X4:term, auto___def_105 sym -> auto___type_22 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___type_23 X1 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_22 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___type_23 X1 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto.
  exact (rem_2783 X1 X2 X3 X4).
Qed.

Remark rem_2785 : forall X1 X2 X3 X4:term, auto___def_105 sym -> auto___type_23 X1 -> auto___type_22 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_105 sym -> auto___type_22 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___type_23 X1 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto. exact (rem_2784 X1 X2 X3 X4).
Qed.

Remark rem_2786 : forall X1 X2 X3 X4:term, auto___def_104 (key sym X1) -> auto___type_22 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1431 sym X1 H);  intros.
  apply (rem_2785 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2787 : forall X1 X2 X3 X4:term, auto___type_22 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___def_104 (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_104 (key sym X1) -> auto___type_22 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto. exact (rem_2786 X1 X2 X3 X4).
Qed.

Remark rem_2788 : forall X1:term, auto___def_94 X1 -> auto___def_94 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2789 : forall X1 X2 X3 X4:term, auto___def_91 X2 -> auto___def_92 nil -> auto___def_94 X1 -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_94 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_94 X1 -> auto___def_94 X1). tauto. exact (rem_2788 X1).
Qed.

Remark rem_2790 : (forall X:term, auto___def_94 X -> auto___def_77 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2791 : (forall X:term, auto___def_94 X -> auto___def_77 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_94_p__def_77. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_2790 epsilon_m__def_94_p__def_77 X1);  assumption.
  tauto.
Defined.

Remark rem_2792 : (forall X:term, auto___def_94 X -> auto___def_77 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_77 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_94_p__def_77. intros X1 X2. intros A1.
  case (rem_2791 epsilon_m__def_94_p__def_77 X1 A1). clear  epsilon_m__def_94_p__def_77 A1. intros. apply trans___def_77_r_current_1;  tauto.
 clear  epsilon_m__def_94_p__def_77 A1. tauto.
Defined.

Remark rem_2793 : forall X1 X2:term, auto___def_94 (r_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2794 : (forall X:term, auto___def_94 X -> auto___def_77 X)
    -> forall X1 X2:term, auto___def_94 (r_current X1 X2) -> auto___def_77 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_94_p__def_77. intros X1 X2. intro H. intros.
  elim (rem_2793 X1 X2 H);  intros.
  apply (rem_2792 epsilon_m__def_94_p__def_77 X1 X2);  tauto.
Defined.

Remark rem_2795 : forall X1 X2:term, auto___def_94 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2796 : forall X1 X2:term, auto___def_94 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2797 : forall X1 X2:term, auto___def_94 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2798 : auto___def_94 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2799 : forall X1 X2:term, auto___def_94 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2800 : forall X1 X2:term, auto___def_94 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2801 : forall X1:term, auto___def_94 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2802 : auto___def_94 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2803 : forall X1 X2:term, auto___def_94 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2804 : forall X1 X2:term, auto___def_94 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2805 : auto___def_94 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2806 : auto___def_94 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2807 : forall X1 X2:term, auto___def_94 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2808 : forall X1 X2:term, auto___def_94 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2809 : forall X1 X2:term, auto___def_94 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2810 : forall X1 X2:term, auto___def_94 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2811 : forall X1:term, auto___def_94 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2812 : auto___def_94 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2813 : forall X1 X2:term, auto___def_94 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2814 : auto___def_94 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2815 : auto___def_94 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2816 : auto___def_94 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2817 : forall X1 X2:term, auto___def_94 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2818 : forall X1 X2:term, auto___def_94 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2819 : forall X1:term, auto___def_94 X1 -> auto___def_77 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_94_p__def_77 1.
  intro X. case X.
   intro H. elim (rem_2805  H).
   intro H. elim (rem_2798  H).
  intros X1 X2. intro H. elim (rem_2810 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2795 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2808 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2809 X1 X2 H).
   intro H. elim (rem_2814  H).
  intros X1 X2. intro H. elim (rem_2818 X1 X2 H).
   intro H. elim (rem_2815  H).
  intros X1 X2. intro H. elim (rem_2817 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2799 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2796 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2807 X1 X2 H).
  intros X1. intro H. elim (rem_2801 X1 H).
  intros X1 X2. intro H. elim (rem_2804 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2803 X1 X2 H).
   intro H. elim (rem_2806  H).
   intro H. elim (rem_2802  H).
  intros X1 X2;  exact (rem_2794 epsilon_m__def_94_p__def_77 X1 X2).
  intros X1 X2. intro H. elim (rem_2800 X1 X2 H).
  intros X1. intro H. elim (rem_2811 X1 H).
   intro H. elim (rem_2816  H).
  intros X1 X2. intro H. elim (rem_2813 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2797 X1 X2 H).
   intro H. elim (rem_2812  H).
Qed.

Remark rem_2820 : forall X1 X2 X3 X4:term, auto___def_91 X2 -> auto___def_92 nil -> auto___def_94 X1 -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_77 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_94 X1 -> auto___def_77 X1). tauto. exact (rem_2819 X1).
Qed.

Remark rem_2821 : forall X2:term, auto___def_91 X2 -> auto___def_91 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2822 : forall X1 X2 X3 X4:term, auto___def_91 X2 -> auto___def_92 nil -> auto___def_94 X1 -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_91 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_91 X2 -> auto___def_91 X2). tauto. exact (rem_2821 X2).
Qed.

Remark rem_2823 : forall X1 X2 X3 X4:term, auto___def_91 X2 -> auto___def_92 nil -> auto___def_94 X1 -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> (auto___def_94 X1 /\ auto___def_77 X1 /\ auto___def_91 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto___def_94 X1). 2:apply (rem_2789 X1 X2 X3 X4);  assumption.
  cut (auto___def_77 X1). 2:apply (rem_2820 X1 X2 X3 X4);  assumption.
  cut (auto___def_91 X2). 2:apply (rem_2822 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_2824 : forall X1 X2 X3 X4:term, auto___def_91 X2 -> auto___def_92 nil -> auto___def_94 X1 -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_2823 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans___def_103_1;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_2825 : forall X1 X2:term, auto___def_90 (cons X1 X2) -> or_1
    (auto___def_91 X1 /\ auto___def_92 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2826 : forall X1 X2 X3 X4:term, auto___def_90 (cons X2 nil) -> auto___def_94 X1 -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2825 X2 nil H);  intros.
  apply (rem_2824 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2827 : forall X1 X2 X3 X4:term, auto___def_90 (cons X2 nil) -> auto___def_93 sym -> auto___def_94 X1 -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_90 (cons X2 nil) -> auto___def_94 X1 -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto.
  exact (rem_2826 X1 X2 X3 X4).
Qed.

Remark rem_2828 : forall X1 X2 X3 X4:term, auto___def_93 sym -> auto___def_94 X1 -> auto___def_90 (cons X2 nil) -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_90 (cons X2 nil) -> auto___def_93 sym -> auto___def_94 X1 -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto. exact (rem_2827 X1 X2 X3 X4).
Qed.

Remark rem_2829 : forall X1 X2 X3 X4:term, auto___def_89 (key sym X1) -> auto___def_90 (cons X2 nil) -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1438 sym X1 H);  intros.
  apply (rem_2828 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2830 : forall X1 X2 X3 X4:term, auto___type_20 (noncea_current X3 X4) -> auto___def_90 (cons X2 nil) -> auto___def_89 (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_89 (key sym X1) -> auto___def_90 (cons X2 nil) -> auto___type_20 (noncea_current X3 X4) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto. exact (rem_2829 X1 X2 X3 X4).
Qed.

Remark rem_2831 : forall X1 X2 X3 X4:term, auto___def_88 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___def_89 (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2641 (noncea_current X3 X4) (cons X2 nil) H);  intros.
  apply (rem_2830 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2832 : forall X1 X2 X3 X4:term, auto___def_24 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___def_25 (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1937 (noncea_current X3 X4) (cons X2 nil) H);  intros.
Qed.

Remark rem_2833 : forall X1 X2 X3 X4:term, auto___type_7 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___type_8 X1 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1939 (noncea_current X3 X4) (cons X2 nil) H);  intros.
Qed.

Remark rem_2834 : forall X1 X2 X3 X4:term, auto___def_45 sym -> auto___type_7 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___type_8 X1 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_7 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___type_8 X1 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto.
  exact (rem_2833 X1 X2 X3 X4).
Qed.

Remark rem_2835 : forall X1 X2 X3 X4:term, auto___def_45 sym -> auto___type_8 X1 -> auto___type_7 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_45 sym -> auto___type_7 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___type_8 X1 -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto. exact (rem_2834 X1 X2 X3 X4).
Qed.

Remark rem_2836 : forall X1 X2 X3 X4:term, auto___def_44 (key sym X1) -> auto___type_7 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1450 sym X1 H);  intros.
  apply (rem_2835 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2837 : forall X1 X2 X3 X4:term, auto___type_7 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___def_44 (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_44 (key sym X1) -> auto___type_7 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto. exact (rem_2836 X1 X2 X3 X4).
Qed.

Remark rem_2838 : forall X1 X2 X3 X4:term, auto___def_84 (cons (noncea_current X3 X4) (cons X2 nil)) -> auto___def_85 (key sym X1) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1698 (noncea_current X3 X4) (cons X2 nil) H);  intros.
Qed.

Remark rem_2839 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X2 nil)) (key sym X1)) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_987 (cons (noncea_current X3 X4) (cons X2 nil)) (key sym X1) H);  intros.
  apply (rem_2531 X1 X2 X3 X4);  tauto.
  apply (rem_2539 X1 X2 X3 X4);  tauto.
  apply (rem_2541 X1 X2 X3 X4);  tauto.
  apply (rem_2782 X1 X2 X3 X4);  tauto.
  apply (rem_2787 X1 X2 X3 X4);  tauto.
  apply (rem_2831 X1 X2 X3 X4);  tauto.
  apply (rem_2832 X1 X2 X3 X4);  tauto.
  apply (rem_2837 X1 X2 X3 X4);  tauto.
  apply (rem_2838 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2840 : forall X1 X2 X3 X4:term, auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X2 nil)) (key sym X1)) -> auto___def_103 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X2 nil)) (key sym X1)) -> auto_knows_current (enc (crypt X1 (key pub (session_current X3 X4))) (passwd_current X3 X4)) -> auto___def_103 X1 X2). tauto. exact (rem_2839 X1 X2 X3 X4).
Qed.

Remark rem_2841 : forall X1 X2 X3 X4:term, auto___def_17 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___type_2 (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1339 (noncea_current X4 X2) (cons X3 nil) H);  intros.
Qed.

Remark rem_2842 : forall X1 X2 X3 X4:term, auto___def_39 X3 -> auto___def_42 X1 -> auto___type_6 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2236 X4 X2 H);  intros.
Qed.

Remark rem_2843 : forall X1 X2 X3 X4:term, auto___def_39 X3 -> auto___def_40 nil -> auto___def_42 X1 -> auto___type_6 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_39 X3 -> auto___def_42 X1 -> auto___type_6 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto.
  exact (rem_2842 X1 X2 X3 X4).
Qed.

Remark rem_2844 : forall X1 X2 X3 X4:term, auto___def_38 (cons X3 nil) -> auto___def_42 X1 -> auto___type_6 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1929 X3 nil H);  intros.
  apply (rem_2843 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2845 : forall X1 X2 X3 X4:term, auto___def_38 (cons X3 nil) -> auto___def_41 sym -> auto___def_42 X1 -> auto___type_6 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_38 (cons X3 nil) -> auto___def_42 X1 -> auto___type_6 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto.
  exact (rem_2844 X1 X2 X3 X4).
Qed.

Remark rem_2846 : forall X1 X2 X3 X4:term, auto___def_41 sym -> auto___def_42 X1 -> auto___def_38 (cons X3 nil) -> auto___type_6 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_38 (cons X3 nil) -> auto___def_41 sym -> auto___def_42 X1 -> auto___type_6 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2845 X1 X2 X3 X4).
Qed.

Remark rem_2847 : forall X1 X2 X3 X4:term, auto___def_37 (key sym X1) -> auto___def_38 (cons X3 nil) -> auto___type_6 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1405 sym X1 H);  intros.
  apply (rem_2846 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2848 : forall X1 X2 X3 X4:term, auto___type_6 (noncea_current X4 X2) -> auto___def_38 (cons X3 nil) -> auto___def_37 (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_37 (key sym X1) -> auto___def_38 (cons X3 nil) -> auto___type_6 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2847 X1 X2 X3 X4).
Qed.

Remark rem_2849 : forall X1 X2 X3 X4:term, auto___def_36 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_37 (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1935 (noncea_current X4 X2) (cons X3 nil) H);  intros.
  apply (rem_2848 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2850 : forall X1 X2 X3 X4:term, auto___def_21 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_22 (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2540 (noncea_current X4 X2) (cons X3 nil) H);  intros.
Qed.

Remark rem_2851 : forall X1 X2 X3 X4:term, auto___def_62 X1 -> auto_knows_current X3 -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_1077 X4 X2 H);  intros.
Qed.

Remark rem_2852 : forall X1 X2 X3 X4:term, auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X3 -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_62 X1 -> auto_knows_current X3 -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto.
  exact (rem_2851 X1 X2 X3 X4).
Qed.

Remark rem_2853 : forall X1 X2 X3 X4:term, auto_agent X1 -> auto_knows_current X3 -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_1077 X4 X2 H);  intros.
Qed.

Remark rem_2854 : forall X1 X2 X3 X4:term, auto___def_51 sym -> auto_agent X1 -> auto_knows_current X3 -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X1 -> auto_knows_current X3 -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto.
  exact (rem_2853 X1 X2 X3 X4).
Qed.

Remark rem_2855 : forall X1 X2 X3 X4:term, auto___def_13 X1 -> auto_knows_current X3 -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_1077 X4 X2 H);  intros.
Qed.

Remark rem_2856 : forall X1 X2 X3 X4:term, auto___def_12 sym -> auto___def_13 X1 -> auto_knows_current X3 -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_13 X1 -> auto_knows_current X3 -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto.
  exact (rem_2855 X1 X2 X3 X4).
Qed.

Remark rem_2857 : forall X1 X2 X3 X4:term, auto_knows_current X3 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_2852 X1 X2 X3 X4);  tauto.
  apply (rem_2854 X1 X2 X3 X4);  tauto.
  apply (rem_2856 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2858 : forall X1 X2 X3 X4:term, auto_knows_current X3 -> auto_knows_current (key sym X1) -> auto_knows_current nil -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X3 -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto.
  exact (rem_2857 X1 X2 X3 X4).
Qed.

Remark rem_2859 : forall X1 X2 X3 X4:term, auto_knows_current X3 -> auto_knows_current nil -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X3 -> auto_knows_current (key sym X1) -> auto_knows_current nil -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2858 X1 X2 X3 X4).
Qed.

Remark rem_2860 : forall X1 X2 X3 X4:term, auto_knows_current (cons X3 nil) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1034 X3 nil H);  intros.
  apply (rem_2859 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2861 : forall X1 X2 X3 X4:term, auto_knows_current (noncea_current X4 X2) -> auto_knows_current (cons X3 nil) -> auto_knows_current (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current (cons X3 nil) -> auto_knows_current (key sym X1) -> auto_knows_current (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2860 X1 X2 X3 X4).
Qed.

Remark rem_2862 : forall X1 X2 X3 X4:term, auto_knows_current (cons (noncea_current X4 X2) (cons X3 nil)) -> auto_knows_current (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1034 (noncea_current X4 X2) (cons X3 nil) H);  intros.
  apply (rem_2861 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2863 : forall X1 X2 X3 X4:term, auto___type_22 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___type_23 X1 -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1627 (noncea_current X4 X2) (cons X3 nil) H);  intros.
Qed.

Remark rem_2864 : forall X1 X2 X3 X4:term, auto___def_105 sym -> auto___type_22 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___type_23 X1 -> auto___def_106 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_22 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___type_23 X1 -> auto___def_106 X1 X2 X3 X4). tauto.
  exact (rem_2863 X1 X2 X3 X4).
Qed.

Remark rem_2865 : forall X1 X2 X3 X4:term, auto___def_105 sym -> auto___type_23 X1 -> auto___type_22 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_105 sym -> auto___type_22 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___type_23 X1 -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2864 X1 X2 X3 X4).
Qed.

Remark rem_2866 : forall X1 X2 X3 X4:term, auto___def_104 (key sym X1) -> auto___type_22 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1431 sym X1 H);  intros.
  apply (rem_2865 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2867 : forall X1 X2 X3 X4:term, auto___type_22 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_104 (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_104 (key sym X1) -> auto___type_22 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2866 X1 X2 X3 X4).
Qed.

Remark rem_2868 : forall X1 X2 X3 X4:term, auto___def_91 X3 -> auto___def_94 X1 -> auto_agent X4 -> auto_agent X2 -> auto___def_94 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_94 X1 -> auto___def_94 X1). tauto. exact (rem_2788 X1).
Qed.

Remark rem_2869 : forall X1 X2 X3 X4:term, auto___def_91 X3 -> auto___def_94 X1 -> auto_agent X4 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_925 X2).
Qed.

Remark rem_2870 : forall X3:term, auto___def_91 X3 -> auto___def_91 X3. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2871 : forall X1 X2 X3 X4:term, auto___def_91 X3 -> auto___def_94 X1 -> auto_agent X4 -> auto_agent X2 -> auto___def_91 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_91 X3 -> auto___def_91 X3). tauto. exact (rem_2870 X3).
Qed.

Remark rem_2872 : forall X4:term, auto_agent X4 -> auto_agent X4. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2873 : forall X1 X2 X3 X4:term, auto___def_91 X3 -> auto___def_94 X1 -> auto_agent X4 -> auto_agent X2 -> auto_agent X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X4 -> auto_agent X4). tauto. exact (rem_2872 X4).
Qed.

Remark rem_2874 : forall X1 X2 X3 X4:term, auto___def_91 X3 -> auto___def_94 X1 -> auto_agent X4 -> auto_agent X2 -> (auto___def_94 X1 /\ auto_agent X2 /\ auto___def_91 X3 /\ auto_agent X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto___def_94 X1). 2:apply (rem_2868 X1 X2 X3 X4);  assumption.
  cut (auto_agent X2). 2:apply (rem_2869 X1 X2 X3 X4);  assumption.
  cut (auto___def_91 X3). 2:apply (rem_2871 X1 X2 X3 X4);  assumption.
  cut (auto_agent X4). 2:apply (rem_2873 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_2875 : forall X1 X2 X3 X4:term, auto___def_91 X3 -> auto___def_94 X1 -> auto_agent X4 -> auto_agent X2 -> auto___def_106 X1 X2 X3 X4. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2874 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_106_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_2876 : forall X1 X2 X3 X4:term, auto_agent X4 -> auto_agent X2 -> auto___def_91 X3 -> auto___def_94 X1 -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_91 X3 -> auto___def_94 X1 -> auto_agent X4 -> auto_agent X2 -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2875 X1 X2 X3 X4).
Qed.

Remark rem_2877 : forall X1 X2:term, auto___type_20 (noncea_current X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2878 : forall X1 X2 X3 X4:term, auto___def_91 X3 -> auto___def_94 X1 -> auto___type_20 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2877 X4 X2 H);  intros.
  apply (rem_2876 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2879 : forall X1 X2 X3 X4:term, auto___def_91 X3 -> auto___def_92 nil -> auto___def_94 X1 -> auto___type_20 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_91 X3 -> auto___def_94 X1 -> auto___type_20 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto.
  exact (rem_2878 X1 X2 X3 X4).
Qed.

Remark rem_2880 : forall X1 X2 X3 X4:term, auto___def_90 (cons X3 nil) -> auto___def_94 X1 -> auto___type_20 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2825 X3 nil H);  intros.
  apply (rem_2879 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2881 : forall X1 X2 X3 X4:term, auto___def_90 (cons X3 nil) -> auto___def_93 sym -> auto___def_94 X1 -> auto___type_20 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_90 (cons X3 nil) -> auto___def_94 X1 -> auto___type_20 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto.
  exact (rem_2880 X1 X2 X3 X4).
Qed.

Remark rem_2882 : forall X1 X2 X3 X4:term, auto___def_93 sym -> auto___def_94 X1 -> auto___def_90 (cons X3 nil) -> auto___type_20 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_90 (cons X3 nil) -> auto___def_93 sym -> auto___def_94 X1 -> auto___type_20 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2881 X1 X2 X3 X4).
Qed.

Remark rem_2883 : forall X1 X2 X3 X4:term, auto___def_89 (key sym X1) -> auto___def_90 (cons X3 nil) -> auto___type_20 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1438 sym X1 H);  intros.
  apply (rem_2882 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2884 : forall X1 X2 X3 X4:term, auto___type_20 (noncea_current X4 X2) -> auto___def_90 (cons X3 nil) -> auto___def_89 (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_89 (key sym X1) -> auto___def_90 (cons X3 nil) -> auto___type_20 (noncea_current X4 X2) -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2883 X1 X2 X3 X4).
Qed.

Remark rem_2885 : forall X1 X2 X3 X4:term, auto___def_88 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_89 (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2641 (noncea_current X4 X2) (cons X3 nil) H);  intros.
  apply (rem_2884 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2886 : forall X1 X2 X3 X4:term, auto___def_24 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_25 (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1937 (noncea_current X4 X2) (cons X3 nil) H);  intros.
Qed.

Remark rem_2887 : forall X1 X2 X3 X4:term, auto___type_7 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___type_8 X1 -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1939 (noncea_current X4 X2) (cons X3 nil) H);  intros.
Qed.

Remark rem_2888 : forall X1 X2 X3 X4:term, auto___def_45 sym -> auto___type_7 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___type_8 X1 -> auto___def_106 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_7 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___type_8 X1 -> auto___def_106 X1 X2 X3 X4). tauto.
  exact (rem_2887 X1 X2 X3 X4).
Qed.

Remark rem_2889 : forall X1 X2 X3 X4:term, auto___def_45 sym -> auto___type_8 X1 -> auto___type_7 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_45 sym -> auto___type_7 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___type_8 X1 -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2888 X1 X2 X3 X4).
Qed.

Remark rem_2890 : forall X1 X2 X3 X4:term, auto___def_44 (key sym X1) -> auto___type_7 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1450 sym X1 H);  intros.
  apply (rem_2889 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2891 : forall X1 X2 X3 X4:term, auto___type_7 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_44 (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_44 (key sym X1) -> auto___type_7 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_106 X1 X2 X3 X4). tauto. exact (rem_2890 X1 X2 X3 X4).
Qed.

Remark rem_2892 : forall X1 X2 X3 X4:term, auto___def_84 (cons (noncea_current X4 X2) (cons X3 nil)) -> auto___def_85 (key sym X1) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1698 (noncea_current X4 X2) (cons X3 nil) H);  intros.
Qed.

Remark rem_2893 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (cons (noncea_current X4 X2) (cons X3 nil)) (key sym X1)) -> auto___def_106 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_987 (cons (noncea_current X4 X2) (cons X3 nil)) (key sym X1) H);  intros.
  apply (rem_2841 X1 X2 X3 X4);  tauto.
  apply (rem_2849 X1 X2 X3 X4);  tauto.
  apply (rem_2850 X1 X2 X3 X4);  tauto.
  apply (rem_2862 X1 X2 X3 X4);  tauto.
  apply (rem_2867 X1 X2 X3 X4);  tauto.
  apply (rem_2885 X1 X2 X3 X4);  tauto.
  apply (rem_2886 X1 X2 X3 X4);  tauto.
  apply (rem_2891 X1 X2 X3 X4);  tauto.
  apply (rem_2892 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2894 : (forall X:term, auto___def_62 X -> auto___type_15 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_62_p__type_15.  tauto.
Defined.

Remark rem_2895 : (forall X:term, auto___def_62 X -> auto___type_15 X)
    -> auto___type_15 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_62_p__type_15.  case (rem_2894 epsilon_m__def_62_p__type_15). clear  epsilon_m__def_62_p__type_15. intros. apply trans___type_15_i_1;  tauto.
 clear  epsilon_m__def_62_p__type_15. tauto.
Defined.

Remark rem_2896 : (forall X:term, auto___def_62 X -> auto___type_15 X)
    -> auto___def_62 i -> auto___type_15 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_p__type_15. intro H. intros.
  elim (rem_312 H);  intros.
  apply (rem_2895 epsilon_m__def_62_p__type_15);  tauto.
Defined.

Remark rem_2897 : forall X1:term, auto___def_62 X1 -> auto___type_15 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_62_p__type_15 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_2896 epsilon_m__def_62_p__type_15 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_2898 : forall X1 X2:term, auto___def_62 X1 -> auto_knows_old X2 -> auto_testable_old X2 -> auto___type_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_62 X1 -> auto___type_15 X1). tauto. exact (rem_2897 X1).
Qed.

Remark rem_2899 : forall X1 X2:term, auto___def_3 X1 X2 -> or_1
    (auto___def_62 X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2900 : forall X1 X2:term, auto___def_3 X1 X2 -> auto_testable_old X2 -> auto___type_15 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_2899 X1 X2 H);  intros.
  apply (rem_2898 X1 X2);  tauto.
Qed.

Remark rem_2901 : forall X1 X2 X3 X4:term, auto___def_13 (r_current X3 X1) -> auto___def_17 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1768 X3 X1 H);  intros.
Qed.

Remark rem_2902 : forall X1 X2 X3 X4:term, auto___def_12 sym -> auto___def_13 (r_current X3 X1) -> auto___def_17 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_13 (r_current X3 X1) -> auto___def_17 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2901 X1 X2 X3 X4).
Qed.

Remark rem_2903 : forall X1 X2 X3 X4:term, auto___def_17 X2 -> auto___type_2 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1399 sym (r_current X3 X1) H);  intros.
  apply (rem_2902 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2904 : forall X1 X2 X3 X4:term, auto___def_36 X2 -> auto___def_42 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_399 X3 X1 H);  intros.
Qed.

Remark rem_2905 : forall X1 X2 X3 X4:term, auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_36 X2 -> auto___def_42 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2904 X1 X2 X3 X4).
Qed.

Remark rem_2906 : forall X1 X2 X3 X4:term, auto___def_41 sym -> auto___def_42 (r_current X3 X1) -> auto___def_36 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto. exact (rem_2905 X1 X2 X3 X4).
Qed.

Remark rem_2907 : forall X1 X2 X3 X4:term, auto___def_36 X2 -> auto___def_37 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1405 sym (r_current X3 X1) H);  intros.
  apply (rem_2906 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2908 : forall X1 X2 X3 X4:term, auto___def_21 X2 -> auto___def_22 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1407 sym (r_current X3 X1) H);  intros.
Qed.

Remark rem_2909 : forall X1 X2 X3:term, auto___def_62 (r_current X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_320 X3 X1 H);  intros.
Qed.

Remark rem_2910 : forall X1 X2 X3:term, auto___def_61 sym -> auto___def_62 (r_current X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_62 (r_current X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2909 X1 X2 X3).
Qed.

Remark rem_2911 : forall X1 X2 X3:term, auto_agent X3 -> auto_agent X1 -> auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1099 X3 X1 H);  intros.
Qed.

Remark rem_2912 : forall X1 X2 X3:term, auto___def_51 sym -> auto_agent X3 -> auto_agent X1 -> auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X3 -> auto_agent X1 -> auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2911 X1 X2 X3).
Qed.

Remark rem_2913 : forall X1 X2 X3:term, auto___def_51 sym -> auto_agent (r_current X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_51 sym -> auto_agent X3 -> auto_agent X1 -> auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3). tauto. exact (rem_2912 X1 X2 X3).
Qed.

Remark rem_2914 : forall X1 X2 X3:term, auto___def_13 (r_current X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1768 X3 X1 H);  intros.
Qed.

Remark rem_2915 : forall X1 X2 X3:term, auto___def_12 sym -> auto___def_13 (r_current X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_13 (r_current X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2914 X1 X2 X3).
Qed.

Remark rem_2916 : forall X1 X2 X3:term, auto_agent X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2 H3 H4. intro H. intros.
  elim (rem_1066 sym (r_current X3 X1) H);  intros.
  apply (rem_2910 X1 X2 X3);  tauto.
  apply (rem_2913 X1 X2 X3);  tauto.
  apply (rem_2915 X1 X2 X3);  tauto.
Qed.

Remark rem_2917 : forall X1 X2:term, auto___def_72 (passwd_current X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2918 : forall X1 X2 X3:term, auto___def_72 (passwd_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_2917 X3 X1 H);  intros.
  apply (rem_2916 X1 X2 X3);  tauto.
Qed.

Remark rem_2919 : forall X1 X2 X3 X4:term, auto___def_71 X4 -> auto___def_72 (passwd_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_72 (passwd_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2918 X1 X2 X3).
Qed.

Remark rem_2920 : forall X1 X2 X3:term, auto___def_62 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_320 X3 X1 H);  intros.
Qed.

Remark rem_2921 : forall X1 X2 X3:term, auto___def_61 sym -> auto___def_62 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_62 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2920 X1 X2 X3).
Qed.

Remark rem_2922 : forall X1 X2 X3:term, auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1099 X3 X1 H);  intros.
Qed.

Remark rem_2923 : forall X1 X2 X3:term, auto___def_51 sym -> auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2922 X1 X2 X3).
Qed.

Remark rem_2924 : forall X1 X2 X3:term, auto___def_13 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1768 X3 X1 H);  intros.
Qed.

Remark rem_2925 : forall X1 X2 X3:term, auto___def_12 sym -> auto___def_13 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_13 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2924 X1 X2 X3).
Qed.

Remark rem_2926 : forall X1 X2 X3:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1066 sym (r_current X3 X1) H);  intros.
  apply (rem_2921 X1 X2 X3);  tauto.
  apply (rem_2923 X1 X2 X3);  tauto.
  apply (rem_2925 X1 X2 X3);  tauto.
Qed.

Remark rem_2927 : forall X1 X2 X3 X4:term, auto_knows_current X4 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2926 X1 X2 X3).
Qed.

Remark rem_2928 : forall X1 X2 X3 X4:term, auto_knows_current X4 -> auto_knows_current (passwd_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X4 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto_knows_current (passwd_current X3 X1) -> auto___def_87 X1 X2 X3). tauto. exact (rem_2927 X1 X2 X3 X4).
Qed.

Remark rem_2929 : forall X1 X2 X3:term, auto___def_62 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_320 X3 X1 H);  intros.
Qed.

Remark rem_2930 : forall X1 X2 X3:term, auto___def_61 sym -> auto___def_62 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_62 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2929 X1 X2 X3).
Qed.

Remark rem_2931 : forall X1 X2 X3:term, auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1099 X3 X1 H);  intros.
Qed.

Remark rem_2932 : forall X1 X2 X3:term, auto___def_51 sym -> auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2931 X1 X2 X3).
Qed.

Remark rem_2933 : forall X1 X2 X3:term, auto___def_13 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1768 X3 X1 H);  intros.
Qed.

Remark rem_2934 : forall X1 X2 X3:term, auto___def_12 sym -> auto___def_13 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_13 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2933 X1 X2 X3).
Qed.

Remark rem_2935 : forall X1 X2 X3:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1066 sym (r_current X3 X1) H);  intros.
  apply (rem_2930 X1 X2 X3);  tauto.
  apply (rem_2932 X1 X2 X3);  tauto.
  apply (rem_2934 X1 X2 X3);  tauto.
Qed.

Remark rem_2936 : forall X1 X2 X3:term, auto_knows_current X3 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto. exact (rem_2935 X1 X2 X3).
Qed.

Remark rem_2937 : forall X1 X2:term, auto___def_80 (passwd_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2938 : forall X1 X2 X3:term, auto___def_80 (passwd_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_2937 X3 X1 H);  intros.
  apply (rem_2936 X1 X2 X3);  tauto.
Qed.

Remark rem_2939 : forall X1 X2 X3 X4:term, auto___def_79 X4 -> auto___def_80 (passwd_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_80 (passwd_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2938 X1 X2 X3).
Qed.

Remark rem_2940 : forall X1 X2:term, auto___def_76 (passwd_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2941 : forall X1 X2 X3:term, auto___def_76 (passwd_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_2940 X3 X1 H);  intros.
  apply (rem_2936 X1 X2 X3);  tauto.
Qed.

Remark rem_2942 : forall X1 X2 X3 X4:term, auto___def_75 X4 -> auto___def_76 (passwd_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_76 (passwd_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_2941 X1 X2 X3).
Qed.

Remark rem_2943 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_1031 X4 (passwd_current X3 X1) H);  intros.
  apply (rem_2919 X1 X2 X3 X4);  tauto.
  apply (rem_2928 X1 X2 X3 X4);  tauto.
  apply (rem_2939 X1 X2 X3 X4);  tauto.
  apply (rem_2942 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2944 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto. exact (rem_2943 X1 X2 X3 X4).
Qed.

Remark rem_2945 : forall X2:term, auto___type_22 X2 -> auto___type_22 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2946 : forall X1 X2 X3 X4:term, auto___def_104 (key sym (r_current X3 X1)) -> auto___type_22 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___type_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_22 X2 -> auto___type_22 X2). tauto. exact (rem_2945 X2).
Qed.

Remark rem_2947 : forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2948 : forall X1 X2 X3 X4:term, auto___def_104 (key sym (r_current X3 X1)) -> auto___type_22 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_2947 X3).
Qed.

Remark rem_2949 : forall X1 X2 X3 X4:term, auto___def_104 (key sym (r_current X3 X1)) -> auto___type_22 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> (auto___type_22 X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto___type_22 X2). 2:apply (rem_2946 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_2948 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_2950 : forall X1 X2 X3 X4:term, auto___def_104 (key sym (r_current X3 X1)) -> auto___type_22 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_2949 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_87_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_2951 : forall X1 X2 X3 X4:term, auto___type_22 X2 -> auto___def_104 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_104 (key sym (r_current X3 X1)) -> auto___type_22 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto. exact (rem_2950 X1 X2 X3 X4).
Qed.

Remark rem_2952 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2953 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_2952 epsilon_m__type_20_p__type_21 X1);  assumption.
  tauto.
Defined.

Remark rem_2954 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_21 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2. intros A1.
  case (rem_2953 epsilon_m__type_20_p__type_21 X1 A1). clear  epsilon_m__type_20_p__type_21 A1. intros. apply trans___type_21_nonceb_current_1;  tauto.
 clear  epsilon_m__type_20_p__type_21 A1. tauto.
Defined.

Remark rem_2955 : forall X1 X2:term, auto___type_20 (nonceb_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2956 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_20 (nonceb_current X1 X2) -> auto___type_21 (nonceb_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2. intro H. intros.
  elim (rem_2955 X1 X2 H);  intros.
  apply (rem_2954 epsilon_m__type_20_p__type_21 X1 X2);  tauto.
Defined.

Remark rem_2957 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1:term, auto___type_21 X1 -> auto___type_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2958 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2.
  cut (auto___type_21 X1 -> auto___type_21 X1). tauto. exact (rem_2957 epsilon_m__type_20_p__type_21 X1).
Defined.

Remark rem_2959 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X2:term, auto___def_98 X2 -> auto___def_98 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2960 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___def_98 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2.
  cut (auto___def_98 X2 -> auto___def_98 X2). tauto. exact (rem_2959 epsilon_m__type_20_p__type_21 X2).
Defined.

Remark rem_2961 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> (auto___type_21 X1 /\ auto___def_98 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2. intros A1 A2.
  cut (auto___type_21 X1). 2:apply (rem_2958 epsilon_m__type_20_p__type_21 X1 X2);  assumption.
  cut (auto___def_98 X2). 2:apply (rem_2960 epsilon_m__type_20_p__type_21 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2962 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_21 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2. intros A1 A2.
  case (rem_2961 epsilon_m__type_20_p__type_21 X1 X2 A1 A2). clear  epsilon_m__type_20_p__type_21 A1 A2. intros. apply trans___type_21_cons_1;  tauto.
 clear  epsilon_m__type_20_p__type_21 A1 A2. tauto.
Defined.

Remark rem_2963 : forall X1 X2:term, auto___type_20 (cons X1 X2) -> or_1
    (auto___type_21 X1 /\ auto___def_98 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2964 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_20 (cons X1 X2) -> auto___type_21 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2. intro H. intros.
  elim (rem_2963 X1 X2 H);  intros.
  apply (rem_2962 epsilon_m__type_20_p__type_21 X1 X2);  tauto.
Defined.

Remark rem_2965 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2966 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_2965 epsilon_m__type_20_p__type_21 X1).
Defined.

Remark rem_2967 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2968 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2967 epsilon_m__type_20_p__type_21 X2).
Defined.

Remark rem_2969 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_2966 epsilon_m__type_20_p__type_21 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_2968 epsilon_m__type_20_p__type_21 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2970 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_21 (noncea_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2. intros A1 A2.
  case (rem_2969 epsilon_m__type_20_p__type_21 X1 X2 A1 A2). clear  epsilon_m__type_20_p__type_21 A1 A2. intros. apply trans___type_21_noncea_current_1;  tauto.
 clear  epsilon_m__type_20_p__type_21 A1 A2. tauto.
Defined.

Remark rem_2971 : (forall X:term, auto___type_20 X -> auto___type_21 X)
    -> forall X1 X2:term, auto___type_20 (noncea_current X1 X2) -> auto___type_21 (noncea_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_20_p__type_21. intros X1 X2. intro H. intros.
  elim (rem_2877 X1 X2 H);  intros.
  apply (rem_2970 epsilon_m__type_20_p__type_21 X1 X2);  tauto.
Defined.

Remark rem_2972 : forall X1 X2:term, auto___type_20 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2973 : forall X1 X2:term, auto___type_20 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2974 : auto___type_20 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2975 : forall X1 X2:term, auto___type_20 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2976 : forall X1 X2:term, auto___type_20 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2977 : forall X1 X2:term, auto___type_20 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2978 : forall X1:term, auto___type_20 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2979 : auto___type_20 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2980 : forall X1 X2:term, auto___type_20 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2981 : forall X1 X2:term, auto___type_20 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2982 : auto___type_20 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2983 : auto___type_20 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2984 : forall X1 X2:term, auto___type_20 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2985 : forall X1 X2:term, auto___type_20 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2986 : forall X1 X2:term, auto___type_20 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2987 : forall X1:term, auto___type_20 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2988 : auto___type_20 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2989 : forall X1 X2:term, auto___type_20 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2990 : auto___type_20 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2991 : auto___type_20 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2992 : auto___type_20 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2993 : forall X1 X2:term, auto___type_20 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2994 : forall X1:term, auto___type_20 X1 -> auto___type_21 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_20_p__type_21 1.
  intro X. case X.
   intro H. elim (rem_2982  H).
   intro H. elim (rem_2974  H).
  intros X1 X2;  exact (rem_2964 epsilon_m__type_20_p__type_21 X1 X2).
  intros X1 X2. intro H. elim (rem_2972 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2985 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2986 X1 X2 H).
   intro H. elim (rem_2990  H).
  intros X1 X2. intro H. elim (rem_2993 X1 X2 H).
   intro H. elim (rem_2991  H).
  intros X1 X2;  exact (rem_2971 epsilon_m__type_20_p__type_21 X1 X2).
  intros X1 X2. intro H. elim (rem_2975 X1 X2 H).
  intros X1 X2;  exact (rem_2956 epsilon_m__type_20_p__type_21 X1 X2).
  intros X1 X2. intro H. elim (rem_2984 X1 X2 H).
  intros X1. intro H. elim (rem_2978 X1 H).
  intros X1 X2. intro H. elim (rem_2981 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2980 X1 X2 H).
   intro H. elim (rem_2983  H).
   intro H. elim (rem_2979  H).
  intros X1 X2. intro H. elim (rem_2977 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2976 X1 X2 H).
  intros X1. intro H. elim (rem_2987 X1 H).
   intro H. elim (rem_2992  H).
  intros X1 X2. intro H. elim (rem_2989 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2973 X1 X2 H).
   intro H. elim (rem_2988  H).
Qed.

Remark rem_2995 : (forall X:term, auto___def_88 X -> auto___def_96 X)
    -> forall X1:term, auto___type_20 X1 -> auto___type_21 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_88_p__def_96. exact (rem_2994).
Defined.

Remark rem_2996 : (forall X:term, auto___def_88 X -> auto___def_96 X)
    -> forall X1 X2:term, auto___type_20 X1 -> auto___def_90 X2 -> auto___type_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_88_p__def_96. intros X1 X2.
  cut (auto___type_20 X1 -> auto___type_21 X1). tauto. exact (rem_2995 epsilon_m__def_88_p__def_96 X1).
Defined.

Remark rem_2997 : (forall X:term, auto___def_91 X -> auto___def_99 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2998 : (forall X:term, auto___def_91 X -> auto___def_99 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_91_p__def_99. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_2997 epsilon_m__def_91_p__def_99 X1);  assumption.
  tauto.
Defined.

Remark rem_2999 : (forall X:term, auto___def_91 X -> auto___def_99 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_99 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_91_p__def_99. intros X1 X2. intros A1.
  case (rem_2998 epsilon_m__def_91_p__def_99 X1 A1). clear  epsilon_m__def_91_p__def_99 A1. intros. apply trans___def_99_nonceb_current_1;  tauto.
 clear  epsilon_m__def_91_p__def_99 A1. tauto.
Defined.

Remark rem_3000 : forall X1 X2:term, auto___def_91 (nonceb_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3001 : (forall X:term, auto___def_91 X -> auto___def_99 X)
    -> forall X1 X2:term, auto___def_91 (nonceb_current X1 X2) -> auto___def_99 (nonceb_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_91_p__def_99. intros X1 X2. intro H. intros.
  elim (rem_3000 X1 X2 H);  intros.
  apply (rem_2999 epsilon_m__def_91_p__def_99 X1 X2);  tauto.
Defined.

Remark rem_3002 : forall X1 X2:term, auto___def_91 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3003 : forall X1 X2:term, auto___def_91 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3004 : auto___def_91 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3005 : forall X1 X2:term, auto___def_91 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3006 : forall X1 X2:term, auto___def_91 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3007 : forall X1 X2:term, auto___def_91 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3008 : forall X1:term, auto___def_91 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3009 : auto___def_91 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3010 : forall X1 X2:term, auto___def_91 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3011 : forall X1 X2:term, auto___def_91 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3012 : auto___def_91 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3013 : auto___def_91 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3014 : forall X1 X2:term, auto___def_91 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3015 : forall X1 X2:term, auto___def_91 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3016 : forall X1 X2:term, auto___def_91 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3017 : forall X1 X2:term, auto___def_91 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3018 : forall X1:term, auto___def_91 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3019 : auto___def_91 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3020 : forall X1 X2:term, auto___def_91 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3021 : auto___def_91 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3022 : auto___def_91 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3023 : auto___def_91 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3024 : forall X1 X2:term, auto___def_91 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3025 : forall X1 X2:term, auto___def_91 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3026 : forall X1:term, auto___def_91 X1 -> auto___def_99 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_91_p__def_99 1.
  intro X. case X.
   intro H. elim (rem_3012  H).
   intro H. elim (rem_3004  H).
  intros X1 X2. intro H. elim (rem_3017 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3002 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3015 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3016 X1 X2 H).
   intro H. elim (rem_3021  H).
  intros X1 X2. intro H. elim (rem_3025 X1 X2 H).
   intro H. elim (rem_3022  H).
  intros X1 X2. intro H. elim (rem_3024 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3005 X1 X2 H).
  intros X1 X2;  exact (rem_3001 epsilon_m__def_91_p__def_99 X1 X2).
  intros X1 X2. intro H. elim (rem_3014 X1 X2 H).
  intros X1. intro H. elim (rem_3008 X1 H).
  intros X1 X2. intro H. elim (rem_3011 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3010 X1 X2 H).
   intro H. elim (rem_3013  H).
   intro H. elim (rem_3009  H).
  intros X1 X2. intro H. elim (rem_3007 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3006 X1 X2 H).
  intros X1. intro H. elim (rem_3018 X1 H).
   intro H. elim (rem_3023  H).
  intros X1 X2. intro H. elim (rem_3020 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3003 X1 X2 H).
   intro H. elim (rem_3019  H).
Qed.

Remark rem_3027 : (forall X:term, auto___def_90 X -> auto___def_98 X)
    -> forall X1:term, auto___def_91 X1 -> auto___def_99 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_90_p__def_98. exact (rem_3026).
Defined.

Remark rem_3028 : (forall X:term, auto___def_90 X -> auto___def_98 X)
    -> forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> auto___def_99 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_90_p__def_98. intros X1 X2.
  cut (auto___def_91 X1 -> auto___def_99 X1). tauto. exact (rem_3027 epsilon_m__def_90_p__def_98 X1).
Defined.

Remark rem_3029 : (forall X:term, auto___def_92 X -> auto___def_100 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_92_p__def_100.  tauto.
Defined.

Remark rem_3030 : (forall X:term, auto___def_92 X -> auto___def_100 X)
    -> auto___def_100 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_92_p__def_100.  case (rem_3029 epsilon_m__def_92_p__def_100). clear  epsilon_m__def_92_p__def_100. intros. apply trans___def_100_nil_1;  tauto.
 clear  epsilon_m__def_92_p__def_100. tauto.
Defined.

Remark rem_3031 : auto___def_92 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3032 : (forall X:term, auto___def_92 X -> auto___def_100 X)
    -> auto___def_92 nil -> auto___def_100 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_92_p__def_100. intro H. intros.
  elim (rem_3031 H);  intros.
  apply (rem_3030 epsilon_m__def_92_p__def_100);  tauto.
Defined.

Remark rem_3033 : forall X1 X2:term, auto___def_92 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3034 : forall X1 X2:term, auto___def_92 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3035 : forall X1 X2:term, auto___def_92 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3036 : auto___def_92 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3037 : forall X1 X2:term, auto___def_92 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3038 : forall X1 X2:term, auto___def_92 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3039 : forall X1 X2:term, auto___def_92 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3040 : forall X1:term, auto___def_92 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3041 : auto___def_92 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3042 : forall X1 X2:term, auto___def_92 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3043 : forall X1 X2:term, auto___def_92 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3044 : auto___def_92 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3045 : auto___def_92 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3046 : forall X1 X2:term, auto___def_92 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3047 : forall X1 X2:term, auto___def_92 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3048 : forall X1 X2:term, auto___def_92 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3049 : forall X1 X2:term, auto___def_92 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3050 : forall X1:term, auto___def_92 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3051 : auto___def_92 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3052 : forall X1 X2:term, auto___def_92 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3053 : auto___def_92 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3054 : auto___def_92 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3055 : forall X1 X2:term, auto___def_92 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3056 : forall X1 X2:term, auto___def_92 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3057 : forall X2:term, auto___def_92 X2 -> auto___def_100 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_92_p__def_100 1.
  intro X. case X.
   intro H. elim (rem_3044  H).
   intro H. elim (rem_3036  H).
  intros X1 X2. intro H. elim (rem_3049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3033 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3047 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3048 X1 X2 H).
   intro H. elim (rem_3053  H).
  intros X1 X2. intro H. elim (rem_3056 X1 X2 H).
  exact (rem_3032 epsilon_m__def_92_p__def_100 ).
  intros X1 X2. intro H. elim (rem_3055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3037 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3034 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3046 X1 X2 H).
  intros X1. intro H. elim (rem_3040 X1 H).
  intros X1 X2. intro H. elim (rem_3043 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3042 X1 X2 H).
   intro H. elim (rem_3045  H).
   intro H. elim (rem_3041  H).
  intros X1 X2. intro H. elim (rem_3039 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3038 X1 X2 H).
  intros X1. intro H. elim (rem_3050 X1 H).
   intro H. elim (rem_3054  H).
  intros X1 X2. intro H. elim (rem_3052 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3035 X1 X2 H).
   intro H. elim (rem_3051  H).
Qed.

Remark rem_3058 : (forall X:term, auto___def_90 X -> auto___def_98 X)
    -> forall X2:term, auto___def_92 X2 -> auto___def_100 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_90_p__def_98. exact (rem_3057).
Defined.

Remark rem_3059 : (forall X:term, auto___def_90 X -> auto___def_98 X)
    -> forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> auto___def_100 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_90_p__def_98. intros X1 X2.
  cut (auto___def_92 X2 -> auto___def_100 X2). tauto. exact (rem_3058 epsilon_m__def_90_p__def_98 X2).
Defined.

Remark rem_3060 : (forall X:term, auto___def_90 X -> auto___def_98 X)
    -> forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> (auto___def_99 X1 /\ auto___def_100 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_90_p__def_98. intros X1 X2. intros A1 A2.
  cut (auto___def_99 X1). 2:apply (rem_3028 epsilon_m__def_90_p__def_98 X1 X2);  assumption.
  cut (auto___def_100 X2). 2:apply (rem_3059 epsilon_m__def_90_p__def_98 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3061 : (forall X:term, auto___def_90 X -> auto___def_98 X)
    -> forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> auto___def_98 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_90_p__def_98. intros X1 X2. intros A1 A2.
  case (rem_3060 epsilon_m__def_90_p__def_98 X1 X2 A1 A2). clear  epsilon_m__def_90_p__def_98 A1 A2. intros. apply trans___def_98_cons_1;  tauto.
 clear  epsilon_m__def_90_p__def_98 A1 A2. tauto.
Defined.

Remark rem_3062 : (forall X:term, auto___def_90 X -> auto___def_98 X)
    -> forall X1 X2:term, auto___def_90 (cons X1 X2) -> auto___def_98 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_90_p__def_98. intros X1 X2. intro H. intros.
  elim (rem_2825 X1 X2 H);  intros.
  apply (rem_3061 epsilon_m__def_90_p__def_98 X1 X2);  tauto.
Defined.

Remark rem_3063 : forall X1 X2:term, auto___def_90 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3064 : forall X1 X2:term, auto___def_90 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3065 : forall X1 X2:term, auto___def_90 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3066 : auto___def_90 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3067 : forall X1 X2:term, auto___def_90 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3068 : forall X1 X2:term, auto___def_90 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3069 : forall X1 X2:term, auto___def_90 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3070 : forall X1:term, auto___def_90 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3071 : auto___def_90 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3072 : forall X1 X2:term, auto___def_90 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3073 : forall X1 X2:term, auto___def_90 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3074 : auto___def_90 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3075 : auto___def_90 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3076 : forall X1 X2:term, auto___def_90 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3077 : forall X1 X2:term, auto___def_90 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3078 : forall X1 X2:term, auto___def_90 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3079 : forall X1:term, auto___def_90 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3080 : auto___def_90 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3081 : forall X1 X2:term, auto___def_90 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3082 : auto___def_90 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3083 : auto___def_90 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3084 : auto___def_90 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3085 : forall X1 X2:term, auto___def_90 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3086 : forall X1 X2:term, auto___def_90 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3087 : forall X2:term, auto___def_90 X2 -> auto___def_98 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_90_p__def_98 1.
  intro X. case X.
   intro H. elim (rem_3074  H).
   intro H. elim (rem_3066  H).
  intros X1 X2;  exact (rem_3062 epsilon_m__def_90_p__def_98 X1 X2).
  intros X1 X2. intro H. elim (rem_3063 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3077 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3078 X1 X2 H).
   intro H. elim (rem_3082  H).
  intros X1 X2. intro H. elim (rem_3086 X1 X2 H).
   intro H. elim (rem_3083  H).
  intros X1 X2. intro H. elim (rem_3085 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3067 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3064 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3076 X1 X2 H).
  intros X1. intro H. elim (rem_3070 X1 H).
  intros X1 X2. intro H. elim (rem_3073 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3072 X1 X2 H).
   intro H. elim (rem_3075  H).
   intro H. elim (rem_3071  H).
  intros X1 X2. intro H. elim (rem_3069 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3068 X1 X2 H).
  intros X1. intro H. elim (rem_3079 X1 H).
   intro H. elim (rem_3084  H).
  intros X1 X2. intro H. elim (rem_3081 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3065 X1 X2 H).
   intro H. elim (rem_3080  H).
Qed.

Remark rem_3088 : (forall X:term, auto___def_88 X -> auto___def_96 X)
    -> forall X2:term, auto___def_90 X2 -> auto___def_98 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_88_p__def_96. exact (rem_3087).
Defined.

Remark rem_3089 : (forall X:term, auto___def_88 X -> auto___def_96 X)
    -> forall X1 X2:term, auto___type_20 X1 -> auto___def_90 X2 -> auto___def_98 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_88_p__def_96. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_98 X2). tauto. exact (rem_3088 epsilon_m__def_88_p__def_96 X2).
Defined.

Remark rem_3090 : (forall X:term, auto___def_88 X -> auto___def_96 X)
    -> forall X1 X2:term, auto___type_20 X1 -> auto___def_90 X2 -> (auto___type_21 X1 /\ auto___def_98 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_88_p__def_96. intros X1 X2. intros A1 A2.
  cut (auto___type_21 X1). 2:apply (rem_2996 epsilon_m__def_88_p__def_96 X1 X2);  assumption.
  cut (auto___def_98 X2). 2:apply (rem_3089 epsilon_m__def_88_p__def_96 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3091 : (forall X:term, auto___def_88 X -> auto___def_96 X)
    -> forall X1 X2:term, auto___type_20 X1 -> auto___def_90 X2 -> auto___def_96 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_88_p__def_96. intros X1 X2. intros A1 A2.
  case (rem_3090 epsilon_m__def_88_p__def_96 X1 X2 A1 A2). clear  epsilon_m__def_88_p__def_96 A1 A2. intros. apply trans___def_96_cons_1;  tauto.
 clear  epsilon_m__def_88_p__def_96 A1 A2. tauto.
Defined.

Remark rem_3092 : (forall X:term, auto___def_88 X -> auto___def_96 X)
    -> forall X1 X2:term, auto___def_88 (cons X1 X2) -> auto___def_96 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_88_p__def_96. intros X1 X2. intro H. intros.
  elim (rem_2641 X1 X2 H);  intros.
  apply (rem_3091 epsilon_m__def_88_p__def_96 X1 X2);  tauto.
Defined.

Remark rem_3093 : forall X2:term, auto___def_88 X2 -> auto___def_96 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_88_p__def_96 1.
  intro X. case X.
   intro H. elim (rem_2654  H).
   intro H. elim (rem_2646  H).
  intros X1 X2;  exact (rem_3092 epsilon_m__def_88_p__def_96 X1 X2).
  intros X1 X2. intro H. elim (rem_2643 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2657 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2658 X1 X2 H).
   intro H. elim (rem_2662  H).
  intros X1 X2. intro H. elim (rem_2666 X1 X2 H).
   intro H. elim (rem_2663  H).
  intros X1 X2. intro H. elim (rem_2665 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2647 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2644 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2656 X1 X2 H).
  intros X1. intro H. elim (rem_2650 X1 H).
  intros X1 X2. intro H. elim (rem_2653 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2652 X1 X2 H).
   intro H. elim (rem_2655  H).
   intro H. elim (rem_2651  H).
  intros X1 X2. intro H. elim (rem_2649 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2648 X1 X2 H).
  intros X1. intro H. elim (rem_2659 X1 H).
   intro H. elim (rem_2664  H).
  intros X1 X2. intro H. elim (rem_2661 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2645 X1 X2 H).
   intro H. elim (rem_2660  H).
Qed.

Remark rem_3094 : forall X1 X2 X3 X4:term, auto___def_88 X2 -> auto___def_89 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_96 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_88 X2 -> auto___def_96 X2). tauto. exact (rem_3093 X2).
Qed.

Remark rem_3095 : forall X1 X2 X3 X4:term, auto___def_88 X2 -> auto___def_89 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_2947 X3).
Qed.

Remark rem_3096 : forall X1 X2 X3 X4:term, auto___def_88 X2 -> auto___def_89 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> (auto___def_96 X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto___def_96 X2). 2:apply (rem_3094 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_3095 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3097 : forall X1 X2 X3 X4:term, auto___def_88 X2 -> auto___def_89 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3096 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_87_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3098 : forall X1 X2 X3 X4:term, auto___def_24 X2 -> auto___type_4 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_526 X3 X1 H);  intros.
Qed.

Remark rem_3099 : forall X1 X2 X3 X4:term, auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_24 X2 -> auto___type_4 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_3098 X1 X2 X3 X4).
Qed.

Remark rem_3100 : forall X1 X2 X3 X4:term, auto___def_26 sym -> auto___type_4 (r_current X3 X1) -> auto___def_24 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto. exact (rem_3099 X1 X2 X3 X4).
Qed.

Remark rem_3101 : forall X1 X2 X3 X4:term, auto___def_24 X2 -> auto___def_25 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1444 sym (r_current X3 X1) H);  intros.
  apply (rem_3100 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3102 : forall X1 X2 X3 X4:term, auto___type_7 X2 -> auto___type_8 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_463 X3 X1 H);  intros.
Qed.

Remark rem_3103 : forall X1 X2 X3 X4:term, auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_7 X2 -> auto___type_8 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_3102 X1 X2 X3 X4).
Qed.

Remark rem_3104 : forall X1 X2 X3 X4:term, auto___def_45 sym -> auto___type_8 (r_current X3 X1) -> auto___type_7 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 (r_current X3 X1) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto. exact (rem_3103 X1 X2 X3 X4).
Qed.

Remark rem_3105 : forall X1 X2 X3 X4:term, auto___def_44 (key sym (r_current X3 X1)) -> auto___type_7 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1450 sym (r_current X3 X1) H);  intros.
  apply (rem_3104 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3106 : forall X1 X2 X3 X4:term, auto___type_7 X2 -> auto___def_44 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_44 (key sym (r_current X3 X1)) -> auto___type_7 X2 -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto. exact (rem_3105 X1 X2 X3 X4).
Qed.

Remark rem_3107 : forall X2:term, auto___def_84 X2 -> auto___def_84 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3108 : forall X1 X2 X3 X4:term, auto___def_84 X2 -> auto___def_85 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_84 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_84 X2 -> auto___def_84 X2). tauto. exact (rem_3107 X2).
Qed.

Remark rem_3109 : forall X1 X2 X3 X4:term, auto___def_84 X2 -> auto___def_85 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_2947 X3).
Qed.

Remark rem_3110 : forall X1 X2 X3 X4:term, auto___def_84 X2 -> auto___def_85 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> (auto___def_84 X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto___def_84 X2). 2:apply (rem_3108 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_3109 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3111 : forall X1 X2 X3 X4:term, auto___def_84 X2 -> auto___def_85 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3110 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_87_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3112 : forall X1 X2 X3 X4:term, auto_knows_current X3 -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_987 X2 (key sym (r_current X3 X1)) H);  intros.
  apply (rem_2903 X1 X2 X3 X4);  tauto.
  apply (rem_2907 X1 X2 X3 X4);  tauto.
  apply (rem_2908 X1 X2 X3 X4);  tauto.
  apply (rem_2944 X1 X2 X3 X4);  tauto.
  apply (rem_2951 X1 X2 X3 X4);  tauto.
  apply (rem_3097 X1 X2 X3 X4);  tauto.
  apply (rem_3101 X1 X2 X3 X4);  tauto.
  apply (rem_3106 X1 X2 X3 X4);  tauto.
  apply (rem_3111 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3113 : forall X1 X2 X3 X4:term, auto_knows_current X3 -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto_knows_current nil -> auto___def_87 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X3 -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto___def_87 X1 X2 X3). tauto.
  exact (rem_3112 X1 X2 X3 X4).
Qed.

Remark rem_3114 : forall X1 X2 X3 X4:term, auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto_knows_current nil -> auto_knows_current X3 -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X3 -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto_knows_current (enc X4 (passwd_current X3 X1)) -> auto_knows_current nil -> auto___def_87 X1 X2 X3). tauto. exact (rem_3113 X1 X2 X3 X4).
Qed.

Remark rem_3115 : forall X1 X2 X3 X4:term, auto_knows_current X3 -> auto_knows_current (cons (enc X4 (passwd_current X3 X1)) nil) -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1034 (enc X4 (passwd_current X3 X1)) nil H);  intros.
  apply (rem_3114 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3116 : forall X1 X2 X3 X4:term, auto_knows_current (cons X3 (cons (enc X4 (passwd_current X3 X1)) nil)) -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto___def_87 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1034 X3 (cons (enc X4 (passwd_current X3 X1)) nil) H);  intros.
  apply (rem_3115 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3117 : forall X1 X2 X3 X4:term, auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto_knows_current (cons X3 (cons (enc X4 (passwd_current X3 X1)) nil)) -> auto___def_87 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current (cons X3 (cons (enc X4 (passwd_current X3 X1)) nil)) -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto___def_87 X1 X2 X3). tauto. exact (rem_3116 X1 X2 X3 X4).
Qed.

Remark rem_3118 : (forall X:term, auto___def_62 X -> auto___def_4 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_62_p__def_4.  tauto.
Defined.

Remark rem_3119 : (forall X:term, auto___def_62 X -> auto___def_4 X)
    -> auto___def_4 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_62_p__def_4.  case (rem_3118 epsilon_m__def_62_p__def_4). clear  epsilon_m__def_62_p__def_4. intros. apply trans___def_4_i_1;  tauto.
 clear  epsilon_m__def_62_p__def_4. tauto.
Defined.

Remark rem_3120 : (forall X:term, auto___def_62 X -> auto___def_4 X)
    -> auto___def_62 i -> auto___def_4 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_p__def_4. intro H. intros.
  elim (rem_312 H);  intros.
  apply (rem_3119 epsilon_m__def_62_p__def_4);  tauto.
Defined.

Remark rem_3121 : forall X1:term, auto___def_62 X1 -> auto___def_4 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_62_p__def_4 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_3120 epsilon_m__def_62_p__def_4 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_3122 : forall X1:term, auto___def_61 pub -> auto___def_62 X1 -> auto___def_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1.
  cut (auto___def_62 X1 -> auto___def_4 X1). tauto. exact (rem_3121 X1).
Qed.

Remark rem_3123 : (forall X:term, auto_agent X -> auto___def_4 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p__def_4.  tauto.
Defined.

Remark rem_3124 : (forall X:term, auto_agent X -> auto___def_4 X)
    -> auto___def_4 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__def_4.  case (rem_3123 epsilon_magent_p__def_4). clear  epsilon_magent_p__def_4. intros. apply trans___def_4_bob_1;  tauto.
 clear  epsilon_magent_p__def_4. tauto.
Defined.

Remark rem_3125 : (forall X:term, auto_agent X -> auto___def_4 X)
    -> auto_agent bob -> auto___def_4 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__def_4. intro H. intros.
  elim (rem_1083 H);  intros.
  apply (rem_3124 epsilon_magent_p__def_4);  tauto.
Defined.

Remark rem_3126 : (forall X:term, auto_agent X -> auto___def_4 X)
    -> auto___def_4 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__def_4.  case (rem_3123 epsilon_magent_p__def_4). clear  epsilon_magent_p__def_4. intros. apply trans___def_4_alice_1;  tauto.
 clear  epsilon_magent_p__def_4. tauto.
Defined.

Remark rem_3127 : (forall X:term, auto_agent X -> auto___def_4 X)
    -> auto_agent alice -> auto___def_4 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__def_4. intro H. intros.
  elim (rem_1086 H);  intros.
  apply (rem_3126 epsilon_magent_p__def_4);  tauto.
Defined.

Remark rem_3128 : (forall X:term, auto_agent X -> auto___def_4 X)
    -> auto___def_4 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__def_4.  case (rem_3123 epsilon_magent_p__def_4). clear  epsilon_magent_p__def_4. intros. apply trans___def_4_i_1;  tauto.
 clear  epsilon_magent_p__def_4. tauto.
Defined.

Remark rem_3129 : (forall X:term, auto_agent X -> auto___def_4 X)
    -> auto_agent i -> auto___def_4 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__def_4. intro H. intros.
  elim (rem_1089 H);  intros.
  apply (rem_3128 epsilon_magent_p__def_4);  tauto.
Defined.

Remark rem_3130 : (forall X:term, auto_agent X -> auto___def_4 X)
    -> auto___def_4 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__def_4.  case (rem_3123 epsilon_magent_p__def_4). clear  epsilon_magent_p__def_4. intros. apply trans___def_4_server_1;  tauto.
 clear  epsilon_magent_p__def_4. tauto.
Defined.

Remark rem_3131 : (forall X:term, auto_agent X -> auto___def_4 X)
    -> auto_agent server -> auto___def_4 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__def_4. intro H. intros.
  elim (rem_1092 H);  intros.
  apply (rem_3130 epsilon_magent_p__def_4);  tauto.
Defined.

Remark rem_3132 : forall X1:term, auto_agent X1 -> auto___def_4 X1. (* Induct. *)
Proof.
  fix epsilon_magent_p__def_4 1.
  intro X. case X.
  exact (rem_3127 epsilon_magent_p__def_4 ).
  exact (rem_3125 epsilon_magent_p__def_4 ).
  intros X1 X2. intro H. elim (rem_1108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1094 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1106 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1107 X1 X2 H).
  exact (rem_3129 epsilon_magent_p__def_4 ).
  intros X1 X2. intro H. elim (rem_1114 X1 X2 H).
   intro H. elim (rem_1112  H).
  intros X1 X2. intro H. elim (rem_1113 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1097 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1105 X1 X2 H).
  intros X1. intro H. elim (rem_1100 X1 H).
  intros X1 X2. intro H. elim (rem_1103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1102 X1 X2 H).
   intro H. elim (rem_1104  H).
   intro H. elim (rem_1101  H).
  intros X1 X2. intro H. elim (rem_1099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1098 X1 X2 H).
  intros X1. intro H. elim (rem_1109 X1 H).
  exact (rem_3131 epsilon_magent_p__def_4 ).
  intros X1 X2. intro H. elim (rem_1111 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1096 X1 X2 H).
   intro H. elim (rem_1110  H).
Qed.

Remark rem_3133 : forall X1:term, auto___def_51 pub -> auto_agent X1 -> auto___def_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1.
  cut (auto_agent X1 -> auto___def_4 X1). tauto. exact (rem_3132 X1).
Qed.

Remark rem_3134 : forall X1:term, auto_knows_old (key pub X1) -> auto___def_4 X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_1361 pub X1 H);  intros.
  apply (rem_3122 X1);  tauto.
  apply (rem_3133 X1);  tauto.
Qed.

Remark rem_3135 : (forall X:term, auto___def_19 X -> auto___type_2 X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3136 : (forall X:term, auto___def_19 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_19_p__type_2. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_3135 epsilon_m__def_19_p__type_2 X1).
Defined.

Remark rem_3137 : (forall X:term, auto___def_19 X -> auto___type_2 X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3138 : (forall X:term, auto___def_19 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_19_p__type_2. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_3137 epsilon_m__def_19_p__type_2 X2).
Defined.

Remark rem_3139 : (forall X:term, auto___def_19 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_19_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_3136 epsilon_m__def_19_p__type_2 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_3138 epsilon_m__def_19_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3140 : (forall X:term, auto___def_19 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_19_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_3139 epsilon_m__def_19_p__type_2 X1 X2 A1 A2). clear  epsilon_m__def_19_p__type_2 A1 A2. intros. apply trans___type_2_crypt_2;  tauto.
 clear  epsilon_m__def_19_p__type_2 A1 A2. tauto.
Defined.

Remark rem_3141 : (forall X:term, auto___def_19 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_19 (crypt X1 X2) -> auto___type_2 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_19_p__type_2. intros X1 X2. intro H. intros.
  elim (rem_1840 X1 X2 H);  intros.
  apply (rem_3140 epsilon_m__def_19_p__type_2 X1 X2);  tauto.
Defined.

Remark rem_3142 : forall X1 X2:term, auto___def_19 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3143 : forall X1 X2:term, auto___def_19 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3144 : auto___def_19 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3145 : forall X1 X2:term, auto___def_19 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3146 : forall X1 X2:term, auto___def_19 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3147 : forall X1 X2:term, auto___def_19 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3148 : forall X1:term, auto___def_19 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3149 : auto___def_19 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3150 : forall X1 X2:term, auto___def_19 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3151 : forall X1 X2:term, auto___def_19 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3152 : auto___def_19 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3153 : auto___def_19 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3154 : forall X1 X2:term, auto___def_19 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3155 : forall X1 X2:term, auto___def_19 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3156 : forall X1 X2:term, auto___def_19 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3157 : forall X1 X2:term, auto___def_19 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3158 : forall X1:term, auto___def_19 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3159 : auto___def_19 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3160 : forall X1 X2:term, auto___def_19 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3161 : auto___def_19 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3162 : auto___def_19 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3163 : auto___def_19 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3164 : forall X1 X2:term, auto___def_19 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3165 : forall X1 X2:term, auto___def_19 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3166 : forall X1:term, auto___def_19 X1 -> auto___type_2 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_19_p__type_2 1.
  intro X. case X.
   intro H. elim (rem_3152  H).
   intro H. elim (rem_3144  H).
  intros X1 X2. intro H. elim (rem_3157 X1 X2 H).
  intros X1 X2;  exact (rem_3141 epsilon_m__def_19_p__type_2 X1 X2).
  intros X1 X2. intro H. elim (rem_3155 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3156 X1 X2 H).
   intro H. elim (rem_3161  H).
  intros X1 X2. intro H. elim (rem_3165 X1 X2 H).
   intro H. elim (rem_3162  H).
  intros X1 X2. intro H. elim (rem_3164 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3145 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3142 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3154 X1 X2 H).
  intros X1. intro H. elim (rem_3148 X1 H).
  intros X1 X2. intro H. elim (rem_3151 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3150 X1 X2 H).
   intro H. elim (rem_3153  H).
   intro H. elim (rem_3149  H).
  intros X1 X2. intro H. elim (rem_3147 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3146 X1 X2 H).
  intros X1. intro H. elim (rem_3158 X1 H).
   intro H. elim (rem_3163  H).
  intros X1 X2. intro H. elim (rem_3160 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3143 X1 X2 H).
   intro H. elim (rem_3159  H).
Qed.

Remark rem_3167 : forall X1 X2:term, auto___def_19 X1 -> auto_knows_old X2 -> auto___type_2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_19 X1 -> auto___type_2 X1). tauto. exact (rem_3166 X1).
Qed.

Remark rem_3168 : forall X1 X3:term, auto___def_19 X1 -> auto_knows_old X3 -> auto___type_2 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_19 X1 -> auto_knows_old X2 -> auto___type_2 X1). tauto. exact (rem_3167 X1 X2).
Qed.

Remark rem_3169 : (forall X:term, auto___def_10 X -> auto___type_2 X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3170 : (forall X:term, auto___def_10 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_10_p__type_2. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_3169 epsilon_m__def_10_p__type_2 X1).
Defined.

Remark rem_3171 : (forall X:term, auto___def_10 X -> auto___type_2 X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3172 : (forall X:term, auto___def_10 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_10_p__type_2. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_3171 epsilon_m__def_10_p__type_2 X2).
Defined.

Remark rem_3173 : (forall X:term, auto___def_10 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_10_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_3170 epsilon_m__def_10_p__type_2 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_3172 epsilon_m__def_10_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3174 : (forall X:term, auto___def_10 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_2 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_10_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_3173 epsilon_m__def_10_p__type_2 X1 X2 A1 A2). clear  epsilon_m__def_10_p__type_2 A1 A2. intros. apply trans___type_2_key_1;  tauto.
 clear  epsilon_m__def_10_p__type_2 A1 A2. tauto.
Defined.

Remark rem_3175 : forall X1 X2:term, auto___def_10 (key X1 X2) -> or_1
    (auto___def_12 X1 /\ auto___def_13 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3176 : (forall X:term, auto___def_10 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_10 (key X1 X2) -> auto___type_2 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_10_p__type_2. intros X1 X2. intro H. intros.
  elim (rem_3175 X1 X2 H);  intros.
  apply (rem_3174 epsilon_m__def_10_p__type_2 X1 X2);  tauto.
Defined.

Remark rem_3177 : forall X1 X2:term, auto___def_10 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3178 : forall X1 X2:term, auto___def_10 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3179 : auto___def_10 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3180 : forall X1 X2:term, auto___def_10 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3181 : forall X1 X2:term, auto___def_10 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3182 : forall X1 X2:term, auto___def_10 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3183 : forall X1:term, auto___def_10 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3184 : auto___def_10 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3185 : forall X1 X2:term, auto___def_10 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3186 : forall X1 X2:term, auto___def_10 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3187 : auto___def_10 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3188 : auto___def_10 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3189 : forall X1 X2:term, auto___def_10 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3190 : forall X1 X2:term, auto___def_10 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3191 : forall X1 X2:term, auto___def_10 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3192 : forall X1 X2:term, auto___def_10 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3193 : forall X1:term, auto___def_10 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3194 : auto___def_10 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3195 : forall X1 X2:term, auto___def_10 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3196 : auto___def_10 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3197 : auto___def_10 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3198 : auto___def_10 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3199 : forall X1 X2:term, auto___def_10 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3200 : forall X1:term, auto___def_10 X1 -> auto___type_2 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_10_p__type_2 1.
  intro X. case X.
   intro H. elim (rem_3187  H).
   intro H. elim (rem_3179  H).
  intros X1 X2. intro H. elim (rem_3192 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1818 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3190 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3191 X1 X2 H).
   intro H. elim (rem_3196  H).
  intros X1 X2;  exact (rem_3176 epsilon_m__def_10_p__type_2 X1 X2).
   intro H. elim (rem_3197  H).
  intros X1 X2. intro H. elim (rem_3199 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3180 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3177 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3189 X1 X2 H).
  intros X1. intro H. elim (rem_3183 X1 H).
  intros X1 X2. intro H. elim (rem_3186 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3185 X1 X2 H).
   intro H. elim (rem_3188  H).
   intro H. elim (rem_3184  H).
  intros X1 X2. intro H. elim (rem_3182 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3181 X1 X2 H).
  intros X1. intro H. elim (rem_3193 X1 H).
   intro H. elim (rem_3198  H).
  intros X1 X2. intro H. elim (rem_3195 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3178 X1 X2 H).
   intro H. elim (rem_3194  H).
Qed.

Remark rem_3201 : forall X1 X2 X3:term, auto___def_10 X1 -> auto_agent X2 -> auto_agent X3 -> auto___type_2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_10 X1 -> auto___type_2 X1). tauto. exact (rem_3200 X1).
Qed.

Remark rem_3202 : forall X1 X2 X3:term, auto_agent X2 -> auto___def_10 X1 -> auto_agent X3 -> auto___type_2 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_10 X1 -> auto_agent X2 -> auto_agent X3 -> auto___type_2 X1). tauto. exact (rem_3201 X1 X2 X3).
Qed.

Remark rem_3203 : (forall X:term, auto___def_15 X -> auto___type_2 X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3204 : (forall X:term, auto___def_15 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_15_p__type_2. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_3203 epsilon_m__def_15_p__type_2 X1).
Defined.

Remark rem_3205 : (forall X:term, auto___def_15 X -> auto___type_2 X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3206 : (forall X:term, auto___def_15 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_15_p__type_2. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_3205 epsilon_m__def_15_p__type_2 X2).
Defined.

Remark rem_3207 : (forall X:term, auto___def_15 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_15_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_3204 epsilon_m__def_15_p__type_2 X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_3206 epsilon_m__def_15_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3208 : (forall X:term, auto___def_15 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_15_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_3207 epsilon_m__def_15_p__type_2 X1 X2 A1 A2). clear  epsilon_m__def_15_p__type_2 A1 A2. intros. apply trans___type_2_crypt_1;  tauto.
 clear  epsilon_m__def_15_p__type_2 A1 A2. tauto.
Defined.

Remark rem_3209 : (forall X:term, auto___def_15 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto___type_2 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_15_p__type_2. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_3208 epsilon_m__def_15_p__type_2 X1 X2);  tauto.
Defined.

Remark rem_3210 : forall X1 X2:term, auto___def_15 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3211 : forall X1 X2:term, auto___def_15 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3212 : auto___def_15 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3213 : forall X1 X2:term, auto___def_15 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3214 : forall X1 X2:term, auto___def_15 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3215 : forall X1 X2:term, auto___def_15 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3216 : forall X1:term, auto___def_15 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3217 : auto___def_15 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3218 : forall X1 X2:term, auto___def_15 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3219 : forall X1 X2:term, auto___def_15 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3220 : auto___def_15 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3221 : auto___def_15 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3222 : forall X1 X2:term, auto___def_15 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3223 : forall X1 X2:term, auto___def_15 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3224 : forall X1 X2:term, auto___def_15 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3225 : forall X1 X2:term, auto___def_15 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3226 : forall X1:term, auto___def_15 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3227 : auto___def_15 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3228 : forall X1 X2:term, auto___def_15 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3229 : auto___def_15 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3230 : auto___def_15 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3231 : auto___def_15 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3232 : forall X1 X2:term, auto___def_15 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3233 : forall X1 X2:term, auto___def_15 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3234 : forall X1:term, auto___def_15 X1 -> auto___type_2 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_15_p__type_2 1.
  intro X. case X.
   intro H. elim (rem_3220  H).
   intro H. elim (rem_3212  H).
  intros X1 X2. intro H. elim (rem_3225 X1 X2 H).
  intros X1 X2;  exact (rem_3209 epsilon_m__def_15_p__type_2 X1 X2).
  intros X1 X2. intro H. elim (rem_3223 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3224 X1 X2 H).
   intro H. elim (rem_3229  H).
  intros X1 X2. intro H. elim (rem_3233 X1 X2 H).
   intro H. elim (rem_3230  H).
  intros X1 X2. intro H. elim (rem_3232 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3213 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3210 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3222 X1 X2 H).
  intros X1. intro H. elim (rem_3216 X1 H).
  intros X1 X2. intro H. elim (rem_3219 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3218 X1 X2 H).
   intro H. elim (rem_3221  H).
   intro H. elim (rem_3217  H).
  intros X1 X2. intro H. elim (rem_3215 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3214 X1 X2 H).
  intros X1. intro H. elim (rem_3226 X1 H).
   intro H. elim (rem_3231  H).
  intros X1 X2. intro H. elim (rem_3228 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3211 X1 X2 H).
   intro H. elim (rem_3227  H).
Qed.

Remark rem_3235 : forall X1 X2:term, auto___def_15 X1 -> auto_knows_old X2 -> auto___type_2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_15 X1 -> auto___type_2 X1). tauto. exact (rem_3234 X1).
Qed.

Remark rem_3236 : forall X1 X3:term, auto___def_15 X1 -> auto_knows_old X3 -> auto___type_2 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_15 X1 -> auto_knows_old X2 -> auto___type_2 X1). tauto. exact (rem_3235 X1 X2).
Qed.

Remark rem_3237 : forall X1 X2 X3:term, auto___def_14 X2 X1 X3 -> auto___type_2 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1814 X2 X1 X3 H);  intros.
  apply (rem_3168 X1 X3);  tauto.
  apply (rem_3202 X1 X2 X3);  tauto.
  apply (rem_3236 X1 X3);  tauto.
Qed.

Remark rem_3238 : (forall X:term, auto___def_91 X -> auto___type_22 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3239 : (forall X:term, auto___def_91 X -> auto___type_22 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_91_p__type_22. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3238 epsilon_m__def_91_p__type_22 X1);  assumption.
  tauto.
Defined.

Remark rem_3240 : (forall X:term, auto___def_91 X -> auto___type_22 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_22 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_91_p__type_22. intros X1 X2. intros A1.
  case (rem_3239 epsilon_m__def_91_p__type_22 X1 A1). clear  epsilon_m__def_91_p__type_22 A1. intros. apply trans___type_22_nonceb_current_1;  tauto.
 clear  epsilon_m__def_91_p__type_22 A1. tauto.
Defined.

Remark rem_3241 : (forall X:term, auto___def_91 X -> auto___type_22 X)
    -> forall X1 X2:term, auto___def_91 (nonceb_current X1 X2) -> auto___type_22 (nonceb_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_91_p__type_22. intros X1 X2. intro H. intros.
  elim (rem_3000 X1 X2 H);  intros.
  apply (rem_3240 epsilon_m__def_91_p__type_22 X1 X2);  tauto.
Defined.

Remark rem_3242 : forall X1:term, auto___def_91 X1 -> auto___type_22 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_91_p__type_22 1.
  intro X. case X.
   intro H. elim (rem_3012  H).
   intro H. elim (rem_3004  H).
  intros X1 X2. intro H. elim (rem_3017 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3002 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3015 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3016 X1 X2 H).
   intro H. elim (rem_3021  H).
  intros X1 X2. intro H. elim (rem_3025 X1 X2 H).
   intro H. elim (rem_3022  H).
  intros X1 X2. intro H. elim (rem_3024 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3005 X1 X2 H).
  intros X1 X2;  exact (rem_3241 epsilon_m__def_91_p__type_22 X1 X2).
  intros X1 X2. intro H. elim (rem_3014 X1 X2 H).
  intros X1. intro H. elim (rem_3008 X1 H).
  intros X1 X2. intro H. elim (rem_3011 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3010 X1 X2 H).
   intro H. elim (rem_3013  H).
   intro H. elim (rem_3009  H).
  intros X1 X2. intro H. elim (rem_3007 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3006 X1 X2 H).
  intros X1. intro H. elim (rem_3018 X1 H).
   intro H. elim (rem_3023  H).
  intros X1 X2. intro H. elim (rem_3020 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3003 X1 X2 H).
   intro H. elim (rem_3019  H).
Qed.

Remark rem_3243 : forall X1 X2:term, auto___def_77 X2 -> auto___def_91 X1 -> auto___def_94 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_91 X1 -> auto___type_22 X1). tauto. exact (rem_3242 X1).
Qed.

Remark rem_3244 : forall X1 X2:term, auto___def_94 X2 -> auto___def_77 X2 -> auto___def_91 X1 -> auto___type_22 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_77 X2 -> auto___def_91 X1 -> auto___def_94 X2 -> auto___type_22 X1). tauto. exact (rem_3243 X1 X2).
Qed.

Remark rem_3245 : forall X1 X2:term, auto___def_103 X2 X1 -> auto___type_22 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_41 X2 X1 H);  intros.
  apply (rem_3244 X1 X2);  tauto.
Qed.

Remark rem_3246 : forall X1:term, auto___def_53 X1 -> auto___def_53 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3247 : forall X1 X2:term, auto___def_2 X2 -> auto___def_53 X1 -> auto___def_53 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_53 X1 -> auto___def_53 X1). tauto. exact (rem_3246 X1).
Qed.

Remark rem_3248 : forall X2:term, auto___def_2 X2 -> auto___def_2 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3249 : forall X1 X2:term, auto___def_2 X2 -> auto___def_53 X1 -> auto___def_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_2 X2 -> auto___def_2 X2). tauto. exact (rem_3248 X2).
Qed.

Remark rem_3250 : forall X1 X2:term, auto___def_2 X2 -> auto___def_53 X1 -> (auto___def_53 X1 /\ auto___def_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_53 X1). 2:apply (rem_3247 X1 X2);  assumption.
  cut (auto___def_2 X2). 2:apply (rem_3249 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3251 : forall X1 X2:term, auto___def_2 X2 -> auto___def_53 X1 -> auto___def_52 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3250 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_52_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3252 : (forall X:term, auto___def_24 X -> auto___type_6 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3253 : (forall X:term, auto___def_24 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_24_p__type_6. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_3252 epsilon_m__def_24_p__type_6 X1).
Defined.

Remark rem_3254 : (forall X:term, auto___def_24 X -> auto___type_6 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3255 : (forall X:term, auto___def_24 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_24_p__type_6. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_3254 epsilon_m__def_24_p__type_6 X2).
Defined.

Remark rem_3256 : (forall X:term, auto___def_24 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_24_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_3253 epsilon_m__def_24_p__type_6 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_3255 epsilon_m__def_24_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3257 : (forall X:term, auto___def_24 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_6 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_24_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_3256 epsilon_m__def_24_p__type_6 X1 X2 A1 A2). clear  epsilon_m__def_24_p__type_6 A1 A2. intros. apply trans___type_6_noncea_old_1;  tauto.
 clear  epsilon_m__def_24_p__type_6 A1 A2. tauto.
Defined.

Remark rem_3258 : (forall X:term, auto___def_24 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_24 (noncea_old X1 X2) -> auto___type_6 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_p__type_6. intros X1 X2. intro H. intros.
  elim (rem_2007 X1 X2 H);  intros.
  apply (rem_3257 epsilon_m__def_24_p__type_6 X1 X2);  tauto.
Defined.

Remark rem_3259 : forall X1:term, auto___def_24 X1 -> auto___type_6 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_24_p__type_6 1.
  intro X. case X.
   intro H. elim (rem_2019  H).
   intro H. elim (rem_2012  H).
  intros X1 X2. intro H. elim (rem_1937 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2009 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2022 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2023 X1 X2 H).
   intro H. elim (rem_2027  H).
  intros X1 X2. intro H. elim (rem_2031 X1 X2 H).
   intro H. elim (rem_2028  H).
  intros X1 X2. intro H. elim (rem_2030 X1 X2 H).
  intros X1 X2;  exact (rem_3258 epsilon_m__def_24_p__type_6 X1 X2).
  intros X1 X2. intro H. elim (rem_2010 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2021 X1 X2 H).
  intros X1. intro H. elim (rem_2015 X1 H).
  intros X1 X2. intro H. elim (rem_2018 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2017 X1 X2 H).
   intro H. elim (rem_2020  H).
   intro H. elim (rem_2016  H).
  intros X1 X2. intro H. elim (rem_2014 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2013 X1 X2 H).
  intros X1. intro H. elim (rem_2024 X1 H).
   intro H. elim (rem_2029  H).
  intros X1 X2. intro H. elim (rem_2026 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2011 X1 X2 H).
   intro H. elim (rem_2025  H).
Qed.

Remark rem_3260 : forall X1 X2:term, auto___def_24 X1 -> auto_knows_old X2 -> auto___type_6 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_24 X1 -> auto___type_6 X1). tauto. exact (rem_3259 X1).
Qed.

Remark rem_3261 : forall X1 X3:term, auto___def_24 X1 -> auto_knows_old X3 -> auto___type_6 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X1 -> auto_knows_old X2 -> auto___type_6 X1). tauto. exact (rem_3260 X1 X2).
Qed.

Remark rem_3262 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3263 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_3262 epsilon_m__type_5_p__type_6 X1).
Defined.

Remark rem_3264 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3265 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_3264 epsilon_m__type_5_p__type_6 X2).
Defined.

Remark rem_3266 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_3263 epsilon_m__type_5_p__type_6 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_3265 epsilon_m__type_5_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3267 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_6 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_3266 epsilon_m__type_5_p__type_6 X1 X2 A1 A2). clear  epsilon_m__type_5_p__type_6 A1 A2. intros. apply trans___type_6_noncea_old_1;  tauto.
 clear  epsilon_m__type_5_p__type_6 A1 A2. tauto.
Defined.

Remark rem_3268 : forall X1 X2:term, auto___type_5 (noncea_old X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3269 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_5 (noncea_old X1 X2) -> auto___type_6 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2. intro H. intros.
  elim (rem_3268 X1 X2 H);  intros.
  apply (rem_3267 epsilon_m__type_5_p__type_6 X1 X2);  tauto.
Defined.

Remark rem_3270 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3271 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_3270 epsilon_m__type_5_p__type_6 X1);  assumption.
  tauto.
Defined.

Remark rem_3272 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_6 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2. intros A1.
  case (rem_3271 epsilon_m__type_5_p__type_6 X1 A1). clear  epsilon_m__type_5_p__type_6 A1. intros. apply trans___type_6_nonceb_old_1;  tauto.
 clear  epsilon_m__type_5_p__type_6 A1. tauto.
Defined.

Remark rem_3273 : forall X1 X2:term, auto___type_5 (nonceb_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3274 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_5 (nonceb_old X1 X2) -> auto___type_6 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2. intro H. intros.
  elim (rem_3273 X1 X2 H);  intros.
  apply (rem_3272 epsilon_m__type_5_p__type_6 X1 X2);  tauto.
Defined.

Remark rem_3275 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1:term, auto___type_6 X1 -> auto___type_6 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3276 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___type_6 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2.
  cut (auto___type_6 X1 -> auto___type_6 X1). tauto. exact (rem_3275 epsilon_m__type_5_p__type_6 X1).
Defined.

Remark rem_3277 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X2:term, auto___def_38 X2 -> auto___def_38 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3278 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___def_38 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2.
  cut (auto___def_38 X2 -> auto___def_38 X2). tauto. exact (rem_3277 epsilon_m__type_5_p__type_6 X2).
Defined.

Remark rem_3279 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> (auto___type_6 X1 /\ auto___def_38 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto___type_6 X1). 2:apply (rem_3276 epsilon_m__type_5_p__type_6 X1 X2);  assumption.
  cut (auto___def_38 X2). 2:apply (rem_3278 epsilon_m__type_5_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3280 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto___type_6 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_3279 epsilon_m__type_5_p__type_6 X1 X2 A1 A2). clear  epsilon_m__type_5_p__type_6 A1 A2. intros. apply trans___type_6_cons_1;  tauto.
 clear  epsilon_m__type_5_p__type_6 A1 A2. tauto.
Defined.

Remark rem_3281 : forall X1 X2:term, auto___type_5 (cons X1 X2) -> or_1
    (auto___type_6 X1 /\ auto___def_38 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3282 : (forall X:term, auto___type_5 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_5 (cons X1 X2) -> auto___type_6 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_6. intros X1 X2. intro H. intros.
  elim (rem_3281 X1 X2 H);  intros.
  apply (rem_3280 epsilon_m__type_5_p__type_6 X1 X2);  tauto.
Defined.

Remark rem_3283 : forall X1 X2:term, auto___type_5 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3284 : forall X1 X2:term, auto___type_5 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3285 : forall X1 X2:term, auto___type_5 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3286 : auto___type_5 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3287 : forall X1 X2:term, auto___type_5 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3288 : forall X1 X2:term, auto___type_5 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3289 : forall X1:term, auto___type_5 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3290 : auto___type_5 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3291 : forall X1 X2:term, auto___type_5 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3292 : forall X1 X2:term, auto___type_5 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3293 : auto___type_5 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3294 : auto___type_5 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3295 : forall X1 X2:term, auto___type_5 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3296 : forall X1 X2:term, auto___type_5 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3297 : forall X1:term, auto___type_5 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3298 : auto___type_5 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3299 : forall X1 X2:term, auto___type_5 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3300 : auto___type_5 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3301 : auto___type_5 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3302 : auto___type_5 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3303 : forall X1 X2:term, auto___type_5 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3304 : forall X1 X2:term, auto___type_5 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3305 : forall X1:term, auto___type_5 X1 -> auto___type_6 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_5_p__type_6 1.
  intro X. case X.
   intro H. elim (rem_3293  H).
   intro H. elim (rem_3286  H).
  intros X1 X2;  exact (rem_3282 epsilon_m__type_5_p__type_6 X1 X2).
  intros X1 X2. intro H. elim (rem_3283 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3295 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3296 X1 X2 H).
   intro H. elim (rem_3300  H).
  intros X1 X2. intro H. elim (rem_3304 X1 X2 H).
   intro H. elim (rem_3301  H).
  intros X1 X2. intro H. elim (rem_3303 X1 X2 H).
  intros X1 X2;  exact (rem_3269 epsilon_m__type_5_p__type_6 X1 X2).
  intros X1 X2. intro H. elim (rem_3284 X1 X2 H).
  intros X1 X2;  exact (rem_3274 epsilon_m__type_5_p__type_6 X1 X2).
  intros X1. intro H. elim (rem_3289 X1 H).
  intros X1 X2. intro H. elim (rem_3292 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3291 X1 X2 H).
   intro H. elim (rem_3294  H).
   intro H. elim (rem_3290  H).
  intros X1 X2. intro H. elim (rem_3288 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3287 X1 X2 H).
  intros X1. intro H. elim (rem_3297 X1 H).
   intro H. elim (rem_3302  H).
  intros X1 X2. intro H. elim (rem_3299 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3285 X1 X2 H).
   intro H. elim (rem_3298  H).
Qed.

Remark rem_3306 : (forall X:term, auto___def_28 X -> auto___type_6 X)
    -> forall X1:term, auto___type_5 X1 -> auto___type_6 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_28_p__type_6. exact (rem_3305).
Defined.

Remark rem_3307 : (forall X:term, auto___def_28 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> auto___type_6 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_28_p__type_6. intros X1 X2.
  cut (auto___type_5 X1 -> auto___type_6 X1). tauto. exact (rem_3306 epsilon_m__def_28_p__type_6 X1).
Defined.

Remark rem_3308 : (forall X:term, auto___def_31 X -> auto___def_39 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3309 : (forall X:term, auto___def_31 X -> auto___def_39 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_31_p__def_39. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_3308 epsilon_m__def_31_p__def_39 X1);  assumption.
  tauto.
Defined.

Remark rem_3310 : (forall X:term, auto___def_31 X -> auto___def_39 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___def_39 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_31_p__def_39. intros X1 X2. intros A1.
  case (rem_3309 epsilon_m__def_31_p__def_39 X1 A1). clear  epsilon_m__def_31_p__def_39 A1. intros. apply trans___def_39_nonceb_old_1;  tauto.
 clear  epsilon_m__def_31_p__def_39 A1. tauto.
Defined.

Remark rem_3311 : forall X1 X2:term, auto___def_31 (nonceb_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3312 : (forall X:term, auto___def_31 X -> auto___def_39 X)
    -> forall X1 X2:term, auto___def_31 (nonceb_old X1 X2) -> auto___def_39 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_31_p__def_39. intros X1 X2. intro H. intros.
  elim (rem_3311 X1 X2 H);  intros.
  apply (rem_3310 epsilon_m__def_31_p__def_39 X1 X2);  tauto.
Defined.

Remark rem_3313 : forall X1 X2:term, auto___def_31 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3314 : forall X1 X2:term, auto___def_31 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3315 : forall X1 X2:term, auto___def_31 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3316 : auto___def_31 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3317 : forall X1 X2:term, auto___def_31 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3318 : forall X1 X2:term, auto___def_31 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3319 : forall X1 X2:term, auto___def_31 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3320 : forall X1:term, auto___def_31 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3321 : auto___def_31 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3322 : forall X1 X2:term, auto___def_31 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3323 : forall X1 X2:term, auto___def_31 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3324 : auto___def_31 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3325 : auto___def_31 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3326 : forall X1 X2:term, auto___def_31 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3327 : forall X1 X2:term, auto___def_31 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3328 : forall X1 X2:term, auto___def_31 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3329 : forall X1:term, auto___def_31 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3330 : auto___def_31 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3331 : forall X1 X2:term, auto___def_31 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3332 : auto___def_31 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3333 : auto___def_31 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3334 : auto___def_31 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3335 : forall X1 X2:term, auto___def_31 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3336 : forall X1 X2:term, auto___def_31 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3337 : forall X1:term, auto___def_31 X1 -> auto___def_39 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_31_p__def_39 1.
  intro X. case X.
   intro H. elim (rem_3324  H).
   intro H. elim (rem_3316  H).
  intros X1 X2. intro H. elim (rem_3328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3313 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3326 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3327 X1 X2 H).
   intro H. elim (rem_3332  H).
  intros X1 X2. intro H. elim (rem_3336 X1 X2 H).
   intro H. elim (rem_3333  H).
  intros X1 X2. intro H. elim (rem_3335 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3317 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3314 X1 X2 H).
  intros X1 X2;  exact (rem_3312 epsilon_m__def_31_p__def_39 X1 X2).
  intros X1. intro H. elim (rem_3320 X1 H).
  intros X1 X2. intro H. elim (rem_3323 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3322 X1 X2 H).
   intro H. elim (rem_3325  H).
   intro H. elim (rem_3321  H).
  intros X1 X2. intro H. elim (rem_3319 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3318 X1 X2 H).
  intros X1. intro H. elim (rem_3329 X1 H).
   intro H. elim (rem_3334  H).
  intros X1 X2. intro H. elim (rem_3331 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3315 X1 X2 H).
   intro H. elim (rem_3330  H).
Qed.

Remark rem_3338 : (forall X:term, auto___def_30 X -> auto___def_38 X)
    -> forall X1:term, auto___def_31 X1 -> auto___def_39 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_30_p__def_38. exact (rem_3337).
Defined.

Remark rem_3339 : (forall X:term, auto___def_30 X -> auto___def_38 X)
    -> forall X1 X2:term, auto___def_31 X1 -> auto___def_32 X2 -> auto___def_39 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_30_p__def_38. intros X1 X2.
  cut (auto___def_31 X1 -> auto___def_39 X1). tauto. exact (rem_3338 epsilon_m__def_30_p__def_38 X1).
Defined.

Remark rem_3340 : (forall X:term, auto___def_32 X -> auto___def_40 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_32_p__def_40.  tauto.
Defined.

Remark rem_3341 : (forall X:term, auto___def_32 X -> auto___def_40 X)
    -> auto___def_40 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_32_p__def_40.  case (rem_3340 epsilon_m__def_32_p__def_40). clear  epsilon_m__def_32_p__def_40. intros. apply trans___def_40_nil_1;  tauto.
 clear  epsilon_m__def_32_p__def_40. tauto.
Defined.

Remark rem_3342 : auto___def_32 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3343 : (forall X:term, auto___def_32 X -> auto___def_40 X)
    -> auto___def_32 nil -> auto___def_40 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_32_p__def_40. intro H. intros.
  elim (rem_3342 H);  intros.
  apply (rem_3341 epsilon_m__def_32_p__def_40);  tauto.
Defined.

Remark rem_3344 : forall X1 X2:term, auto___def_32 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3345 : forall X1 X2:term, auto___def_32 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3346 : forall X1 X2:term, auto___def_32 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3347 : auto___def_32 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3348 : forall X1 X2:term, auto___def_32 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3349 : forall X1 X2:term, auto___def_32 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3350 : forall X1 X2:term, auto___def_32 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3351 : forall X1:term, auto___def_32 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3352 : auto___def_32 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3353 : forall X1 X2:term, auto___def_32 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3354 : forall X1 X2:term, auto___def_32 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3355 : auto___def_32 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3356 : auto___def_32 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3357 : forall X1 X2:term, auto___def_32 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3358 : forall X1 X2:term, auto___def_32 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3359 : forall X1 X2:term, auto___def_32 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3360 : forall X1 X2:term, auto___def_32 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3361 : forall X1:term, auto___def_32 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3362 : auto___def_32 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3363 : forall X1 X2:term, auto___def_32 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3364 : auto___def_32 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3365 : auto___def_32 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3366 : forall X1 X2:term, auto___def_32 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3367 : forall X1 X2:term, auto___def_32 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3368 : forall X2:term, auto___def_32 X2 -> auto___def_40 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_32_p__def_40 1.
  intro X. case X.
   intro H. elim (rem_3355  H).
   intro H. elim (rem_3347  H).
  intros X1 X2. intro H. elim (rem_3360 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3344 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3358 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3359 X1 X2 H).
   intro H. elim (rem_3364  H).
  intros X1 X2. intro H. elim (rem_3367 X1 X2 H).
  exact (rem_3343 epsilon_m__def_32_p__def_40 ).
  intros X1 X2. intro H. elim (rem_3366 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3348 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3345 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3357 X1 X2 H).
  intros X1. intro H. elim (rem_3351 X1 H).
  intros X1 X2. intro H. elim (rem_3354 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3353 X1 X2 H).
   intro H. elim (rem_3356  H).
   intro H. elim (rem_3352  H).
  intros X1 X2. intro H. elim (rem_3350 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3349 X1 X2 H).
  intros X1. intro H. elim (rem_3361 X1 H).
   intro H. elim (rem_3365  H).
  intros X1 X2. intro H. elim (rem_3363 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3346 X1 X2 H).
   intro H. elim (rem_3362  H).
Qed.

Remark rem_3369 : (forall X:term, auto___def_30 X -> auto___def_38 X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_40 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_30_p__def_38. exact (rem_3368).
Defined.

Remark rem_3370 : (forall X:term, auto___def_30 X -> auto___def_38 X)
    -> forall X1 X2:term, auto___def_31 X1 -> auto___def_32 X2 -> auto___def_40 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_30_p__def_38. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_40 X2). tauto. exact (rem_3369 epsilon_m__def_30_p__def_38 X2).
Defined.

Remark rem_3371 : (forall X:term, auto___def_30 X -> auto___def_38 X)
    -> forall X1 X2:term, auto___def_31 X1 -> auto___def_32 X2 -> (auto___def_39 X1 /\ auto___def_40 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_30_p__def_38. intros X1 X2. intros A1 A2.
  cut (auto___def_39 X1). 2:apply (rem_3339 epsilon_m__def_30_p__def_38 X1 X2);  assumption.
  cut (auto___def_40 X2). 2:apply (rem_3370 epsilon_m__def_30_p__def_38 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3372 : (forall X:term, auto___def_30 X -> auto___def_38 X)
    -> forall X1 X2:term, auto___def_31 X1 -> auto___def_32 X2 -> auto___def_38 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_30_p__def_38. intros X1 X2. intros A1 A2.
  case (rem_3371 epsilon_m__def_30_p__def_38 X1 X2 A1 A2). clear  epsilon_m__def_30_p__def_38 A1 A2. intros. apply trans___def_38_cons_1;  tauto.
 clear  epsilon_m__def_30_p__def_38 A1 A2. tauto.
Defined.

Remark rem_3373 : forall X1 X2:term, auto___def_30 (cons X1 X2) -> or_1
    (auto___def_31 X1 /\ auto___def_32 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3374 : (forall X:term, auto___def_30 X -> auto___def_38 X)
    -> forall X1 X2:term, auto___def_30 (cons X1 X2) -> auto___def_38 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_30_p__def_38. intros X1 X2. intro H. intros.
  elim (rem_3373 X1 X2 H);  intros.
  apply (rem_3372 epsilon_m__def_30_p__def_38 X1 X2);  tauto.
Defined.

Remark rem_3375 : forall X1 X2:term, auto___def_30 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3376 : forall X1 X2:term, auto___def_30 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3377 : forall X1 X2:term, auto___def_30 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3378 : auto___def_30 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3379 : forall X1 X2:term, auto___def_30 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3380 : forall X1 X2:term, auto___def_30 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3381 : forall X1 X2:term, auto___def_30 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3382 : forall X1:term, auto___def_30 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3383 : auto___def_30 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3384 : forall X1 X2:term, auto___def_30 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3385 : forall X1 X2:term, auto___def_30 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3386 : auto___def_30 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3387 : auto___def_30 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3388 : forall X1 X2:term, auto___def_30 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3389 : forall X1 X2:term, auto___def_30 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3390 : forall X1 X2:term, auto___def_30 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3391 : forall X1:term, auto___def_30 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3392 : auto___def_30 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3393 : forall X1 X2:term, auto___def_30 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3394 : auto___def_30 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3395 : auto___def_30 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3396 : auto___def_30 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3397 : forall X1 X2:term, auto___def_30 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3398 : forall X1 X2:term, auto___def_30 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3399 : forall X2:term, auto___def_30 X2 -> auto___def_38 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_30_p__def_38 1.
  intro X. case X.
   intro H. elim (rem_3386  H).
   intro H. elim (rem_3378  H).
  intros X1 X2;  exact (rem_3374 epsilon_m__def_30_p__def_38 X1 X2).
  intros X1 X2. intro H. elim (rem_3375 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3389 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3390 X1 X2 H).
   intro H. elim (rem_3394  H).
  intros X1 X2. intro H. elim (rem_3398 X1 X2 H).
   intro H. elim (rem_3395  H).
  intros X1 X2. intro H. elim (rem_3397 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3379 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3376 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3388 X1 X2 H).
  intros X1. intro H. elim (rem_3382 X1 H).
  intros X1 X2. intro H. elim (rem_3385 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3384 X1 X2 H).
   intro H. elim (rem_3387  H).
   intro H. elim (rem_3383  H).
  intros X1 X2. intro H. elim (rem_3381 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3380 X1 X2 H).
  intros X1. intro H. elim (rem_3391 X1 H).
   intro H. elim (rem_3396  H).
  intros X1 X2. intro H. elim (rem_3393 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3377 X1 X2 H).
   intro H. elim (rem_3392  H).
Qed.

Remark rem_3400 : (forall X:term, auto___def_28 X -> auto___type_6 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_38 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_28_p__type_6. exact (rem_3399).
Defined.

Remark rem_3401 : (forall X:term, auto___def_28 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> auto___def_38 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_28_p__type_6. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_38 X2). tauto. exact (rem_3400 epsilon_m__def_28_p__type_6 X2).
Defined.

Remark rem_3402 : (forall X:term, auto___def_28 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> (auto___type_6 X1 /\ auto___def_38 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_28_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto___type_6 X1). 2:apply (rem_3307 epsilon_m__def_28_p__type_6 X1 X2);  assumption.
  cut (auto___def_38 X2). 2:apply (rem_3401 epsilon_m__def_28_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3403 : (forall X:term, auto___def_28 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> auto___type_6 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_28_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_3402 epsilon_m__def_28_p__type_6 X1 X2 A1 A2). clear  epsilon_m__def_28_p__type_6 A1 A2. intros. apply trans___type_6_cons_1;  tauto.
 clear  epsilon_m__def_28_p__type_6 A1 A2. tauto.
Defined.

Remark rem_3404 : forall X1 X2:term, auto___def_28 (cons X1 X2) -> or_1
    (auto___type_5 X1 /\ auto___def_30 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3405 : (forall X:term, auto___def_28 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_28 (cons X1 X2) -> auto___type_6 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_28_p__type_6. intros X1 X2. intro H. intros.
  elim (rem_3404 X1 X2 H);  intros.
  apply (rem_3403 epsilon_m__def_28_p__type_6 X1 X2);  tauto.
Defined.

Remark rem_3406 : forall X1 X2:term, auto___def_28 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3407 : forall X1 X2:term, auto___def_28 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3408 : forall X1 X2:term, auto___def_28 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3409 : auto___def_28 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3410 : forall X1 X2:term, auto___def_28 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3411 : forall X1 X2:term, auto___def_28 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3412 : forall X1 X2:term, auto___def_28 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3413 : forall X1:term, auto___def_28 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3414 : auto___def_28 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3415 : forall X1 X2:term, auto___def_28 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3416 : forall X1 X2:term, auto___def_28 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3417 : auto___def_28 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3418 : auto___def_28 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3419 : forall X1 X2:term, auto___def_28 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3420 : forall X1 X2:term, auto___def_28 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3421 : forall X1 X2:term, auto___def_28 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3422 : forall X1:term, auto___def_28 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3423 : auto___def_28 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3424 : forall X1 X2:term, auto___def_28 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3425 : auto___def_28 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3426 : auto___def_28 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3427 : auto___def_28 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3428 : forall X1 X2:term, auto___def_28 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3429 : forall X1 X2:term, auto___def_28 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3430 : forall X1:term, auto___def_28 X1 -> auto___type_6 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_28_p__type_6 1.
  intro X. case X.
   intro H. elim (rem_3417  H).
   intro H. elim (rem_3409  H).
  intros X1 X2;  exact (rem_3405 epsilon_m__def_28_p__type_6 X1 X2).
  intros X1 X2. intro H. elim (rem_3406 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3420 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3421 X1 X2 H).
   intro H. elim (rem_3425  H).
  intros X1 X2. intro H. elim (rem_3429 X1 X2 H).
   intro H. elim (rem_3426  H).
  intros X1 X2. intro H. elim (rem_3428 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3410 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3407 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3419 X1 X2 H).
  intros X1. intro H. elim (rem_3413 X1 H).
  intros X1 X2. intro H. elim (rem_3416 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3415 X1 X2 H).
   intro H. elim (rem_3418  H).
   intro H. elim (rem_3414  H).
  intros X1 X2. intro H. elim (rem_3412 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3411 X1 X2 H).
  intros X1. intro H. elim (rem_3422 X1 H).
   intro H. elim (rem_3427  H).
  intros X1 X2. intro H. elim (rem_3424 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3408 X1 X2 H).
   intro H. elim (rem_3423  H).
Qed.

Remark rem_3431 : forall X1 X2:term, auto___def_28 X1 -> auto_knows_old X2 -> auto___type_6 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_28 X1 -> auto___type_6 X1). tauto. exact (rem_3430 X1).
Qed.

Remark rem_3432 : forall X1 X3:term, auto___def_28 X1 -> auto_knows_old X3 -> auto___type_6 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_28 X1 -> auto_knows_old X2 -> auto___type_6 X1). tauto. exact (rem_3431 X1 X2).
Qed.

Remark rem_3433 : (forall X:term, auto___type_7 X -> auto___type_6 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3434 : (forall X:term, auto___type_7 X -> auto___type_6 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_6. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_3433 epsilon_m__type_7_p__type_6 X1);  assumption.
  tauto.
Defined.

Remark rem_3435 : (forall X:term, auto___type_7 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_6 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_6. intros X1 X2. intros A1.
  case (rem_3434 epsilon_m__type_7_p__type_6 X1 A1). clear  epsilon_m__type_7_p__type_6 A1. intros. apply trans___type_6_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_6 A1. tauto.
Defined.

Remark rem_3436 : (forall X:term, auto___type_7 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> auto___type_6 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_6. intros X1 X2. intro H. intros.
  elim (rem_2043 X1 X2 H);  intros.
  apply (rem_3435 epsilon_m__type_7_p__type_6 X1 X2);  tauto.
Defined.

Remark rem_3437 : forall X1:term, auto___type_7 X1 -> auto___type_6 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_7_p__type_6 1.
  intro X. case X.
   intro H. elim (rem_2056  H).
   intro H. elim (rem_2048  H).
  intros X1 X2. intro H. elim (rem_1939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2058 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2059 X1 X2 H).
   intro H. elim (rem_2063  H).
  intros X1 X2. intro H. elim (rem_2067 X1 X2 H).
   intro H. elim (rem_2064  H).
  intros X1 X2. intro H. elim (rem_2066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2046 X1 X2 H).
  intros X1 X2;  exact (rem_3436 epsilon_m__type_7_p__type_6 X1 X2).
  intros X1. intro H. elim (rem_2052 X1 H).
  intros X1 X2. intro H. elim (rem_2055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2054 X1 X2 H).
   intro H. elim (rem_2057  H).
   intro H. elim (rem_2053  H).
  intros X1 X2. intro H. elim (rem_2051 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2050 X1 X2 H).
  intros X1. intro H. elim (rem_2060 X1 H).
   intro H. elim (rem_2065  H).
  intros X1 X2. intro H. elim (rem_2062 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2047 X1 X2 H).
   intro H. elim (rem_2061  H).
Qed.

Remark rem_3438 : forall X1 X2:term, auto___type_7 X1 -> auto_knows_old X2 -> auto___type_6 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_6 X1). tauto. exact (rem_3437 X1).
Qed.

Remark rem_3439 : forall X1 X3:term, auto___type_7 X1 -> auto_knows_old X3 -> auto___type_6 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___type_7 X1 -> auto_knows_old X2 -> auto___type_6 X1). tauto. exact (rem_3438 X1 X2).
Qed.

Remark rem_3440 : forall X1 X2 X3:term, auto___def_35 X2 X1 X3 -> auto___type_6 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_2522 X2 X1 X3 H);  intros.
  apply (rem_3261 X1 X3);  tauto.
  apply (rem_3432 X1 X3);  tauto.
  apply (rem_3439 X1 X3);  tauto.
Qed.

Remark rem_3441 : forall X1 X2 X3:term, auto___def_71 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X3 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_923 X1).
Qed.

Remark rem_3442 : forall X2:term, auto___def_71 X2 -> auto___def_71 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3443 : forall X1 X2 X3:term, auto___def_71 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X3 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_3442 X2).
Qed.

Remark rem_3444 : forall X1 X2 X3:term, auto___def_71 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X3 -> auto_agent X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X3 -> auto_agent X3). tauto. exact (rem_1269 X3).
Qed.

Remark rem_3445 : forall X1 X2 X3:term, auto___def_71 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X3 -> (auto_agent X1 /\ auto___def_71 X2 /\ auto_agent X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto_agent X1). 2:apply (rem_3441 X1 X2 X3);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3443 X1 X2 X3);  assumption.
  cut (auto_agent X3). 2:apply (rem_3444 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3446 : forall X1 X2 X3:term, auto___def_71 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3445 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_74_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3447 : forall X1 X2 X3:term, auto_agent X3 -> auto_agent X1 -> auto___def_71 X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_71 X2 -> auto_agent X3 -> auto_agent X1 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3). tauto. exact (rem_3446 X1 X2 X3).
Qed.

Remark rem_3448 : forall X1 X2 X3:term, auto___def_71 X2 -> auto___def_72 (passwd_current X3 X1) -> auto_knows_current X3 -> auto___def_74 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2917 X3 X1 H);  intros.
  apply (rem_3447 X1 X2 X3);  tauto.
Qed.

Remark rem_3449 : forall X1 X2 X3:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_74 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1073 X3 X1 H);  intros.
Qed.

Remark rem_3450 : forall X1 X2 X3:term, auto_knows_current X2 -> auto_knows_current (passwd_current X3 X1) -> auto_knows_current X3 -> auto___def_74 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (passwd_current X3 X1) -> auto___def_74 X1 X2 X3). tauto. exact (rem_3449 X1 X2 X3).
Qed.

Remark rem_3451 : forall X2:term, auto___def_79 X2 -> auto___def_79 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3452 : forall X1 X2 X3:term, auto___def_79 X2 -> auto___def_80 (passwd_current X3 X1) -> auto_knows_current X3 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_3451 X2).
Qed.

Remark rem_3453 : forall X1 X2 X3:term, auto___def_79 X2 -> auto___def_80 (passwd_current X3 X1) -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_2947 X3).
Qed.

Remark rem_3454 : forall X1 X2 X3:term, auto___def_79 X2 -> auto___def_80 (passwd_current X3 X1) -> auto_knows_current X3 -> (auto___def_79 X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto___def_79 X2). 2:apply (rem_3452 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_3453 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3455 : forall X1 X2 X3:term, auto___def_79 X2 -> auto___def_80 (passwd_current X3 X1) -> auto_knows_current X3 -> auto___def_74 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3454 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_74_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3456 : forall X2:term, auto___def_75 X2 -> auto___def_75 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3457 : forall X1 X2 X3:term, auto___def_75 X2 -> auto___def_76 (passwd_current X3 X1) -> auto_knows_current X3 -> auto___def_75 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_75 X2 -> auto___def_75 X2). tauto. exact (rem_3456 X2).
Qed.

Remark rem_3458 : forall X1 X2 X3:term, auto___def_75 X2 -> auto___def_76 (passwd_current X3 X1) -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_2947 X3).
Qed.

Remark rem_3459 : forall X1 X2 X3:term, auto___def_75 X2 -> auto___def_76 (passwd_current X3 X1) -> auto_knows_current X3 -> (auto___def_75 X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto___def_75 X2). 2:apply (rem_3457 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_3458 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3460 : forall X1 X2 X3:term, auto___def_75 X2 -> auto___def_76 (passwd_current X3 X1) -> auto_knows_current X3 -> auto___def_74 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3459 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_74_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3461 : forall X1 X2 X3:term, auto_knows_current X3 -> auto_knows_current (enc X2 (passwd_current X3 X1)) -> auto___def_74 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1031 X2 (passwd_current X3 X1) H);  intros.
  apply (rem_3448 X1 X2 X3);  tauto.
  apply (rem_3450 X1 X2 X3);  tauto.
  apply (rem_3455 X1 X2 X3);  tauto.
  apply (rem_3460 X1 X2 X3);  tauto.
Qed.

Remark rem_3462 : forall X1 X2 X3:term, auto_knows_current X3 -> auto_knows_current (enc X2 (passwd_current X3 X1)) -> auto_knows_current nil -> auto___def_74 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current (enc X2 (passwd_current X3 X1)) -> auto___def_74 X1 X2 X3). tauto.
  exact (rem_3461 X1 X2 X3).
Qed.

Remark rem_3463 : forall X1 X2 X3:term, auto_knows_current (enc X2 (passwd_current X3 X1)) -> auto_knows_current nil -> auto_knows_current X3 -> auto___def_74 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current (enc X2 (passwd_current X3 X1)) -> auto_knows_current nil -> auto___def_74 X1 X2 X3). tauto. exact (rem_3462 X1 X2 X3).
Qed.

Remark rem_3464 : forall X1 X2 X3:term, auto_knows_current X3 -> auto_knows_current (cons (enc X2 (passwd_current X3 X1)) nil) -> auto___def_74 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1034 (enc X2 (passwd_current X3 X1)) nil H);  intros.
  apply (rem_3463 X1 X2 X3);  tauto.
Qed.

Remark rem_3465 : forall X1 X2 X3:term, auto_knows_current (cons X3 (cons (enc X2 (passwd_current X3 X1)) nil)) -> auto___def_74 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1034 X3 (cons (enc X2 (passwd_current X3 X1)) nil) H);  intros.
  apply (rem_3464 X1 X2 X3);  tauto.
Qed.

Remark rem_3466 : forall X1 X2 X3:term, auto___def_24 X3 -> auto_knows_old X1 -> auto___def_31 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_278 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_31_nonceb_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3467 : forall X1 X2 X3:term, auto___def_28 X3 -> auto_knows_old X1 -> auto___def_31 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_281 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_31_nonceb_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3468 : forall X1 X2 X3:term, auto___type_7 X3 -> auto_knows_old X1 -> auto___def_31 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_284 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_31_nonceb_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3469 : forall X1 X2 X3:term, auto___def_27 X2 X3 X1 -> auto___def_31 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_286 X2 X3 X1 H);  intros.
  apply (rem_3466 X1 X2 X3);  tauto.
  apply (rem_3467 X1 X2 X3);  tauto.
  apply (rem_3468 X1 X2 X3);  tauto.
Qed.

Remark rem_3470 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto___def_17 X2 -> auto___def_67 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_12 sym -> False). tauto.
  exact (rem_1316).
Qed.

Remark rem_3471 : forall X1 X2:term, auto___def_17 X2 -> auto___type_2 (key sym X1) -> auto___def_67 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1399 sym X1 H);  intros.
  apply (rem_3470 X1 X2);  tauto.
Qed.

Remark rem_3472 : forall X1 X2:term, auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 X1 -> auto___def_67 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1886 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_67_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3473 : forall X1 X2:term, auto___def_41 sym -> auto___def_42 X1 -> auto___def_36 X2 -> auto___def_67 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 X1 -> auto___def_67 X1 X2). tauto. exact (rem_3472 X1 X2).
Qed.

Remark rem_3474 : forall X1 X2:term, auto___def_36 X2 -> auto___def_37 (key sym X1) -> auto___def_67 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1405 sym X1 H);  intros.
  apply (rem_3473 X1 X2);  tauto.
Qed.

Remark rem_3475 : forall X1 X2:term, auto___def_21 X2 -> auto___def_22 (key sym X1) -> auto___def_67 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1407 sym X1 H);  intros.
Qed.

Remark rem_3476 : forall X1 X2:term, auto___def_61 sym -> auto___def_62 X1 -> auto_knows_current X2 -> auto___def_67 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_61 sym -> False). tauto.
  exact (rem_1310).
Qed.

Remark rem_3477 : forall X1 X2:term, auto___def_51 sym -> auto_agent X1 -> auto_knows_current X2 -> auto___def_67 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_1313).
Qed.

Remark rem_3478 : forall X1 X2:term, auto___def_12 sym -> auto___def_13 X1 -> auto_knows_current X2 -> auto___def_67 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_12 sym -> False). tauto.
  exact (rem_1316).
Qed.

Remark rem_3479 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current (key sym X1) -> auto___def_67 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1066 sym X1 H);  intros.
  apply (rem_3476 X1 X2);  tauto.
  apply (rem_3477 X1 X2);  tauto.
  apply (rem_3478 X1 X2);  tauto.
Qed.

Remark rem_3480 : forall X1:term, auto___type_23 X1 -> auto___type_23 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3481 : forall X1 X2:term, auto___def_105 sym -> auto___type_22 X2 -> auto___type_23 X1 -> auto___type_23 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_23 X1 -> auto___type_23 X1). tauto. exact (rem_3480 X1).
Qed.

Remark rem_3482 : forall X1 X2:term, auto___def_105 sym -> auto___type_22 X2 -> auto___type_23 X1 -> auto___type_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_22 X2 -> auto___type_22 X2). tauto. exact (rem_2945 X2).
Qed.

Remark rem_3483 : forall X1 X2:term, auto___def_105 sym -> auto___type_22 X2 -> auto___type_23 X1 -> (auto___type_23 X1 /\ auto___type_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___type_23 X1). 2:apply (rem_3481 X1 X2);  assumption.
  cut (auto___type_22 X2). 2:apply (rem_3482 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3484 : forall X1 X2:term, auto___def_105 sym -> auto___type_22 X2 -> auto___type_23 X1 -> auto___def_67 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_3483 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_67_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3485 : forall X1 X2:term, auto___def_105 sym -> auto___type_23 X1 -> auto___type_22 X2 -> auto___def_67 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_105 sym -> auto___type_22 X2 -> auto___type_23 X1 -> auto___def_67 X1 X2). tauto. exact (rem_3484 X1 X2).
Qed.

Remark rem_3486 : forall X1 X2:term, auto___def_104 (key sym X1) -> auto___type_22 X2 -> auto___def_67 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1431 sym X1 H);  intros.
  apply (rem_3485 X1 X2);  tauto.
Qed.

Remark rem_3487 : forall X1 X2:term, auto___type_22 X2 -> auto___def_104 (key sym X1) -> auto___def_67 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_104 (key sym X1) -> auto___type_22 X2 -> auto___def_67 X1 X2). tauto. exact (rem_3486 X1 X2).
Qed.

Remark rem_3488 : (forall X:term, auto___def_94 X -> auto___def_102 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3489 : (forall X:term, auto___def_94 X -> auto___def_102 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_94_p__def_102. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3488 epsilon_m__def_94_p__def_102 X1);  assumption.
  tauto.
Defined.

Remark rem_3490 : (forall X:term, auto___def_94 X -> auto___def_102 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_102 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_94_p__def_102. intros X1 X2. intros A1.
  case (rem_3489 epsilon_m__def_94_p__def_102 X1 A1). clear  epsilon_m__def_94_p__def_102 A1. intros. apply trans___def_102_r_current_1;  tauto.
 clear  epsilon_m__def_94_p__def_102 A1. tauto.
Defined.

Remark rem_3491 : (forall X:term, auto___def_94 X -> auto___def_102 X)
    -> forall X1 X2:term, auto___def_94 (r_current X1 X2) -> auto___def_102 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_94_p__def_102. intros X1 X2. intro H. intros.
  elim (rem_2793 X1 X2 H);  intros.
  apply (rem_3490 epsilon_m__def_94_p__def_102 X1 X2);  tauto.
Defined.

Remark rem_3492 : forall X1:term, auto___def_94 X1 -> auto___def_102 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_94_p__def_102 1.
  intro X. case X.
   intro H. elim (rem_2805  H).
   intro H. elim (rem_2798  H).
  intros X1 X2. intro H. elim (rem_2810 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2795 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2808 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2809 X1 X2 H).
   intro H. elim (rem_2814  H).
  intros X1 X2. intro H. elim (rem_2818 X1 X2 H).
   intro H. elim (rem_2815  H).
  intros X1 X2. intro H. elim (rem_2817 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2799 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2796 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2807 X1 X2 H).
  intros X1. intro H. elim (rem_2801 X1 H).
  intros X1 X2. intro H. elim (rem_2804 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2803 X1 X2 H).
   intro H. elim (rem_2806  H).
   intro H. elim (rem_2802  H).
  intros X1 X2;  exact (rem_3491 epsilon_m__def_94_p__def_102 X1 X2).
  intros X1 X2. intro H. elim (rem_2800 X1 X2 H).
  intros X1. intro H. elim (rem_2811 X1 H).
   intro H. elim (rem_2816  H).
  intros X1 X2. intro H. elim (rem_2813 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2797 X1 X2 H).
   intro H. elim (rem_2812  H).
Qed.

Remark rem_3493 : forall X1 X2:term, auto___def_88 X2 -> auto___def_93 sym -> auto___def_94 X1 -> auto___def_102 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_94 X1 -> auto___def_102 X1). tauto. exact (rem_3492 X1).
Qed.

Remark rem_3494 : forall X1 X2:term, auto___def_88 X2 -> auto___def_93 sym -> auto___def_94 X1 -> auto___def_96 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_88 X2 -> auto___def_96 X2). tauto. exact (rem_3093 X2).
Qed.

Remark rem_3495 : forall X1 X2:term, auto___def_88 X2 -> auto___def_93 sym -> auto___def_94 X1 -> (auto___def_102 X1 /\ auto___def_96 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_102 X1). 2:apply (rem_3493 X1 X2);  assumption.
  cut (auto___def_96 X2). 2:apply (rem_3494 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3496 : forall X1 X2:term, auto___def_88 X2 -> auto___def_93 sym -> auto___def_94 X1 -> auto___def_67 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_3495 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_67_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3497 : forall X1 X2:term, auto___def_93 sym -> auto___def_94 X1 -> auto___def_88 X2 -> auto___def_67 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_88 X2 -> auto___def_93 sym -> auto___def_94 X1 -> auto___def_67 X1 X2). tauto. exact (rem_3496 X1 X2).
Qed.

Remark rem_3498 : forall X1 X2:term, auto___def_88 X2 -> auto___def_89 (key sym X1) -> auto___def_67 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1438 sym X1 H);  intros.
  apply (rem_3497 X1 X2);  tauto.
Qed.

Remark rem_3499 : forall X1 X2:term, auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 X1 -> auto___def_67 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1894 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_67_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3500 : forall X1 X2:term, auto___def_26 sym -> auto___type_4 X1 -> auto___def_24 X2 -> auto___def_67 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 X1 -> auto___def_67 X1 X2). tauto. exact (rem_3499 X1 X2).
Qed.

Remark rem_3501 : forall X1 X2:term, auto___def_24 X2 -> auto___def_25 (key sym X1) -> auto___def_67 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1444 sym X1 H);  intros.
  apply (rem_3500 X1 X2);  tauto.
Qed.

Remark rem_3502 : forall X1 X2:term, auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_67 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_1902 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_67_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3503 : forall X1 X2:term, auto___def_45 sym -> auto___type_8 X1 -> auto___type_7 X2 -> auto___def_67 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_67 X1 X2). tauto. exact (rem_3502 X1 X2).
Qed.

Remark rem_3504 : forall X1 X2:term, auto___def_44 (key sym X1) -> auto___type_7 X2 -> auto___def_67 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1450 sym X1 H);  intros.
  apply (rem_3503 X1 X2);  tauto.
Qed.

Remark rem_3505 : forall X1 X2:term, auto___type_7 X2 -> auto___def_44 (key sym X1) -> auto___def_67 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_44 (key sym X1) -> auto___type_7 X2 -> auto___def_67 X1 X2). tauto. exact (rem_3504 X1 X2).
Qed.

Remark rem_3506 : forall X1:term, auto___type_19 X1 -> auto___type_19 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3507 : forall X1 X2:term, auto___def_84 X2 -> auto___def_86 sym -> auto___type_19 X1 -> auto___type_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_19 X1 -> auto___type_19 X1). tauto. exact (rem_3506 X1).
Qed.

Remark rem_3508 : forall X1 X2:term, auto___def_84 X2 -> auto___def_86 sym -> auto___type_19 X1 -> auto___def_84 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_84 X2 -> auto___def_84 X2). tauto. exact (rem_3107 X2).
Qed.

Remark rem_3509 : forall X1 X2:term, auto___def_84 X2 -> auto___def_86 sym -> auto___type_19 X1 -> (auto___type_19 X1 /\ auto___def_84 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___type_19 X1). 2:apply (rem_3507 X1 X2);  assumption.
  cut (auto___def_84 X2). 2:apply (rem_3508 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3510 : forall X1 X2:term, auto___def_84 X2 -> auto___def_86 sym -> auto___type_19 X1 -> auto___def_67 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_3509 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_67_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3511 : forall X1 X2:term, auto___def_86 sym -> auto___type_19 X1 -> auto___def_84 X2 -> auto___def_67 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_84 X2 -> auto___def_86 sym -> auto___type_19 X1 -> auto___def_67 X1 X2). tauto. exact (rem_3510 X1 X2).
Qed.

Remark rem_3512 : forall X1 X2:term, auto___def_84 X2 -> auto___def_85 (key sym X1) -> auto___def_67 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1457 sym X1 H);  intros.
  apply (rem_3511 X1 X2);  tauto.
Qed.

Remark rem_3513 : forall X1 X2:term, auto_knows_current (crypt X2 (key sym X1)) -> auto___def_67 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_987 X2 (key sym X1) H);  intros.
  apply (rem_3471 X1 X2);  tauto.
  apply (rem_3474 X1 X2);  tauto.
  apply (rem_3475 X1 X2);  tauto.
  apply (rem_3479 X1 X2);  tauto.
  apply (rem_3487 X1 X2);  tauto.
  apply (rem_3498 X1 X2);  tauto.
  apply (rem_3501 X1 X2);  tauto.
  apply (rem_3505 X1 X2);  tauto.
  apply (rem_3512 X1 X2);  tauto.
Qed.

Remark rem_3514 : forall X1:term, auto___def_8 X1 -> auto___def_8 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3515 : forall X1 X2:term, auto___def_8 X1 -> auto___def_9 X2 -> auto___def_8 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_8 X1 -> auto___def_8 X1). tauto. exact (rem_3514 X1).
Qed.

Remark rem_3516 : forall X1 X2:term, auto___def_8 X1 -> auto___def_9 X2 -> auto___def_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_9 X2 -> auto___def_9 X2). tauto. exact (rem_1365 X2).
Qed.

Remark rem_3517 : forall X1 X2:term, auto___def_8 X1 -> auto___def_9 X2 -> (auto___def_8 X1 /\ auto___def_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_8 X1). 2:apply (rem_3515 X1 X2);  assumption.
  cut (auto___def_9 X2). 2:apply (rem_3516 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3518 : forall X1 X2:term, auto___def_8 X1 -> auto___def_9 X2 -> auto___def_7 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3517 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_7_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3519 : forall X1 X2:term, auto___def_9 X2 -> auto___def_8 X1 -> auto___def_7 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_8 X1 -> auto___def_9 X2 -> auto___def_7 (cons X1 X2)). tauto. exact (rem_3518 X1 X2).
Qed.

Remark rem_3520 : forall X1 X2 X3 X4:term, auto___def_36 X2 -> auto___def_37 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___def_28 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_36 X2 -> auto___def_28 X2). tauto. exact (rem_2332 X2).
Qed.

Remark rem_3521 : forall X1 X2 X3 X4:term, auto___def_36 X2 -> auto___def_37 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_1278 X3).
Qed.

Remark rem_3522 : forall X1 X2 X3 X4:term, auto___def_36 X2 -> auto___def_37 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> (auto___def_28 X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto___def_28 X2). 2:apply (rem_3520 X1 X2 X3 X4);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_3521 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3523 : forall X1 X2 X3 X4:term, auto___def_36 X2 -> auto___def_37 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3522 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_27_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3524 : forall X1 X2 X3 X4:term, auto___def_24 X2 -> auto___def_25 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___def_24 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_24 X2 -> auto___def_24 X2). tauto. exact (rem_1892 X2).
Qed.

Remark rem_3525 : forall X1 X2 X3 X4:term, auto___def_24 X2 -> auto___def_25 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_1278 X3).
Qed.

Remark rem_3526 : forall X1 X2 X3 X4:term, auto___def_24 X2 -> auto___def_25 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> (auto___def_24 X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto___def_24 X2). 2:apply (rem_3524 X1 X2 X3 X4);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_3525 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3527 : forall X1 X2 X3 X4:term, auto___def_24 X2 -> auto___def_25 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3526 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_27_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3528 : forall X1 X2 X3 X4:term, auto___def_44 (key sym (r_old X3 X1)) -> auto___type_7 X2 -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___type_7 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_7 X2 -> auto___type_7 X2). tauto. exact (rem_1900 X2).
Qed.

Remark rem_3529 : forall X1 X2 X3 X4:term, auto___def_44 (key sym (r_old X3 X1)) -> auto___type_7 X2 -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_1278 X3).
Qed.

Remark rem_3530 : forall X1 X2 X3 X4:term, auto___def_44 (key sym (r_old X3 X1)) -> auto___type_7 X2 -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> (auto___type_7 X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto___type_7 X2). 2:apply (rem_3528 X1 X2 X3 X4);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_3529 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3531 : forall X1 X2 X3 X4:term, auto___def_44 (key sym (r_old X3 X1)) -> auto___type_7 X2 -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3530 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_27_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3532 : forall X1 X2 X3 X4:term, auto___type_7 X2 -> auto___def_44 (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_44 (key sym (r_old X3 X1)) -> auto___type_7 X2 -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___def_27 X1 X2 X3). tauto. exact (rem_3531 X1 X2 X3 X4).
Qed.

Remark rem_3533 : forall X1 X2 X3:term, auto___def_62 (r_old X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_319 X3 X1 H);  intros.
Qed.

Remark rem_3534 : forall X1 X2 X3:term, auto___def_61 sym -> auto___def_62 (r_old X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_62 (r_old X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3533 X1 X2 X3).
Qed.

Remark rem_3535 : forall X1 X2 X3:term, auto_agent X3 -> auto_agent X1 -> auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1098 X3 X1 H);  intros.
Qed.

Remark rem_3536 : forall X1 X2 X3:term, auto___def_51 sym -> auto_agent X3 -> auto_agent X1 -> auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X3 -> auto_agent X1 -> auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3535 X1 X2 X3).
Qed.

Remark rem_3537 : forall X1 X2 X3:term, auto___def_51 sym -> auto_agent (r_old X3 X1) -> auto_agent X3 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_51 sym -> auto_agent X3 -> auto_agent X1 -> auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3). tauto. exact (rem_3536 X1 X2 X3).
Qed.

Remark rem_3538 : forall X1 X2 X3:term, auto_agent X3 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2 H3 H4. intro H. intros.
  elim (rem_1361 sym (r_old X3 X1) H);  intros.
  apply (rem_3534 X1 X2 X3);  tauto.
  apply (rem_3537 X1 X2 X3);  tauto.
Qed.

Remark rem_3539 : forall X1 X2 X3:term, auto___def_11 (passwd_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1274 X3 X1 H);  intros.
  apply (rem_3538 X1 X2 X3);  tauto.
Qed.

Remark rem_3540 : forall X1 X2 X3 X4:term, auto___def_10 X4 -> auto___def_11 (passwd_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_11 (passwd_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3539 X1 X2 X3).
Qed.

Remark rem_3541 : forall X1 X2 X3:term, auto___def_62 (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_319 X3 X1 H);  intros.
Qed.

Remark rem_3542 : forall X1 X2 X3:term, auto___def_61 sym -> auto___def_62 (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_62 (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3541 X1 X2 X3).
Qed.

Remark rem_3543 : forall X1 X2 X3:term, auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1098 X3 X1 H);  intros.
Qed.

Remark rem_3544 : forall X1 X2 X3:term, auto___def_51 sym -> auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3543 X1 X2 X3).
Qed.

Remark rem_3545 : forall X1 X2 X3:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1361 sym (r_old X3 X1) H);  intros.
  apply (rem_3542 X1 X2 X3);  tauto.
  apply (rem_3544 X1 X2 X3);  tauto.
Qed.

Remark rem_3546 : forall X1 X2 X3:term, auto_knows_old X3 -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3). tauto. exact (rem_3545 X1 X2 X3).
Qed.

Remark rem_3547 : forall X1 X2 X3:term, auto___def_16 (passwd_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1830 X3 X1 H);  intros.
  apply (rem_3546 X1 X2 X3);  tauto.
Qed.

Remark rem_3548 : forall X1 X2 X3 X4:term, auto___def_15 X4 -> auto___def_16 (passwd_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_16 (passwd_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3547 X1 X2 X3).
Qed.

Remark rem_3549 : forall X1 X2 X3:term, auto___def_20 (passwd_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1837 X3 X1 H);  intros.
  apply (rem_3546 X1 X2 X3);  tauto.
Qed.

Remark rem_3550 : forall X1 X2 X3 X4:term, auto___def_19 X4 -> auto___def_20 (passwd_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_20 (passwd_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3549 X1 X2 X3).
Qed.

Remark rem_3551 : forall X1 X2 X3:term, auto___def_62 (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (passwd_old X3 X1) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_319 X3 X1 H);  intros.
Qed.

Remark rem_3552 : forall X1 X2 X3:term, auto___def_61 sym -> auto___def_62 (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (passwd_old X3 X1) -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_62 (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (passwd_old X3 X1) -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3551 X1 X2 X3).
Qed.

Remark rem_3553 : forall X1 X2 X3:term, auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (passwd_old X3 X1) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1098 X3 X1 H);  intros.
Qed.

Remark rem_3554 : forall X1 X2 X3:term, auto___def_51 sym -> auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (passwd_old X3 X1) -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent (r_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (passwd_old X3 X1) -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3553 X1 X2 X3).
Qed.

Remark rem_3555 : forall X1 X2 X3:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto_knows_old (passwd_old X3 X1) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1361 sym (r_old X3 X1) H);  intros.
  apply (rem_3552 X1 X2 X3);  tauto.
  apply (rem_3554 X1 X2 X3);  tauto.
Qed.

Remark rem_3556 : forall X1 X2 X3 X4:term, auto_knows_old X4 -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto_knows_old (passwd_old X3 X1) -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto_knows_old (passwd_old X3 X1) -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3555 X1 X2 X3).
Qed.

Remark rem_3557 : forall X1 X2 X3 X4:term, auto_knows_old X4 -> auto_knows_old (passwd_old X3 X1) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X4 -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (r_old X3 X1)) -> auto_knows_old (passwd_old X3 X1) -> auto___def_27 X1 X2 X3). tauto. exact (rem_3556 X1 X2 X3 X4).
Qed.

Remark rem_3558 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_1290 X4 (passwd_old X3 X1) H);  intros.
  apply (rem_3540 X1 X2 X3 X4);  tauto.
  apply (rem_3548 X1 X2 X3 X4);  tauto.
  apply (rem_3550 X1 X2 X3 X4);  tauto.
  apply (rem_3557 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3559 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old (key sym (r_old X3 X1)) -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto_knows_old (key sym (r_old X3 X1)) -> auto___def_27 X1 X2 X3). tauto. exact (rem_3558 X1 X2 X3 X4).
Qed.

Remark rem_3560 : forall X1 X2 X3 X4:term, auto_knows_old X3 -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1860 X2 (key sym (r_old X3 X1)) H);  intros.
  apply (rem_3523 X1 X2 X3 X4);  tauto.
  apply (rem_3527 X1 X2 X3 X4);  tauto.
  apply (rem_3532 X1 X2 X3 X4);  tauto.
  apply (rem_3559 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3561 : forall X1 X2 X3 X4:term, auto_knows_old X3 -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto_knows_old nil -> auto___def_27 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X3 -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto___def_27 X1 X2 X3). tauto.
  exact (rem_3560 X1 X2 X3 X4).
Qed.

Remark rem_3562 : forall X1 X2 X3 X4:term, auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto_knows_old nil -> auto_knows_old X3 -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto___def_27 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X3 -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto_knows_old (enc X4 (passwd_old X3 X1)) -> auto_knows_old nil -> auto___def_27 X1 X2 X3). tauto. exact (rem_3561 X1 X2 X3 X4).
Qed.

Remark rem_3563 : forall X1 X2 X3 X4:term, auto_knows_old X3 -> auto_knows_old (cons (enc X4 (passwd_old X3 X1)) nil) -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1263 (enc X4 (passwd_old X3 X1)) nil H);  intros.
  apply (rem_3562 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3564 : forall X1 X2 X3 X4:term, auto_knows_old (cons X3 (cons (enc X4 (passwd_old X3 X1)) nil)) -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto___def_27 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1263 X3 (cons (enc X4 (passwd_old X3 X1)) nil) H);  intros.
  apply (rem_3563 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3565 : forall X1 X2 X3 X4:term, auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto_knows_old (cons X3 (cons (enc X4 (passwd_old X3 X1)) nil)) -> auto___def_27 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old (cons X3 (cons (enc X4 (passwd_old X3 X1)) nil)) -> auto_knows_old (crypt X2 (key sym (r_old X3 X1))) -> auto___def_27 X1 X2 X3). tauto. exact (rem_3564 X1 X2 X3 X4).
Qed.

Remark rem_3566 : forall X1 X2 X3 X4:term, auto_knows_old (cons X2 (cons (enc X3 (passwd_old X2 X1)) nil)) -> auto_knows_old (crypt X4 (key sym (r_old X2 X1))) -> auto_knows_old (crypt (nonceb_old X2 X1) (key sym (r_old X2 X1))) -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_3567 : forall X1 X2 X3 X4:term, auto_knows_old (cons X2 (cons (enc X3 (passwd_old X2 X1)) nil)) -> auto_knows_old (crypt X4 (key sym (r_old X2 X1))) -> auto_knows_old (crypt (nonceb_old X2 X1) (key sym (r_old X2 X1))) -> auto___def_47 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3.
  case (rem_3566 X1 X2 X3 X4 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_47_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3568 : forall X1 X2 X3 X4:term, auto_knows_old (crypt (nonceb_old X2 X1) (key sym (r_old X2 X1))) -> auto_knows_old (crypt X3 (key sym (r_old X2 X1))) -> auto_knows_old (cons X2 (cons (enc X4 (passwd_old X2 X1)) nil)) -> auto___def_47 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto_knows_old (cons X2 (cons (enc X3 (passwd_old X2 X1)) nil)) -> auto_knows_old (crypt X4 (key sym (r_old X2 X1))) -> auto_knows_old (crypt (nonceb_old X2 X1) (key sym (r_old X2 X1))) -> auto___def_47 X1 X2). tauto. exact (rem_3567 X1 X2 X3 X4).
Qed.

Remark rem_3569 : forall X1:term, auto___def_55 X1 -> auto___def_55 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3570 : forall X1 X2:term, auto___def_4 X2 -> auto___def_55 X1 -> auto___def_55 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_55 X1 -> auto___def_55 X1). tauto. exact (rem_3569 X1).
Qed.

Remark rem_3571 : forall X2:term, auto___def_4 X2 -> auto___def_4 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3572 : forall X1 X2:term, auto___def_4 X2 -> auto___def_55 X1 -> auto___def_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_4 X2 -> auto___def_4 X2). tauto. exact (rem_3571 X2).
Qed.

Remark rem_3573 : forall X1 X2:term, auto___def_4 X2 -> auto___def_55 X1 -> (auto___def_55 X1 /\ auto___def_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_55 X1). 2:apply (rem_3570 X1 X2);  assumption.
  cut (auto___def_4 X2). 2:apply (rem_3572 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3574 : forall X1 X2:term, auto___def_4 X2 -> auto___def_55 X1 -> auto___def_54 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3573 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_54_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3575 : forall X1:term, auto___def_61 sym -> auto___def_62 X1 -> auto___def_6 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_61 sym -> False). tauto.
  exact (rem_1310).
Qed.

Remark rem_3576 : forall X1:term, auto___def_51 sym -> auto_agent X1 -> auto___def_6 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_1313).
Qed.

Remark rem_3577 : forall X1:term, auto_knows_old (key sym X1) -> auto___def_6 X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_1361 sym X1 H);  intros.
  apply (rem_3575 X1);  tauto.
  apply (rem_3576 X1);  tauto.
Qed.

Remark rem_3578 : forall X1 X2 X3:term, auto___def_13 (r_current X3 X1) -> auto___def_17 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1768 X3 X1 H);  intros.
Qed.

Remark rem_3579 : forall X1 X2 X3:term, auto___def_12 sym -> auto___def_13 (r_current X3 X1) -> auto___def_17 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_13 (r_current X3 X1) -> auto___def_17 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto.
  exact (rem_3578 X1 X2 X3).
Qed.

Remark rem_3580 : forall X1 X2 X3:term, auto___def_17 X2 -> auto___type_2 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1399 sym (r_current X3 X1) H);  intros.
  apply (rem_3579 X1 X2 X3);  tauto.
Qed.

Remark rem_3581 : forall X1 X2 X3:term, auto___def_36 X2 -> auto___def_42 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_399 X3 X1 H);  intros.
Qed.

Remark rem_3582 : forall X1 X2 X3:term, auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_36 X2 -> auto___def_42 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto.
  exact (rem_3581 X1 X2 X3).
Qed.

Remark rem_3583 : forall X1 X2 X3:term, auto___def_41 sym -> auto___def_42 (r_current X3 X1) -> auto___def_36 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_36 X2 -> auto___def_41 sym -> auto___def_42 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto. exact (rem_3582 X1 X2 X3).
Qed.

Remark rem_3584 : forall X1 X2 X3:term, auto___def_36 X2 -> auto___def_37 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1405 sym (r_current X3 X1) H);  intros.
  apply (rem_3583 X1 X2 X3);  tauto.
Qed.

Remark rem_3585 : forall X1 X2 X3:term, auto___def_21 X2 -> auto___def_22 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1407 sym (r_current X3 X1) H);  intros.
Qed.

Remark rem_3586 : forall X1 X2 X3:term, auto___def_62 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_320 X3 X1 H);  intros.
Qed.

Remark rem_3587 : forall X1 X2 X3:term, auto___def_61 sym -> auto___def_62 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_62 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto.
  exact (rem_3586 X1 X2 X3).
Qed.

Remark rem_3588 : forall X1 X2 X3:term, auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1099 X3 X1 H);  intros.
Qed.

Remark rem_3589 : forall X1 X2 X3:term, auto___def_51 sym -> auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto.
  exact (rem_3588 X1 X2 X3).
Qed.

Remark rem_3590 : forall X1 X2 X3:term, auto___def_13 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1768 X3 X1 H);  intros.
Qed.

Remark rem_3591 : forall X1 X2 X3:term, auto___def_12 sym -> auto___def_13 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_13 (r_current X3 X1) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto.
  exact (rem_3590 X1 X2 X3).
Qed.

Remark rem_3592 : forall X1 X2 X3:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1066 sym (r_current X3 X1) H);  intros.
  apply (rem_3587 X1 X2 X3);  tauto.
  apply (rem_3589 X1 X2 X3);  tauto.
  apply (rem_3591 X1 X2 X3);  tauto.
Qed.

Remark rem_3593 : forall X1 X2 X3:term, auto_knows_current X2 -> auto_knows_current (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (r_current X3 X1)) -> auto___def_95 X1 X2 X3). tauto. exact (rem_3592 X1 X2 X3).
Qed.

Remark rem_3594 : forall X1 X2 X3:term, auto___def_104 (key sym (r_current X3 X1)) -> auto___type_22 X2 -> auto_knows_current X3 -> auto___type_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___type_22 X2 -> auto___type_22 X2). tauto. exact (rem_2945 X2).
Qed.

Remark rem_3595 : forall X1 X2 X3:term, auto___def_104 (key sym (r_current X3 X1)) -> auto___type_22 X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_2947 X3).
Qed.

Remark rem_3596 : forall X1 X2 X3:term, auto___def_104 (key sym (r_current X3 X1)) -> auto___type_22 X2 -> auto_knows_current X3 -> (auto___type_22 X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto___type_22 X2). 2:apply (rem_3594 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_3595 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3597 : forall X1 X2 X3:term, auto___def_104 (key sym (r_current X3 X1)) -> auto___type_22 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3596 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_95_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3598 : forall X1 X2 X3:term, auto___type_22 X2 -> auto___def_104 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_104 (key sym (r_current X3 X1)) -> auto___type_22 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto. exact (rem_3597 X1 X2 X3).
Qed.

Remark rem_3599 : forall X1 X2 X3:term, auto___def_88 X2 -> auto___def_89 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_96 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_88 X2 -> auto___def_96 X2). tauto. exact (rem_3093 X2).
Qed.

Remark rem_3600 : forall X1 X2 X3:term, auto___def_88 X2 -> auto___def_89 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_2947 X3).
Qed.

Remark rem_3601 : forall X1 X2 X3:term, auto___def_88 X2 -> auto___def_89 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> (auto___def_96 X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto___def_96 X2). 2:apply (rem_3599 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_3600 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3602 : forall X1 X2 X3:term, auto___def_88 X2 -> auto___def_89 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3601 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_95_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3603 : forall X1 X2 X3:term, auto___def_24 X2 -> auto___type_4 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_526 X3 X1 H);  intros.
Qed.

Remark rem_3604 : forall X1 X2 X3:term, auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_24 X2 -> auto___type_4 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto.
  exact (rem_3603 X1 X2 X3).
Qed.

Remark rem_3605 : forall X1 X2 X3:term, auto___def_26 sym -> auto___type_4 (r_current X3 X1) -> auto___def_24 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_24 X2 -> auto___def_26 sym -> auto___type_4 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto. exact (rem_3604 X1 X2 X3).
Qed.

Remark rem_3606 : forall X1 X2 X3:term, auto___def_24 X2 -> auto___def_25 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1444 sym (r_current X3 X1) H);  intros.
  apply (rem_3605 X1 X2 X3);  tauto.
Qed.

Remark rem_3607 : forall X1 X2 X3:term, auto___type_7 X2 -> auto___type_8 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_463 X3 X1 H);  intros.
Qed.

Remark rem_3608 : forall X1 X2 X3:term, auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___type_7 X2 -> auto___type_8 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto.
  exact (rem_3607 X1 X2 X3).
Qed.

Remark rem_3609 : forall X1 X2 X3:term, auto___def_45 sym -> auto___type_8 (r_current X3 X1) -> auto___type_7 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_45 sym -> auto___type_7 X2 -> auto___type_8 (r_current X3 X1) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto. exact (rem_3608 X1 X2 X3).
Qed.

Remark rem_3610 : forall X1 X2 X3:term, auto___def_44 (key sym (r_current X3 X1)) -> auto___type_7 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1450 sym (r_current X3 X1) H);  intros.
  apply (rem_3609 X1 X2 X3);  tauto.
Qed.

Remark rem_3611 : forall X1 X2 X3:term, auto___type_7 X2 -> auto___def_44 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_44 (key sym (r_current X3 X1)) -> auto___type_7 X2 -> auto_knows_current X3 -> auto___def_95 X1 X2 X3). tauto. exact (rem_3610 X1 X2 X3).
Qed.

Remark rem_3612 : forall X1 X2 X3:term, auto___def_84 X2 -> auto___def_85 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_84 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_84 X2 -> auto___def_84 X2). tauto. exact (rem_3107 X2).
Qed.

Remark rem_3613 : forall X1 X2 X3:term, auto___def_84 X2 -> auto___def_85 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_2947 X3).
Qed.

Remark rem_3614 : forall X1 X2 X3:term, auto___def_84 X2 -> auto___def_85 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> (auto___def_84 X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto___def_84 X2). 2:apply (rem_3612 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_3613 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3615 : forall X1 X2 X3:term, auto___def_84 X2 -> auto___def_85 (key sym (r_current X3 X1)) -> auto_knows_current X3 -> auto___def_95 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3614 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_95_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3616 : forall X1 X2 X3:term, auto_knows_current X3 -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_987 X2 (key sym (r_current X3 X1)) H);  intros.
  apply (rem_3580 X1 X2 X3);  tauto.
  apply (rem_3584 X1 X2 X3);  tauto.
  apply (rem_3585 X1 X2 X3);  tauto.
  apply (rem_3593 X1 X2 X3);  tauto.
  apply (rem_3598 X1 X2 X3);  tauto.
  apply (rem_3602 X1 X2 X3);  tauto.
  apply (rem_3606 X1 X2 X3);  tauto.
  apply (rem_3611 X1 X2 X3);  tauto.
  apply (rem_3615 X1 X2 X3);  tauto.
Qed.

Remark rem_3617 : forall X1 X2 X3 X4:term, auto_knows_current X3 -> auto_knows_current (cons X4 nil) -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto___def_95 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X3 -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto___def_95 X1 X2 X3). tauto.
  exact (rem_3616 X1 X2 X3).
Qed.

Remark rem_3618 : forall X1 X2 X3 X4:term, auto_knows_current (cons X3 (cons X4 nil)) -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto___def_95 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1034 X3 (cons X4 nil) H);  intros.
  apply (rem_3617 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3619 : forall X1 X2 X3 X4:term, auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto_knows_current (cons X3 (cons X4 nil)) -> auto___def_95 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current (cons X3 (cons X4 nil)) -> auto_knows_current (crypt X2 (key sym (r_current X3 X1))) -> auto___def_95 X1 X2 X3). tauto. exact (rem_3618 X1 X2 X3 X4).
Qed.

Remark rem_3620 : forall X1 X2:term, auto___def_68 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3621 : forall X1 X2:term, auto___def_68 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3622 : forall X1 X2:term, auto___def_68 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3623 : auto___def_68 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3624 : forall X1 X2:term, auto___def_68 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3625 : forall X1 X2:term, auto___def_68 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3626 : forall X1 X2:term, auto___def_68 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3627 : forall X1:term, auto___def_68 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3628 : auto___def_68 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3629 : forall X1 X2:term, auto___def_68 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3630 : forall X1 X2:term, auto___def_68 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3631 : auto___def_68 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3632 : auto___def_68 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3633 : forall X1 X2:term, auto___def_68 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3634 : forall X1 X2:term, auto___def_68 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3635 : forall X1 X2:term, auto___def_68 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3636 : forall X1 X2:term, auto___def_68 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3637 : forall X1:term, auto___def_68 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3638 : auto___def_68 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3639 : forall X1 X2:term, auto___def_68 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3640 : auto___def_68 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3641 : auto___def_68 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3642 : auto___def_68 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3643 : forall X1 X2:term, auto___def_68 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3644 : forall X1 X2:term, auto___def_68 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3645 : forall X1:term, auto___def_68 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_68 1.
  intro X. case X.
   intro H. elim (rem_3631  H).
   intro H. elim (rem_3623  H).
  intros X1 X2. intro H. elim (rem_3636 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3620 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3634 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3635 X1 X2 H).
   intro H. elim (rem_3640  H).
  intros X1 X2. intro H. elim (rem_3644 X1 X2 H).
   intro H. elim (rem_3641  H).
  intros X1 X2. intro H. elim (rem_3643 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3624 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3621 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3633 X1 X2 H).
  intros X1. intro H. elim (rem_3627 X1 H).
  intros X1 X2. intro H. elim (rem_3630 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3629 X1 X2 H).
   intro H. elim (rem_3632  H).
   intro H. elim (rem_3628  H).
  intros X1 X2. intro H. elim (rem_3626 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3625 X1 X2 H).
  intros X1. intro H. elim (rem_3637 X1 H).
   intro H. elim (rem_3642  H).
  intros X1 X2. intro H. elim (rem_3639 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3622 X1 X2 H).
   intro H. elim (rem_3638  H).
Qed.

Remark rem_3646 : forall X1:term, auto___def_68 X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_68 X1 -> False). tauto.
  exact (rem_3645 X1).
Qed.

Remark rem_3647 : forall X2:term, auto___def_68 X2 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto___def_68 X1 -> False). tauto. exact (rem_3646 X1).
Qed.

Remark rem_3648 : forall X1 X2:term, auto___def_105 X1 -> auto___def_68 X2 -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_68 X2 -> False). tauto.
  exact (rem_3647 X2).
Qed.

Remark rem_3649 : forall X1 X2:term, auto___def_105 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (False). tauto.
  exact (rem_3648 X1 X2 A1 A2).
Qed.

Remark rem_3650 : forall X1 X2:term, auto___def_68 X2 -> auto___def_93 X1 -> auto___def_115 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_3645 X2)). tauto.
Qed.

Remark rem_3651 : forall X1 X2:term, auto___def_93 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_68 X2 -> auto___def_93 X1 -> auto___def_115 (key X1 X2)). tauto. exact (rem_3650 X1 X2).
Qed.

Remark rem_3652 : forall X1 X2:term, auto___def_41 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_3645 X2)). tauto.
Qed.

Remark rem_3653 : forall X1 X2:term, auto___def_68 X2 -> auto___def_86 X1 -> auto___def_115 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_3645 X2)). tauto.
Qed.

Remark rem_3654 : forall X1 X2:term, auto___def_86 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_68 X2 -> auto___def_86 X1 -> auto___def_115 (key X1 X2)). tauto. exact (rem_3653 X1 X2).
Qed.

Remark rem_3655 : forall X1 X2:term, auto___def_101 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_3645 X2)). tauto.
Qed.

Remark rem_3656 : forall X1 X2:term, auto___def_119 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_3645 X2)). tauto.
Qed.

Remark rem_3657 : forall X1 X2:term, auto___def_60 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_3645 X2)). tauto.
Qed.

Remark rem_3658 : forall X1 X2:term, auto___def_45 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_3645 X2)). tauto.
Qed.

Remark rem_3659 : forall X1 X2:term, auto___def_26 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_3645 X2)). tauto.
Qed.

Remark rem_3660 : forall X1 X2:term, auto___def_33 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_3645 X2)). tauto.
Qed.

Remark epsilon_m__def_116_p__def_105_p__def_93_p__def_41_p__def_86_p__def_101_p__def_119_p__def_60_p__def_45_p__def_26_p__def_33_o : forall X:term, auto___def_116 X -> or_10 (auto___def_105 X) (auto___def_93 X) (auto___def_41 X) (auto___def_86 X) (auto___def_101 X) (auto___def_119 X) (auto___def_60 X) (auto___def_45 X) (auto___def_26 X) (auto___def_33 X). (* Justify inversion for epsilon clause. *)
Proof.
 cut (forall X:term, auto___def_116 X -> auto___def_105 X \/ auto___def_93 X \/ auto___def_41 X \/ auto___def_86 X \/ auto___def_101 X \/ auto___def_119 X \/ auto___def_60 X \/ auto___def_45 X \/ auto___def_26 X \/ auto___def_33 X).
  intros H0 X H. decompose sum (H0 X H).
  apply or_10_intro_1; assumption.
  apply or_10_intro_2; assumption.
  apply or_10_intro_3; assumption.
  apply or_10_intro_4; assumption.
  apply or_10_intro_5; assumption.
  apply or_10_intro_6; assumption.
  apply or_10_intro_7; assumption.
  apply or_10_intro_8; assumption.
  apply or_10_intro_9; assumption.
  apply or_10_intro_10; assumption.
  destruct X; intro H; inversion H; intuition auto with h1mc_states_hint.
Qed.

Remark rem_3661 : forall X1 X2:term, auto___def_116 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2). (* Invert negative atom through epsilon clauses. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (epsilon_m__def_116_p__def_105_p__def_93_p__def_41_p__def_86_p__def_101_p__def_119_p__def_60_p__def_45_p__def_26_p__def_33_o X1 H); intros.
  apply (rem_3649 X1 X2);  tauto.
  apply (rem_3651 X1 X2);  tauto.
  apply (rem_3652 X1 X2);  tauto.
  apply (rem_3654 X1 X2);  tauto.
  apply (rem_3655 X1 X2);  tauto.
  apply (rem_3656 X1 X2);  tauto.
  apply (rem_3657 X1 X2);  tauto.
  apply (rem_3658 X1 X2);  tauto.
  apply (rem_3659 X1 X2);  tauto.
  apply (rem_3660 X1 X2);  tauto.
Qed.

Remark rem_3662 : forall X1 X2:term, auto___def_68 X2 -> auto___def_116 X1 -> auto___def_115 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_116 X1 -> auto___def_68 X2 -> auto___def_115 (key X1 X2)). tauto. exact (rem_3661 X1 X2).
Qed.

Remark rem_3663 : forall X1 X2:term, auto___def_36 X2 -> auto___def_41 pub -> auto___def_42 X1 -> auto___def_1 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_41 pub -> False). tauto.
  exact (rem_1402).
Qed.

Remark rem_3664 : forall X1 X2:term, auto___def_41 pub -> auto___def_42 X1 -> auto___def_36 X2 -> auto___def_1 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X2 -> auto___def_41 pub -> auto___def_42 X1 -> auto___def_1 X1 X2). tauto. exact (rem_3663 X1 X2).
Qed.

Remark rem_3665 : forall X1 X2:term, auto___def_36 X2 -> auto___def_37 (key pub X1) -> auto___def_1 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1405 pub X1 H);  intros.
  apply (rem_3664 X1 X2);  tauto.
Qed.

Remark rem_3666 : forall X1 X2:term, auto___def_24 X2 -> auto___def_26 pub -> auto___type_4 X1 -> auto___def_1 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_26 pub -> False). tauto.
  exact (rem_1441).
Qed.

Remark rem_3667 : forall X1 X2:term, auto___def_26 pub -> auto___type_4 X1 -> auto___def_24 X2 -> auto___def_1 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X2 -> auto___def_26 pub -> auto___type_4 X1 -> auto___def_1 X1 X2). tauto. exact (rem_3666 X1 X2).
Qed.

Remark rem_3668 : forall X1 X2:term, auto___def_24 X2 -> auto___def_25 (key pub X1) -> auto___def_1 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1444 pub X1 H);  intros.
  apply (rem_3667 X1 X2);  tauto.
Qed.

Remark rem_3669 : forall X1 X2:term, auto___def_45 pub -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_1 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_45 pub -> False). tauto.
  exact (rem_1447).
Qed.

Remark rem_3670 : forall X1 X2:term, auto___def_45 pub -> auto___type_8 X1 -> auto___type_7 X2 -> auto___def_1 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_45 pub -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_1 X1 X2). tauto. exact (rem_3669 X1 X2).
Qed.

Remark rem_3671 : forall X1 X2:term, auto___def_44 (key pub X1) -> auto___type_7 X2 -> auto___def_1 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1450 pub X1 H);  intros.
  apply (rem_3670 X1 X2);  tauto.
Qed.

Remark rem_3672 : forall X1 X2:term, auto___type_7 X2 -> auto___def_44 (key pub X1) -> auto___def_1 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_44 (key pub X1) -> auto___type_7 X2 -> auto___def_1 X1 X2). tauto. exact (rem_3671 X1 X2).
Qed.

Remark rem_3673 : forall X1 X2:term, auto___def_61 pub -> auto___def_62 X1 -> auto_knows_old X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_62 X1 -> auto_agent X1). tauto. exact (rem_1412 X1).
Qed.

Remark rem_3674 : forall X1 X2:term, auto___def_61 pub -> auto___def_62 X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_1258 X2).
Qed.

Remark rem_3675 : forall X1 X2:term, auto___def_61 pub -> auto___def_62 X1 -> auto_knows_old X2 -> (auto_agent X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto_agent X1). 2:apply (rem_3673 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_3674 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3676 : forall X1 X2:term, auto___def_61 pub -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_1 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_3675 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_1_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3677 : forall X1 X2:term, auto___def_51 pub -> auto_agent X1 -> auto_knows_old X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_923 X1).
Qed.

Remark rem_3678 : forall X1 X2:term, auto___def_51 pub -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_1258 X2).
Qed.

Remark rem_3679 : forall X1 X2:term, auto___def_51 pub -> auto_agent X1 -> auto_knows_old X2 -> (auto_agent X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto_agent X1). 2:apply (rem_3677 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_3678 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3680 : forall X1 X2:term, auto___def_51 pub -> auto_agent X1 -> auto_knows_old X2 -> auto___def_1 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_3679 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_1_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3681 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old (key pub X1) -> auto___def_1 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1361 pub X1 H);  intros.
  apply (rem_3676 X1 X2);  tauto.
  apply (rem_3680 X1 X2);  tauto.
Qed.

Remark rem_3682 : forall X1 X2:term, auto_knows_old (crypt X2 (key pub X1)) -> auto___def_1 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1860 X2 (key pub X1) H);  intros.
  apply (rem_3665 X1 X2);  tauto.
  apply (rem_3668 X1 X2);  tauto.
  apply (rem_3672 X1 X2);  tauto.
  apply (rem_3681 X1 X2);  tauto.
Qed.

Remark rem_3683 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (cons X3 nil) -> auto_knows_current (crypt X4 (key sym (r_current X2 X1))) -> auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_1414 X2).
Qed.

Remark rem_3684 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (cons X3 nil) -> auto_knows_current (crypt X4 (key sym (r_current X2 X1))) -> auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto_knows_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto_knows_current X2). 2:apply (rem_3683 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_3685 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (cons X3 nil) -> auto_knows_current (crypt X4 (key sym (r_current X2 X1))) -> auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto___def_109 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_3684 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_109_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3686 : forall X1 X2 X3 X4:term, auto_knows_current (cons X2 (cons X3 nil)) -> auto_knows_current (crypt X4 (key sym (r_current X2 X1))) -> auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto___def_109 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1034 X2 (cons X3 nil) H);  intros.
  apply (rem_3685 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_3687 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto_knows_current (crypt X3 (key sym (r_current X2 X1))) -> auto_knows_current (cons X2 (cons X4 nil)) -> auto___def_109 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto_knows_current (cons X2 (cons X3 nil)) -> auto_knows_current (crypt X4 (key sym (r_current X2 X1))) -> auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto___def_109 X1 X2). tauto. exact (rem_3686 X1 X2 X3 X4).
Qed.

Remark rem_3688 : auto___def_116 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_116_sym_1;  tauto.
 tauto.
Qed.

Remark rem_3689 : forall X1 X2 X3:term, auto___def_71 (crypt X1 (key pub (session_current X3 X2))) -> auto___def_72 (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_803 X1 (key pub (session_current X3 X2)) H);  intros.
Qed.

Remark rem_3690 : forall X1 X2 X3:term, auto___def_13 (session_current X3 X2) -> auto___def_17 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1781 X3 X2 H);  intros.
Qed.

Remark rem_3691 : forall X1 X2 X3:term, auto___def_12 pub -> auto___def_13 (session_current X3 X2) -> auto___def_17 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_13 (session_current X3 X2) -> auto___def_17 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3690 X1 X2 X3).
Qed.

Remark rem_3692 : forall X1 X2 X3:term, auto___def_17 X1 -> auto___type_2 (key pub (session_current X3 X2)) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1399 pub (session_current X3 X2) H);  intros.
  apply (rem_3691 X1 X2 X3);  tauto.
Qed.

Remark rem_3693 : forall X1 X2 X3:term, auto___def_36 X1 -> auto___def_42 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_412 X3 X2 H);  intros.
Qed.

Remark rem_3694 : forall X1 X2 X3:term, auto___def_36 X1 -> auto___def_41 pub -> auto___def_42 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_36 X1 -> auto___def_42 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3693 X1 X2 X3).
Qed.

Remark rem_3695 : forall X1 X2 X3:term, auto___def_41 pub -> auto___def_42 (session_current X3 X2) -> auto___def_36 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_36 X1 -> auto___def_41 pub -> auto___def_42 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto. exact (rem_3694 X1 X2 X3).
Qed.

Remark rem_3696 : forall X1 X2 X3:term, auto___def_36 X1 -> auto___def_37 (key pub (session_current X3 X2)) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1405 pub (session_current X3 X2) H);  intros.
  apply (rem_3695 X1 X2 X3);  tauto.
Qed.

Remark rem_3697 : forall X1 X2 X3:term, auto___def_21 X1 -> auto___def_22 (key pub (session_current X3 X2)) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1407 pub (session_current X3 X2) H);  intros.
Qed.

Remark rem_3698 : forall X1 X2 X3:term, auto___def_62 (session_current X3 X2) -> auto_knows_current X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_333 X3 X2 H);  intros.
Qed.

Remark rem_3699 : forall X1 X2 X3:term, auto___def_61 pub -> auto___def_62 (session_current X3 X2) -> auto_knows_current X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_62 (session_current X3 X2) -> auto_knows_current X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3698 X1 X2 X3).
Qed.

Remark rem_3700 : forall X1 X2 X3:term, auto_agent (session_current X3 X2) -> auto_knows_current X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1111 X3 X2 H);  intros.
Qed.

Remark rem_3701 : forall X1 X2 X3:term, auto___def_51 pub -> auto_agent (session_current X3 X2) -> auto_knows_current X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent (session_current X3 X2) -> auto_knows_current X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3700 X1 X2 X3).
Qed.

Remark rem_3702 : forall X1 X2 X3:term, auto___def_13 (session_current X3 X2) -> auto_knows_current X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1781 X3 X2 H);  intros.
Qed.

Remark rem_3703 : forall X1 X2 X3:term, auto___def_12 pub -> auto___def_13 (session_current X3 X2) -> auto_knows_current X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_13 (session_current X3 X2) -> auto_knows_current X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3702 X1 X2 X3).
Qed.

Remark rem_3704 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_knows_current (key pub (session_current X3 X2)) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1066 pub (session_current X3 X2) H);  intros.
  apply (rem_3699 X1 X2 X3);  tauto.
  apply (rem_3701 X1 X2 X3);  tauto.
  apply (rem_3703 X1 X2 X3);  tauto.
Qed.

Remark rem_3705 : forall X1 X2 X3:term, auto___type_22 X1 -> auto___type_23 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_444 X3 X2 H);  intros.
Qed.

Remark rem_3706 : forall X1 X2 X3:term, auto___def_105 pub -> auto___type_22 X1 -> auto___type_23 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___type_22 X1 -> auto___type_23 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3705 X1 X2 X3).
Qed.

Remark rem_3707 : forall X1 X2 X3:term, auto___def_105 pub -> auto___type_23 (session_current X3 X2) -> auto___type_22 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_105 pub -> auto___type_22 X1 -> auto___type_23 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto. exact (rem_3706 X1 X2 X3).
Qed.

Remark rem_3708 : forall X1 X2 X3:term, auto___def_104 (key pub (session_current X3 X2)) -> auto___type_22 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1431 pub (session_current X3 X2) H);  intros.
  apply (rem_3707 X1 X2 X3);  tauto.
Qed.

Remark rem_3709 : forall X1 X2 X3:term, auto___type_22 X1 -> auto___def_104 (key pub (session_current X3 X2)) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_104 (key pub (session_current X3 X2)) -> auto___type_22 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto. exact (rem_3708 X1 X2 X3).
Qed.

Remark rem_3710 : forall X1 X2 X3:term, auto___def_88 X1 -> auto___def_94 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2813 X3 X2 H);  intros.
Qed.

Remark rem_3711 : forall X1 X2 X3:term, auto___def_88 X1 -> auto___def_93 pub -> auto___def_94 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_88 X1 -> auto___def_94 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3710 X1 X2 X3).
Qed.

Remark rem_3712 : forall X1 X2 X3:term, auto___def_93 pub -> auto___def_94 (session_current X3 X2) -> auto___def_88 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_88 X1 -> auto___def_93 pub -> auto___def_94 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto. exact (rem_3711 X1 X2 X3).
Qed.

Remark rem_3713 : forall X1 X2 X3:term, auto___def_88 X1 -> auto___def_89 (key pub (session_current X3 X2)) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1438 pub (session_current X3 X2) H);  intros.
  apply (rem_3712 X1 X2 X3);  tauto.
Qed.

Remark rem_3714 : forall X1 X2 X3:term, auto___def_24 X1 -> auto___type_4 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_539 X3 X2 H);  intros.
Qed.

Remark rem_3715 : forall X1 X2 X3:term, auto___def_24 X1 -> auto___def_26 pub -> auto___type_4 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_24 X1 -> auto___type_4 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3714 X1 X2 X3).
Qed.

Remark rem_3716 : forall X1 X2 X3:term, auto___def_26 pub -> auto___type_4 (session_current X3 X2) -> auto___def_24 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_24 X1 -> auto___def_26 pub -> auto___type_4 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto. exact (rem_3715 X1 X2 X3).
Qed.

Remark rem_3717 : forall X1 X2 X3:term, auto___def_24 X1 -> auto___def_25 (key pub (session_current X3 X2)) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1444 pub (session_current X3 X2) H);  intros.
  apply (rem_3716 X1 X2 X3);  tauto.
Qed.

Remark rem_3718 : forall X1 X2 X3:term, auto___type_7 X1 -> auto___type_8 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_476 X3 X2 H);  intros.
Qed.

Remark rem_3719 : forall X1 X2 X3:term, auto___def_45 pub -> auto___type_7 X1 -> auto___type_8 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___type_7 X1 -> auto___type_8 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3718 X1 X2 X3).
Qed.

Remark rem_3720 : forall X1 X2 X3:term, auto___def_45 pub -> auto___type_8 (session_current X3 X2) -> auto___type_7 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_45 pub -> auto___type_7 X1 -> auto___type_8 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto. exact (rem_3719 X1 X2 X3).
Qed.

Remark rem_3721 : forall X1 X2 X3:term, auto___def_44 (key pub (session_current X3 X2)) -> auto___type_7 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1450 pub (session_current X3 X2) H);  intros.
  apply (rem_3720 X1 X2 X3);  tauto.
Qed.

Remark rem_3722 : forall X1 X2 X3:term, auto___type_7 X1 -> auto___def_44 (key pub (session_current X3 X2)) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_44 (key pub (session_current X3 X2)) -> auto___type_7 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto. exact (rem_3721 X1 X2 X3).
Qed.

Remark rem_3723 : forall X1 X2 X3:term, auto___def_84 X1 -> auto___type_19 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_380 X3 X2 H);  intros.
Qed.

Remark rem_3724 : forall X1 X2 X3:term, auto___def_84 X1 -> auto___def_86 pub -> auto___type_19 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_84 X1 -> auto___type_19 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3723 X1 X2 X3).
Qed.

Remark rem_3725 : forall X1 X2 X3:term, auto___def_86 pub -> auto___type_19 (session_current X3 X2) -> auto___def_84 X1 -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_84 X1 -> auto___def_86 pub -> auto___type_19 (session_current X3 X2) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3). tauto. exact (rem_3724 X1 X2 X3).
Qed.

Remark rem_3726 : forall X1 X2 X3:term, auto___def_84 X1 -> auto___def_85 (key pub (session_current X3 X2)) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1457 pub (session_current X3 X2) H);  intros.
  apply (rem_3725 X1 X2 X3);  tauto.
Qed.

Remark rem_3727 : forall X1 X2 X3:term, auto_knows_current (crypt X1 (key pub (session_current X3 X2))) -> auto_knows_current (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_987 X1 (key pub (session_current X3 X2)) H);  intros.
  apply (rem_3692 X1 X2 X3);  tauto.
  apply (rem_3696 X1 X2 X3);  tauto.
  apply (rem_3697 X1 X2 X3);  tauto.
  apply (rem_3704 X1 X2 X3);  tauto.
  apply (rem_3709 X1 X2 X3);  tauto.
  apply (rem_3713 X1 X2 X3);  tauto.
  apply (rem_3717 X1 X2 X3);  tauto.
  apply (rem_3722 X1 X2 X3);  tauto.
  apply (rem_3726 X1 X2 X3);  tauto.
Qed.

Remark rem_3728 : forall X1 X2:term, auto___def_82 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3729 : forall X1 X2 X3:term, auto___def_81 X1 -> auto___def_82 (key pub (session_current X3 X2)) -> auto_knows_current X3 -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_3728 pub (session_current X3 X2) H);  intros.
Qed.

Remark rem_3730 : forall X1 X2 X3:term, auto_knows_current X3 -> auto___def_81 X1 -> auto___def_82 (key pub (session_current X3 X2)) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_81 X1 -> auto___def_82 (key pub (session_current X3 X2)) -> auto_knows_current X3 -> auto___def_83 X1 X2 X3). tauto. exact (rem_3729 X1 X2 X3).
Qed.

Remark rem_3731 : forall X1 X2 X3:term, auto___def_80 (passwd_current X3 X2) -> auto___def_81 X1 -> auto___def_82 (key pub (session_current X3 X2)) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_2937 X3 X2 H);  intros.
  apply (rem_3730 X1 X2 X3);  tauto.
Qed.

Remark rem_3732 : forall X1 X2 X3:term, auto___def_81 X1 -> auto___def_82 (key pub (session_current X3 X2)) -> auto___def_80 (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_80 (passwd_current X3 X2) -> auto___def_81 X1 -> auto___def_82 (key pub (session_current X3 X2)) -> auto___def_83 X1 X2 X3). tauto. exact (rem_3731 X1 X2 X3).
Qed.

Remark rem_3733 : forall X1 X2 X3:term, auto___def_79 (crypt X1 (key pub (session_current X3 X2))) -> auto___def_80 (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_766 X1 (key pub (session_current X3 X2)) H);  intros.
  apply (rem_3732 X1 X2 X3);  tauto.
Qed.

Remark rem_3734 : forall X1 X2 X3:term, auto___def_77 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_current X3 -> auto___def_77 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_77 X1 -> auto___def_77 X1). tauto. exact (rem_1462 X1).
Qed.

Remark rem_3735 : forall X1 X2 X3:term, auto___def_77 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_925 X2).
Qed.

Remark rem_3736 : forall X1 X2 X3:term, auto___def_77 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_current X3 -> auto_agent X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X3 -> auto_agent X3). tauto. exact (rem_1269 X3).
Qed.

Remark rem_3737 : forall X1 X2 X3:term, auto___def_77 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_current X3 -> (auto___def_77 X1 /\ auto_agent X2 /\ auto_agent X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto___def_77 X1). 2:apply (rem_3734 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_3735 X1 X2 X3);  assumption.
  cut (auto_agent X3). 2:apply (rem_3736 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3738 : forall X1 X2 X3:term, auto___def_77 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_current X3 -> auto___def_83 X1 X2 X3. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3737 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_83_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3739 : forall X1 X2 X3:term, auto_agent X3 -> auto_agent X2 -> auto___def_77 X1 -> auto_knows_current X3 -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_77 X1 -> auto_agent X2 -> auto_agent X3 -> auto_knows_current X3 -> auto___def_83 X1 X2 X3). tauto. exact (rem_3738 X1 X2 X3).
Qed.

Remark rem_3740 : forall X1 X2:term, auto___def_73 (session_current X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3741 : forall X1 X2 X3:term, auto___def_73 (session_current X3 X2) -> auto___def_77 X1 -> auto_knows_current X3 -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_3740 X3 X2 H);  intros.
  apply (rem_3739 X1 X2 X3);  tauto.
Qed.

Remark rem_3742 : forall X1 X2 X3:term, auto___def_12 pub -> auto___def_73 (session_current X3 X2) -> auto___def_77 X1 -> auto_knows_current X3 -> auto___def_83 X1 X2 X3. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto___def_73 (session_current X3 X2) -> auto___def_77 X1 -> auto_knows_current X3 -> auto___def_83 X1 X2 X3). tauto.
  exact (rem_3741 X1 X2 X3).
Qed.

Remark rem_3743 : forall X1 X2:term, auto___type_17 (key X1 X2) -> or_1
    (auto___def_12 X1 /\ auto___def_73 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3744 : forall X1 X2 X3:term, auto___def_77 X1 -> auto___type_17 (key pub (session_current X3 X2)) -> auto_knows_current X3 -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_3743 pub (session_current X3 X2) H);  intros.
  apply (rem_3742 X1 X2 X3);  tauto.
Qed.

Remark rem_3745 : forall X1 X2 X3:term, auto_knows_current X3 -> auto___def_77 X1 -> auto___type_17 (key pub (session_current X3 X2)) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_77 X1 -> auto___type_17 (key pub (session_current X3 X2)) -> auto_knows_current X3 -> auto___def_83 X1 X2 X3). tauto. exact (rem_3744 X1 X2 X3).
Qed.

Remark rem_3746 : forall X1 X2 X3:term, auto___def_76 (passwd_current X3 X2) -> auto___def_77 X1 -> auto___type_17 (key pub (session_current X3 X2)) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_2940 X3 X2 H);  intros.
  apply (rem_3745 X1 X2 X3);  tauto.
Qed.

Remark rem_3747 : forall X1 X2 X3:term, auto___def_77 X1 -> auto___type_17 (key pub (session_current X3 X2)) -> auto___def_76 (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_76 (passwd_current X3 X2) -> auto___def_77 X1 -> auto___type_17 (key pub (session_current X3 X2)) -> auto___def_83 X1 X2 X3). tauto. exact (rem_3746 X1 X2 X3).
Qed.

Remark rem_3748 : forall X1 X2 X3:term, auto___def_75 (crypt X1 (key pub (session_current X3 X2))) -> auto___def_76 (passwd_current X3 X2) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_731 X1 (key pub (session_current X3 X2)) H);  intros.
  apply (rem_3747 X1 X2 X3);  tauto.
Qed.

Remark rem_3749 : forall X1 X2 X3:term, auto_knows_current (enc (crypt X1 (key pub (session_current X3 X2))) (passwd_current X3 X2)) -> auto___def_83 X1 X2 X3. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1031 (crypt X1 (key pub (session_current X3 X2))) (passwd_current X3 X2) H);  intros.
  apply (rem_3689 X1 X2 X3);  tauto.
  apply (rem_3727 X1 X2 X3);  tauto.
  apply (rem_3733 X1 X2 X3);  tauto.
  apply (rem_3748 X1 X2 X3);  tauto.
Qed.

Remark rem_3750 : forall X1:term, auto___def_93 X1 -> auto___def_93 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3751 : forall X1 X2:term, auto___def_93 X1 -> auto___def_94 X2 -> auto___def_93 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_93 X1 -> auto___def_93 X1). tauto. exact (rem_3750 X1).
Qed.

Remark rem_3752 : forall X2:term, auto___def_94 X2 -> auto___def_94 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3753 : forall X1 X2:term, auto___def_93 X1 -> auto___def_94 X2 -> auto___def_94 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_94 X2 -> auto___def_94 X2). tauto. exact (rem_3752 X2).
Qed.

Remark rem_3754 : forall X1 X2:term, auto___def_93 X1 -> auto___def_94 X2 -> (auto___def_93 X1 /\ auto___def_94 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_93 X1). 2:apply (rem_3751 X1 X2);  assumption.
  cut (auto___def_94 X2). 2:apply (rem_3753 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3755 : forall X1 X2:term, auto___def_93 X1 -> auto___def_94 X2 -> auto___def_89 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3754 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_89_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3756 : forall X1 X2:term, auto___def_94 X2 -> auto___def_93 X1 -> auto___def_89 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_93 X1 -> auto___def_94 X2 -> auto___def_89 (key X1 X2)). tauto. exact (rem_3755 X1 X2).
Qed.

Remark rem_3757 : auto___def_57 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_57_sym_1;  tauto.
 tauto.
Qed.

Remark rem_3758 : forall X1 X2:term, auto_knows_current X1 -> auto___def_110 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1.
  case (rem_353 X1 A1). clear  A1. intros. apply trans___def_110_r_current_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_3759 : forall X1 X2:term, auto___def_109 X1 X2 -> or_1
    (auto_knows_current X2).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3760 : forall X1 X2:term, auto___def_109 X2 X1 -> auto___def_110 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_3759 X2 X1 H);  intros.
  apply (rem_3758 X1 X2);  tauto.
Qed.

Remark rem_3761 : forall X1:term, auto___def_45 X1 -> auto___def_45 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3762 : forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> auto___def_45 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_45 X1 -> auto___def_45 X1). tauto. exact (rem_3761 X1).
Qed.

Remark rem_3763 : forall X2:term, auto___type_8 X2 -> auto___type_8 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3764 : forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> auto___type_8 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_8 X2 -> auto___type_8 X2). tauto. exact (rem_3763 X2).
Qed.

Remark rem_3765 : forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> (auto___def_45 X1 /\ auto___type_8 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_45 X1). 2:apply (rem_3762 X1 X2);  assumption.
  cut (auto___type_8 X2). 2:apply (rem_3764 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3766 : forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> auto___def_44 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3765 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_44_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3767 : forall X1 X2:term, auto___type_8 X2 -> auto___def_45 X1 -> auto___def_44 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_45 X1 -> auto___type_8 X2 -> auto___def_44 (key X1 X2)). tauto. exact (rem_3766 X1 X2).
Qed.

Remark rem_3768 : forall X1 X2 X3:term, auto___def_19 X3 -> auto_knows_old X1 -> auto___def_16 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_1795 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_16_passwd_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3769 : forall X1 X2 X3:term, auto___def_10 X3 -> auto_agent X2 -> auto_agent X1 -> auto___def_16 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1808 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_16_passwd_old_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3770 : forall X1 X2 X3:term, auto_agent X2 -> auto___def_10 X3 -> auto_agent X1 -> auto___def_16 (passwd_old X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_10 X3 -> auto_agent X2 -> auto_agent X1 -> auto___def_16 (passwd_old X1 X2)). tauto. exact (rem_3769 X1 X2 X3).
Qed.

Remark rem_3771 : forall X1 X2 X3:term, auto___def_15 X3 -> auto_knows_old X1 -> auto___def_16 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_1812 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_16_passwd_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3772 : forall X1 X2 X3:term, auto___def_14 X2 X3 X1 -> auto___def_16 (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1814 X2 X3 X1 H);  intros.
  apply (rem_3768 X1 X2 X3);  tauto.
  apply (rem_3770 X1 X2 X3);  tauto.
  apply (rem_3771 X1 X2 X3);  tauto.
Qed.

Remark rem_3773 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3774 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_3773 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3775 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3776 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_3775 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3777 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_3774 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_3776 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3778 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3777 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3779 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3780 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_3779 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3781 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3782 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_3781 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3783 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_3780 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_3782 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3784 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3783 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_2;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3785 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3786 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_3785 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3787 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3788 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_3787 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3789 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_3786 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_3788 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3790 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3789 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_3;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3791 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___type_26 X1 -> auto___type_26 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3792 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_26 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___type_26 X1 -> auto___type_26 X1). tauto. exact (rem_3791 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3793 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_111 X2 -> auto___def_111 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3794 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___def_111 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_111 X2 -> auto___def_111 X2). tauto. exact (rem_3793 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3795 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> (auto___type_26 X1 /\ auto___def_111 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___type_26 X1). 2:apply (rem_3792 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_111 X2). 2:apply (rem_3794 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3796 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3795 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_4;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3797 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3798 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_3797 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3799 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3800 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_3799 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3801 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3798 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3800 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3802 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3801 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_5;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3803 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3804 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_3803 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3805 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3806 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_3805 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3807 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_3804 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_3806 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3808 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3807 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_6;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3809 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3810 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_3809 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3811 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3812 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_3811 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3813 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_3810 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_3812 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3814 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3813 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_7;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3815 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___type_27 X1 -> auto___type_27 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3816 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_27 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___type_27 X1 -> auto___type_27 X1). tauto. exact (rem_3815 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3817 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_113 X2 -> auto___def_113 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3818 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___def_113 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_113 X2 -> auto___def_113 X2). tauto. exact (rem_3817 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3819 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> (auto___type_27 X1 /\ auto___def_113 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___type_27 X1). 2:apply (rem_3816 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_113 X2). 2:apply (rem_3818 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3820 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3819 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_8;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3821 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3822 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_3821 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3823 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3824 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_3823 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3825 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_3822 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_3824 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3826 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3825 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_9;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3827 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3828 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_3827 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3829 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3830 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_3829 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3831 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_3828 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_3830 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3832 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3831 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_10;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3833 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3834 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_3833 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3835 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3836 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_3835 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3837 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_3834 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_3836 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3838 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_28 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3837 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_crypt_11;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3839 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current (crypt X1 X2) -> auto___type_28 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intro H. intros.
  elim (rem_616 X1 X2 H);  intros.
  apply (rem_3778 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3784 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3790 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3796 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3802 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3808 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3814 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3820 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3826 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3832 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3838 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
Defined.

Remark rem_3840 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28.  tauto.
Defined.

Remark rem_3841 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> auto___type_28 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28.  case (rem_3840 epsilon_mtestable_current_p__type_28). clear  epsilon_mtestable_current_p__type_28. intros. apply trans___type_28_bob_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28. tauto.
Defined.

Remark rem_3842 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> auto_testable_current bob -> auto___type_28 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intro H. intros.
  elim (rem_620 H);  intros.
  apply (rem_3841 epsilon_mtestable_current_p__type_28);  tauto.
Defined.

Remark rem_3843 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_28 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.  case (rem_3840 epsilon_mtestable_current_p__type_28). clear  epsilon_mtestable_current_p__type_28. intros. apply trans___type_28_noncea_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28. tauto.
Defined.

Remark rem_3844 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current (noncea_old X1 X2) -> auto___type_28 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intro H. intros.
  elim (rem_623 X1 X2 H);  intros.
  apply (rem_3843 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
Defined.

Remark rem_3845 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3846 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_3845 epsilon_mtestable_current_p__type_28 X1);  assumption.
  tauto.
Defined.

Remark rem_3847 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_28 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1.
  case (rem_3846 epsilon_mtestable_current_p__type_28 X1 A1). clear  epsilon_mtestable_current_p__type_28 A1. intros. apply trans___type_28_r_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1. tauto.
Defined.

Remark rem_3848 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current (r_old X1 X2) -> auto___type_28 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intro H. intros.
  elim (rem_628 X1 X2 H);  intros.
  apply (rem_3847 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
Defined.

Remark rem_3849 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3850 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1. intros A1.
  cut (auto_testable_current X1). 2:apply (rem_3849 epsilon_mtestable_current_p__type_28 X1);  assumption.
  tauto.
Defined.

Remark rem_3851 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto_testable_current X1 -> auto___type_28 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1. intros A1.
  case (rem_3850 epsilon_mtestable_current_p__type_28 X1 A1). clear  epsilon_mtestable_current_p__type_28 A1. intros. apply trans___type_28_p_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1. tauto.
Defined.

Remark rem_3852 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto_testable_current (p X1) -> auto___type_28 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1. intro H. intros.
  elim (rem_633 X1 H);  intros.
  apply (rem_3851 epsilon_mtestable_current_p__type_28 X1);  tauto.
Defined.

Remark rem_3853 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_28 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.  case (rem_3840 epsilon_mtestable_current_p__type_28). clear  epsilon_mtestable_current_p__type_28. intros. apply trans___type_28_passwd_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28. tauto.
Defined.

Remark rem_3854 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current (passwd_old X1 X2) -> auto___type_28 (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intro H. intros.
  elim (rem_636 X1 X2 H);  intros.
  apply (rem_3853 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
Defined.

Remark rem_3855 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> auto___type_28 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28.  case (rem_3840 epsilon_mtestable_current_p__type_28). clear  epsilon_mtestable_current_p__type_28. intros. apply trans___type_28_alice_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28. tauto.
Defined.

Remark rem_3856 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> auto_testable_current alice -> auto___type_28 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intro H. intros.
  elim (rem_639 H);  intros.
  apply (rem_3855 epsilon_mtestable_current_p__type_28);  tauto.
Defined.

Remark rem_3857 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___type_28 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.  case (rem_3840 epsilon_mtestable_current_p__type_28). clear  epsilon_mtestable_current_p__type_28. intros. apply trans___type_28_nonceb_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28. tauto.
Defined.

Remark rem_3858 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current (nonceb_old X1 X2) -> auto___type_28 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intro H. intros.
  elim (rem_642 X1 X2 H);  intros.
  apply (rem_3857 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
Defined.

Remark rem_3859 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto_testable_current X1 -> auto_testable_current X1). tauto. exact (rem_3849 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3860 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_3799 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3861 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_3859 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3860 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3862 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_28 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3861 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_dec_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3863 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current (dec X1 X2) -> auto___type_28 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intro H. intros.
  elim (rem_648 X1 X2 H);  intros.
  apply (rem_3862 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
Defined.

Remark rem_3864 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3865 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_3864 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3866 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3867 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_3866 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3868 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_3865 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_3867 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3869 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_28 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3868 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_enc_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3870 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_28 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3861 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_enc_2;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3871 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3872 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_3871 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3873 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3874 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_3873 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3875 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_3872 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_3874 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3876 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_28 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3875 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_enc_3;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3877 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3878 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_3877 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3879 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3880 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_3879 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3881 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_3878 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_3880 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3882 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_28 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3881 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_enc_4;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3883 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current (enc X1 X2) -> auto___type_28 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intro H. intros.
  elim (rem_669 X1 X2 H);  intros.
  apply (rem_3869 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3870 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3876 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3882 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
Defined.

Remark rem_3884 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3885 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X2. intros A1.
  cut (auto_testable_current X2). 2:apply (rem_3884 epsilon_mtestable_current_p__type_28 X2);  assumption.
  tauto.
Defined.

Remark rem_3886 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current X2 -> auto___type_28 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1.
  case (rem_3885 epsilon_mtestable_current_p__type_28 X2 A1). clear  epsilon_mtestable_current_p__type_28 A1. intros. apply trans___type_28_cons_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1. tauto.
Defined.

Remark rem_3887 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto___type_28 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1.
  case (rem_3850 epsilon_mtestable_current_p__type_28 X1 A1). clear  epsilon_mtestable_current_p__type_28 A1. intros. apply trans___type_28_cons_2;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1. tauto.
Defined.

Remark rem_3888 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current (cons X1 X2) -> auto___type_28 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intro H. intros.
  elim (rem_675 X1 X2 H);  intros.
  apply (rem_3886 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3887 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
Defined.

Remark rem_3889 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto_testable_current X1 -> auto___type_28 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1. intros A1.
  case (rem_3850 epsilon_mtestable_current_p__type_28 X1 A1). clear  epsilon_mtestable_current_p__type_28 A1. intros. apply trans___type_28_s_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1. tauto.
Defined.

Remark rem_3890 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto_testable_current (s X1) -> auto___type_28 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1. intro H. intros.
  elim (rem_678 X1 H);  intros.
  apply (rem_3889 epsilon_mtestable_current_p__type_28 X1);  tauto.
Defined.

Remark rem_3891 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> auto___type_28 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28.  case (rem_3840 epsilon_mtestable_current_p__type_28). clear  epsilon_mtestable_current_p__type_28. intros. apply trans___type_28_i_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28. tauto.
Defined.

Remark rem_3892 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> auto_testable_current i -> auto___type_28 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intro H. intros.
  elim (rem_681 H);  intros.
  apply (rem_3891 epsilon_mtestable_current_p__type_28);  tauto.
Defined.

Remark rem_3893 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> auto___type_28 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28.  case (rem_3840 epsilon_mtestable_current_p__type_28). clear  epsilon_mtestable_current_p__type_28. intros. apply trans___type_28_nil_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28. tauto.
Defined.

Remark rem_3894 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> auto_testable_current nil -> auto___type_28 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intro H. intros.
  elim (rem_684 H);  intros.
  apply (rem_3893 epsilon_mtestable_current_p__type_28);  tauto.
Defined.

Remark rem_3895 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> auto___type_28 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28.  case (rem_3840 epsilon_mtestable_current_p__type_28). clear  epsilon_mtestable_current_p__type_28. intros. apply trans___type_28_server_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28. tauto.
Defined.

Remark rem_3896 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> auto_testable_current server -> auto___type_28 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intro H. intros.
  elim (rem_687 H);  intros.
  apply (rem_3895 epsilon_mtestable_current_p__type_28);  tauto.
Defined.

Remark rem_3897 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_119 X1 -> auto___def_119 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3898 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_119 X1 -> auto___def_119 X1). tauto. exact (rem_3897 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3899 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___type_31 X2 -> auto___type_31 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3900 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___type_31 X2 -> auto___type_31 X2). tauto. exact (rem_3899 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3901 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_3898 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_3900 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3902 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_28 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3901 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_key_1;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3903 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_114 X1 -> auto___def_114 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3904 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_114 X1 -> auto___def_114 X1). tauto. exact (rem_3903 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3905 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_66 X2 -> auto___def_66 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3906 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_66 X2 -> auto___def_66 X2). tauto. exact (rem_3905 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3907 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_3904 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_3906 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3908 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___type_28 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3907 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_key_2;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3909 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3910 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3909 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3911 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3912 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_3911 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3913 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3910 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_3912 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3914 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_28 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3913 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_key_3;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3915 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3916 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_3915 epsilon_mtestable_current_p__type_28 X1).
Defined.

Remark rem_3917 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3918 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_3917 epsilon_mtestable_current_p__type_28 X2).
Defined.

Remark rem_3919 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_3916 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_3918 epsilon_mtestable_current_p__type_28 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3920 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_28 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intros A1 A2.
  case (rem_3919 epsilon_mtestable_current_p__type_28 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_28 A1 A2. intros. apply trans___type_28_key_4;  tauto.
 clear  epsilon_mtestable_current_p__type_28 A1 A2. tauto.
Defined.

Remark rem_3921 : (forall X:term, auto_testable_current X -> auto___type_28 X)
    -> forall X1 X2:term, auto_testable_current (key X1 X2) -> auto___type_28 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_28. intros X1 X2. intro H. intros.
  elim (rem_713 X1 X2 H);  intros.
  apply (rem_3902 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3908 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3914 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
  apply (rem_3920 epsilon_mtestable_current_p__type_28 X1 X2);  tauto.
Defined.

Remark rem_3922 : forall X1:term, auto_testable_current X1 -> auto___type_28 X1. (* Induct. *)
Proof.
  fix epsilon_mtestable_current_p__type_28 1.
  intro X. case X.
  exact (rem_3856 epsilon_mtestable_current_p__type_28 ).
  exact (rem_3842 epsilon_mtestable_current_p__type_28 ).
  intros X1 X2;  exact (rem_3888 epsilon_mtestable_current_p__type_28 X1 X2).
  intros X1 X2;  exact (rem_3839 epsilon_mtestable_current_p__type_28 X1 X2).
  intros X1 X2;  exact (rem_3863 epsilon_mtestable_current_p__type_28 X1 X2).
  intros X1 X2;  exact (rem_3883 epsilon_mtestable_current_p__type_28 X1 X2).
  exact (rem_3892 epsilon_mtestable_current_p__type_28 ).
  intros X1 X2;  exact (rem_3921 epsilon_mtestable_current_p__type_28 X1 X2).
  exact (rem_3894 epsilon_mtestable_current_p__type_28 ).
  intros X1 X2. intro H. elim (rem_723 X1 X2 H).
  intros X1 X2;  exact (rem_3844 epsilon_mtestable_current_p__type_28 X1 X2).
  intros X1 X2. intro H. elim (rem_715 X1 X2 H).
  intros X1 X2;  exact (rem_3858 epsilon_mtestable_current_p__type_28 X1 X2).
  intros X1;  exact (rem_3852 epsilon_mtestable_current_p__type_28 X1).
  intros X1 X2. intro H. elim (rem_719 X1 X2 H).
  intros X1 X2;  exact (rem_3854 epsilon_mtestable_current_p__type_28 X1 X2).
   intro H. elim (rem_720  H).
   intro H. elim (rem_718  H).
  intros X1 X2. intro H. elim (rem_717 X1 X2 H).
  intros X1 X2;  exact (rem_3848 epsilon_mtestable_current_p__type_28 X1 X2).
  intros X1;  exact (rem_3890 epsilon_mtestable_current_p__type_28 X1).
  exact (rem_3896 epsilon_mtestable_current_p__type_28 ).
  intros X1 X2. intro H. elim (rem_722 X1 X2 H).
  intros X1 X2. intro H. elim (rem_716 X1 X2 H).
   intro H. elim (rem_721  H).
Qed.

Remark rem_3923 : (forall X:term, auto___def_24 X -> auto___type_5 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3924 : (forall X:term, auto___def_24 X -> auto___type_5 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_24_p__type_5. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_3923 epsilon_m__def_24_p__type_5 X1).
Defined.

Remark rem_3925 : (forall X:term, auto___def_24 X -> auto___type_5 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3926 : (forall X:term, auto___def_24 X -> auto___type_5 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_24_p__type_5. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_3925 epsilon_m__def_24_p__type_5 X2).
Defined.

Remark rem_3927 : (forall X:term, auto___def_24 X -> auto___type_5 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_24_p__type_5. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_3924 epsilon_m__def_24_p__type_5 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_3926 epsilon_m__def_24_p__type_5 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3928 : (forall X:term, auto___def_24 X -> auto___type_5 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_5 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_24_p__type_5. intros X1 X2. intros A1 A2.
  case (rem_3927 epsilon_m__def_24_p__type_5 X1 X2 A1 A2). clear  epsilon_m__def_24_p__type_5 A1 A2. intros. apply trans___type_5_noncea_old_1;  tauto.
 clear  epsilon_m__def_24_p__type_5 A1 A2. tauto.
Defined.

Remark rem_3929 : (forall X:term, auto___def_24 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___def_24 (noncea_old X1 X2) -> auto___type_5 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_p__type_5. intros X1 X2. intro H. intros.
  elim (rem_2007 X1 X2 H);  intros.
  apply (rem_3928 epsilon_m__def_24_p__type_5 X1 X2);  tauto.
Defined.

Remark rem_3930 : forall X1:term, auto___def_24 X1 -> auto___type_5 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_24_p__type_5 1.
  intro X. case X.
   intro H. elim (rem_2019  H).
   intro H. elim (rem_2012  H).
  intros X1 X2. intro H. elim (rem_1937 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2009 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2022 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2023 X1 X2 H).
   intro H. elim (rem_2027  H).
  intros X1 X2. intro H. elim (rem_2031 X1 X2 H).
   intro H. elim (rem_2028  H).
  intros X1 X2. intro H. elim (rem_2030 X1 X2 H).
  intros X1 X2;  exact (rem_3929 epsilon_m__def_24_p__type_5 X1 X2).
  intros X1 X2. intro H. elim (rem_2010 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2021 X1 X2 H).
  intros X1. intro H. elim (rem_2015 X1 H).
  intros X1 X2. intro H. elim (rem_2018 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2017 X1 X2 H).
   intro H. elim (rem_2020  H).
   intro H. elim (rem_2016  H).
  intros X1 X2. intro H. elim (rem_2014 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2013 X1 X2 H).
  intros X1. intro H. elim (rem_2024 X1 H).
   intro H. elim (rem_2029  H).
  intros X1 X2. intro H. elim (rem_2026 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2011 X1 X2 H).
   intro H. elim (rem_2025  H).
Qed.

Remark rem_3931 : forall X1 X2:term, auto___def_24 X1 -> auto_knows_old X2 -> auto___type_5 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_24 X1 -> auto___type_5 X1). tauto. exact (rem_3930 X1).
Qed.

Remark rem_3932 : forall X1 X3:term, auto___def_24 X1 -> auto_knows_old X3 -> auto___type_5 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X1 -> auto_knows_old X2 -> auto___type_5 X1). tauto. exact (rem_3931 X1 X2).
Qed.

Remark rem_3933 : (forall X:term, auto___def_28 X -> auto___type_5 X)
    -> forall X1:term, auto___type_5 X1 -> auto___type_6 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_28_p__type_5. exact (rem_3305).
Defined.

Remark rem_3934 : (forall X:term, auto___def_28 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> auto___type_6 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_28_p__type_5. intros X1 X2.
  cut (auto___type_5 X1 -> auto___type_6 X1). tauto. exact (rem_3933 epsilon_m__def_28_p__type_5 X1).
Defined.

Remark rem_3935 : (forall X:term, auto___def_28 X -> auto___type_5 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_38 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_28_p__type_5. exact (rem_3399).
Defined.

Remark rem_3936 : (forall X:term, auto___def_28 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> auto___def_38 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_28_p__type_5. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_38 X2). tauto. exact (rem_3935 epsilon_m__def_28_p__type_5 X2).
Defined.

Remark rem_3937 : (forall X:term, auto___def_28 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> (auto___type_6 X1 /\ auto___def_38 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_28_p__type_5. intros X1 X2. intros A1 A2.
  cut (auto___type_6 X1). 2:apply (rem_3934 epsilon_m__def_28_p__type_5 X1 X2);  assumption.
  cut (auto___def_38 X2). 2:apply (rem_3936 epsilon_m__def_28_p__type_5 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3938 : (forall X:term, auto___def_28 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> auto___type_5 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_28_p__type_5. intros X1 X2. intros A1 A2.
  case (rem_3937 epsilon_m__def_28_p__type_5 X1 X2 A1 A2). clear  epsilon_m__def_28_p__type_5 A1 A2. intros. apply trans___type_5_cons_1;  tauto.
 clear  epsilon_m__def_28_p__type_5 A1 A2. tauto.
Defined.

Remark rem_3939 : (forall X:term, auto___def_28 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___def_28 (cons X1 X2) -> auto___type_5 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_28_p__type_5. intros X1 X2. intro H. intros.
  elim (rem_3404 X1 X2 H);  intros.
  apply (rem_3938 epsilon_m__def_28_p__type_5 X1 X2);  tauto.
Defined.

Remark rem_3940 : forall X1:term, auto___def_28 X1 -> auto___type_5 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_28_p__type_5 1.
  intro X. case X.
   intro H. elim (rem_3417  H).
   intro H. elim (rem_3409  H).
  intros X1 X2;  exact (rem_3939 epsilon_m__def_28_p__type_5 X1 X2).
  intros X1 X2. intro H. elim (rem_3406 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3420 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3421 X1 X2 H).
   intro H. elim (rem_3425  H).
  intros X1 X2. intro H. elim (rem_3429 X1 X2 H).
   intro H. elim (rem_3426  H).
  intros X1 X2. intro H. elim (rem_3428 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3410 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3407 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3419 X1 X2 H).
  intros X1. intro H. elim (rem_3413 X1 H).
  intros X1 X2. intro H. elim (rem_3416 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3415 X1 X2 H).
   intro H. elim (rem_3418  H).
   intro H. elim (rem_3414  H).
  intros X1 X2. intro H. elim (rem_3412 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3411 X1 X2 H).
  intros X1. intro H. elim (rem_3422 X1 H).
   intro H. elim (rem_3427  H).
  intros X1 X2. intro H. elim (rem_3424 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3408 X1 X2 H).
   intro H. elim (rem_3423  H).
Qed.

Remark rem_3941 : forall X1 X2:term, auto___def_28 X1 -> auto_knows_old X2 -> auto___type_5 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_28 X1 -> auto___type_5 X1). tauto. exact (rem_3940 X1).
Qed.

Remark rem_3942 : forall X1 X3:term, auto___def_28 X1 -> auto_knows_old X3 -> auto___type_5 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_28 X1 -> auto_knows_old X2 -> auto___type_5 X1). tauto. exact (rem_3941 X1 X2).
Qed.

Remark rem_3943 : (forall X:term, auto___type_7 X -> auto___type_5 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3944 : (forall X:term, auto___type_7 X -> auto___type_5 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_5. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_3943 epsilon_m__type_7_p__type_5 X1);  assumption.
  tauto.
Defined.

Remark rem_3945 : (forall X:term, auto___type_7 X -> auto___type_5 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_5 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_5. intros X1 X2. intros A1.
  case (rem_3944 epsilon_m__type_7_p__type_5 X1 A1). clear  epsilon_m__type_7_p__type_5 A1. intros. apply trans___type_5_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_5 A1. tauto.
Defined.

Remark rem_3946 : (forall X:term, auto___type_7 X -> auto___type_5 X)
    -> forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> auto___type_5 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_5. intros X1 X2. intro H. intros.
  elim (rem_2043 X1 X2 H);  intros.
  apply (rem_3945 epsilon_m__type_7_p__type_5 X1 X2);  tauto.
Defined.

Remark rem_3947 : forall X1:term, auto___type_7 X1 -> auto___type_5 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_7_p__type_5 1.
  intro X. case X.
   intro H. elim (rem_2056  H).
   intro H. elim (rem_2048  H).
  intros X1 X2. intro H. elim (rem_1939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2058 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2059 X1 X2 H).
   intro H. elim (rem_2063  H).
  intros X1 X2. intro H. elim (rem_2067 X1 X2 H).
   intro H. elim (rem_2064  H).
  intros X1 X2. intro H. elim (rem_2066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2046 X1 X2 H).
  intros X1 X2;  exact (rem_3946 epsilon_m__type_7_p__type_5 X1 X2).
  intros X1. intro H. elim (rem_2052 X1 H).
  intros X1 X2. intro H. elim (rem_2055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2054 X1 X2 H).
   intro H. elim (rem_2057  H).
   intro H. elim (rem_2053  H).
  intros X1 X2. intro H. elim (rem_2051 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2050 X1 X2 H).
  intros X1. intro H. elim (rem_2060 X1 H).
   intro H. elim (rem_2065  H).
  intros X1 X2. intro H. elim (rem_2062 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2047 X1 X2 H).
   intro H. elim (rem_2061  H).
Qed.

Remark rem_3948 : forall X1 X2:term, auto___type_7 X1 -> auto_knows_old X2 -> auto___type_5 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_5 X1). tauto. exact (rem_3947 X1).
Qed.

Remark rem_3949 : forall X1 X3:term, auto___type_7 X1 -> auto_knows_old X3 -> auto___type_5 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___type_7 X1 -> auto_knows_old X2 -> auto___type_5 X1). tauto. exact (rem_3948 X1 X2).
Qed.

Remark rem_3950 : forall X1 X2 X3:term, auto___def_27 X2 X1 X3 -> auto___type_5 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_286 X2 X1 X3 H);  intros.
  apply (rem_3932 X1 X3);  tauto.
  apply (rem_3942 X1 X3);  tauto.
  apply (rem_3949 X1 X3);  tauto.
Qed.

Remark rem_3951 : auto___def_26 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_26_sym_1;  tauto.
 tauto.
Qed.

Remark rem_3952 : forall X1:term, auto___def_101 X1 -> auto___def_101 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3953 : forall X1 X2:term, auto___def_101 X1 -> auto___def_102 X2 -> auto___def_101 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_101 X1 -> auto___def_101 X1). tauto. exact (rem_3952 X1).
Qed.

Remark rem_3954 : forall X2:term, auto___def_102 X2 -> auto___def_102 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_3955 : forall X1 X2:term, auto___def_101 X1 -> auto___def_102 X2 -> auto___def_102 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_102 X2 -> auto___def_102 X2). tauto. exact (rem_3954 X2).
Qed.

Remark rem_3956 : forall X1 X2:term, auto___def_101 X1 -> auto___def_102 X2 -> (auto___def_101 X1 /\ auto___def_102 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_101 X1). 2:apply (rem_3953 X1 X2);  assumption.
  cut (auto___def_102 X2). 2:apply (rem_3955 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3957 : forall X1 X2:term, auto___def_101 X1 -> auto___def_102 X2 -> auto___def_97 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3956 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_97_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3958 : forall X1 X2:term, auto___def_102 X2 -> auto___def_101 X1 -> auto___def_97 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_101 X1 -> auto___def_102 X2 -> auto___def_97 (key X1 X2)). tauto. exact (rem_3957 X1 X2).
Qed.

Remark rem_3959 : auto___def_93 sym. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_93_sym_1;  tauto.
 tauto.
Qed.

Remark rem_3960 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3961 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_3960 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_3962 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3963 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_3962 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_3964 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_3961 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_3963 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3965 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_25 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_3964 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_crypt_1;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_3966 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3967 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_3966 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_3968 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3969 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_3968 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_3970 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_3967 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_3969 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3971 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_25 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_3970 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_crypt_2;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_3972 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3973 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_3972 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_3974 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3975 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_3974 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_3976 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_3973 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_3975 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3977 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_25 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_3976 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_crypt_3;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_3978 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3979 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_3978 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_3980 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3981 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_3980 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_3982 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3979 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3981 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3983 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_25 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_3982 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_crypt_4;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_3984 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3985 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_3984 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_3986 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3987 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_3986 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_3988 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_3985 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_3987 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3989 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_25 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_3988 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_crypt_5;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_3990 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3991 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_3990 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_3992 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3993 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_3992 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_3994 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_3991 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_3993 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3995 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_25 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_3994 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_crypt_6;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_3996 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3997 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_3996 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_3998 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3999 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_3998 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_4000 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_3997 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_3999 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4001 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_25 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_4000 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_crypt_7;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4002 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4003 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_4002 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_4004 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4005 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_4004 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_4006 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_4003 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_4005 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4007 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_25 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_4006 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_crypt_8;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4008 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4009 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_4008 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_4010 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4011 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_4010 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_4012 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_4009 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_4011 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4013 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_25 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_4012 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_crypt_9;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4014 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___type_25 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intro H. intros.
  elim (rem_987 X1 X2 H);  intros.
  apply (rem_3965 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_3971 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_3977 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_3983 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_3989 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_3995 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_4001 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_4007 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_4013 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
Defined.

Remark rem_4015 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25.  tauto.
Defined.

Remark rem_4016 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> auto___type_25 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25.  case (rem_4015 epsilon_mknows_current_p__type_25). clear  epsilon_mknows_current_p__type_25. intros. apply trans___type_25_bob_1;  tauto.
 clear  epsilon_mknows_current_p__type_25. tauto.
Defined.

Remark rem_4017 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> auto_knows_current bob -> auto___type_25 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intro H. intros.
  elim (rem_991 H);  intros.
  apply (rem_4016 epsilon_mknows_current_p__type_25);  tauto.
Defined.

Remark rem_4018 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_25 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.  case (rem_4015 epsilon_mknows_current_p__type_25). clear  epsilon_mknows_current_p__type_25. intros. apply trans___type_25_noncea_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_25. tauto.
Defined.

Remark rem_4019 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current (noncea_old X1 X2) -> auto___type_25 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intro H. intros.
  elim (rem_994 X1 X2 H);  intros.
  apply (rem_4018 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
Defined.

Remark rem_4020 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3978 epsilon_mknows_current_p__type_25 X1);  assumption.
  tauto.
Defined.

Remark rem_4021 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_25 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1. intros A1.
  case (rem_4020 epsilon_mknows_current_p__type_25 X1 A1). clear  epsilon_mknows_current_p__type_25 A1. intros. apply trans___type_25_p_1;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1. tauto.
Defined.

Remark rem_4022 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto_knows_current (p X1) -> auto___type_25 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1. intro H. intros.
  elim (rem_998 X1 H);  intros.
  apply (rem_4021 epsilon_mknows_current_p__type_25 X1);  tauto.
Defined.

Remark rem_4023 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_25 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.  case (rem_4015 epsilon_mknows_current_p__type_25). clear  epsilon_mknows_current_p__type_25. intros. apply trans___type_25_passwd_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_25. tauto.
Defined.

Remark rem_4024 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current (passwd_old X1 X2) -> auto___type_25 (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intro H. intros.
  elim (rem_1001 X1 X2 H);  intros.
  apply (rem_4023 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
Defined.

Remark rem_4025 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> auto___type_25 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25.  case (rem_4015 epsilon_mknows_current_p__type_25). clear  epsilon_mknows_current_p__type_25. intros. apply trans___type_25_alice_1;  tauto.
 clear  epsilon_mknows_current_p__type_25. tauto.
Defined.

Remark rem_4026 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> auto_knows_current alice -> auto___type_25 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intro H. intros.
  elim (rem_1004 H);  intros.
  apply (rem_4025 epsilon_mknows_current_p__type_25);  tauto.
Defined.

Remark rem_4027 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___type_25 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.  case (rem_4015 epsilon_mknows_current_p__type_25). clear  epsilon_mknows_current_p__type_25. intros. apply trans___type_25_nonceb_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_25. tauto.
Defined.

Remark rem_4028 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current (nonceb_old X1 X2) -> auto___type_25 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intro H. intros.
  elim (rem_1007 X1 X2 H);  intros.
  apply (rem_4027 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
Defined.

Remark rem_4029 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_25 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_3982 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_dec_1;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4030 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current (dec X1 X2) -> auto___type_25 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intro H. intros.
  elim (rem_1010 X1 X2 H);  intros.
  apply (rem_4029 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
Defined.

Remark rem_4031 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4032 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_4031 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_4033 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4034 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_4033 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_4035 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_4032 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_4034 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4036 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_25 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_4035 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_enc_1;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4037 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_25 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_3982 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_enc_2;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4038 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4039 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_4038 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_4040 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4041 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_4040 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_4042 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_4039 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_4041 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4043 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_25 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_4042 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_enc_3;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4044 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4045 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_4044 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_4046 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4047 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_4046 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_4048 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_4045 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_4047 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4049 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_25 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_4048 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_enc_4;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4050 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current (enc X1 X2) -> auto___type_25 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intro H. intros.
  elim (rem_1031 X1 X2 H);  intros.
  apply (rem_4036 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_4037 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_4043 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_4049 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
Defined.

Remark rem_4051 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_25 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_3982 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_cons_1;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4052 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___type_25 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intro H. intros.
  elim (rem_1034 X1 X2 H);  intros.
  apply (rem_4051 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
Defined.

Remark rem_4053 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_25 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1. intros A1.
  case (rem_4020 epsilon_mknows_current_p__type_25 X1 A1). clear  epsilon_mknows_current_p__type_25 A1. intros. apply trans___type_25_s_1;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1. tauto.
Defined.

Remark rem_4054 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto_knows_current (s X1) -> auto___type_25 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1. intro H. intros.
  elim (rem_1037 X1 H);  intros.
  apply (rem_4053 epsilon_mknows_current_p__type_25 X1);  tauto.
Defined.

Remark rem_4055 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> auto___type_25 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25.  case (rem_4015 epsilon_mknows_current_p__type_25). clear  epsilon_mknows_current_p__type_25. intros. apply trans___type_25_i_1;  tauto.
 clear  epsilon_mknows_current_p__type_25. tauto.
Defined.

Remark rem_4056 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> auto_knows_current i -> auto___type_25 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intro H. intros.
  elim (rem_1040 H);  intros.
  apply (rem_4055 epsilon_mknows_current_p__type_25);  tauto.
Defined.

Remark rem_4057 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> auto___type_25 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25.  case (rem_4015 epsilon_mknows_current_p__type_25). clear  epsilon_mknows_current_p__type_25. intros. apply trans___type_25_nil_1;  tauto.
 clear  epsilon_mknows_current_p__type_25. tauto.
Defined.

Remark rem_4058 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> auto_knows_current nil -> auto___type_25 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intro H. intros.
  elim (rem_1043 H);  intros.
  apply (rem_4057 epsilon_mknows_current_p__type_25);  tauto.
Defined.

Remark rem_4059 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> auto___type_25 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25.  case (rem_4015 epsilon_mknows_current_p__type_25). clear  epsilon_mknows_current_p__type_25. intros. apply trans___type_25_server_1;  tauto.
 clear  epsilon_mknows_current_p__type_25. tauto.
Defined.

Remark rem_4060 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> auto_knows_current server -> auto___type_25 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intro H. intros.
  elim (rem_1046 H);  intros.
  apply (rem_4059 epsilon_mknows_current_p__type_25);  tauto.
Defined.

Remark rem_4061 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_61 X1 -> auto___def_61 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4062 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_61 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_61 X1). tauto. exact (rem_4061 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_4063 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_62 X2 -> auto___def_62 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4064 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_62 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_62 X2). tauto. exact (rem_4063 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_4065 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_61 X1 /\ auto___def_62 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_61 X1). 2:apply (rem_4062 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_62 X2). 2:apply (rem_4064 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4066 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___type_25 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_4065 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_key_1;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4067 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4068 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4067 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_4069 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4070 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_4069 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_4071 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4068 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_4070 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4072 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_25 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_4071 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_key_2;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4073 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4074 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_4073 epsilon_mknows_current_p__type_25 X1).
Defined.

Remark rem_4075 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4076 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_4075 epsilon_mknows_current_p__type_25 X2).
Defined.

Remark rem_4077 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_4074 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_4076 epsilon_mknows_current_p__type_25 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4078 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_25 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intros A1 A2.
  case (rem_4077 epsilon_mknows_current_p__type_25 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_25 A1 A2. intros. apply trans___type_25_key_3;  tauto.
 clear  epsilon_mknows_current_p__type_25 A1 A2. tauto.
Defined.

Remark rem_4079 : (forall X:term, auto_knows_current X -> auto___type_25 X)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___type_25 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_25. intros X1 X2. intro H. intros.
  elim (rem_1066 X1 X2 H);  intros.
  apply (rem_4066 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_4072 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
  apply (rem_4078 epsilon_mknows_current_p__type_25 X1 X2);  tauto.
Defined.

Remark rem_4080 : forall X1:term, auto_knows_current X1 -> auto___type_25 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_current_p__type_25 1.
  intro X. case X.
  exact (rem_4026 epsilon_mknows_current_p__type_25 ).
  exact (rem_4017 epsilon_mknows_current_p__type_25 ).
  intros X1 X2;  exact (rem_4052 epsilon_mknows_current_p__type_25 X1 X2).
  intros X1 X2;  exact (rem_4014 epsilon_mknows_current_p__type_25 X1 X2).
  intros X1 X2;  exact (rem_4030 epsilon_mknows_current_p__type_25 X1 X2).
  intros X1 X2;  exact (rem_4050 epsilon_mknows_current_p__type_25 X1 X2).
  exact (rem_4056 epsilon_mknows_current_p__type_25 ).
  intros X1 X2;  exact (rem_4079 epsilon_mknows_current_p__type_25 X1 X2).
  exact (rem_4058 epsilon_mknows_current_p__type_25 ).
  intros X1 X2. intro H. elim (rem_1077 X1 X2 H).
  intros X1 X2;  exact (rem_4019 epsilon_mknows_current_p__type_25 X1 X2).
  intros X1 X2. intro H. elim (rem_1068 X1 X2 H).
  intros X1 X2;  exact (rem_4028 epsilon_mknows_current_p__type_25 X1 X2).
  intros X1;  exact (rem_4022 epsilon_mknows_current_p__type_25 X1).
  intros X1 X2. intro H. elim (rem_1073 X1 X2 H).
  intros X1 X2;  exact (rem_4024 epsilon_mknows_current_p__type_25 X1 X2).
   intro H. elim (rem_1074  H).
   intro H. elim (rem_1072  H).
  intros X1 X2. intro H. elim (rem_1071 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1070 X1 X2 H).
  intros X1;  exact (rem_4054 epsilon_mknows_current_p__type_25 X1).
  exact (rem_4060 epsilon_mknows_current_p__type_25 ).
  intros X1 X2. intro H. elim (rem_1076 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1069 X1 X2 H).
   intro H. elim (rem_1075  H).
Qed.

Remark rem_4081 : forall X1 X2:term, auto___def_109 X2 X1 -> auto___type_25 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_3759 X2 X1 H);  intros.
  apply (rem_4080 X1);  tauto.
Qed.

Remark rem_4082 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4083 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_4082 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4084 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4085 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_4084 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4086 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_4083 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_4085 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4087 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4086 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4088 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4089 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_4088 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4090 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4091 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_4090 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4092 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_4089 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_4091 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4093 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4092 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_2;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4094 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4095 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_4094 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4096 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4097 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_4096 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4098 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_4095 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_4097 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4099 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4098 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_3;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4100 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___type_26 X1 -> auto___type_26 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4101 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_26 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___type_26 X1 -> auto___type_26 X1). tauto. exact (rem_4100 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4102 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_111 X2 -> auto___def_111 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4103 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___def_111 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_111 X2 -> auto___def_111 X2). tauto. exact (rem_4102 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4104 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> (auto___type_26 X1 /\ auto___def_111 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___type_26 X1). 2:apply (rem_4101 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_111 X2). 2:apply (rem_4103 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4105 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4104 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_4;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4106 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4107 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_4106 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4108 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4109 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_4108 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4110 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4107 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4109 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4111 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4110 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_5;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4112 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4113 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_4112 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4114 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4115 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_4114 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4116 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_4113 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_4115 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4117 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4116 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_6;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4118 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4119 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_4118 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4120 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4121 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_4120 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4122 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_4119 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_4121 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4123 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4122 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_7;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4124 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___type_27 X1 -> auto___type_27 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4125 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_27 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___type_27 X1 -> auto___type_27 X1). tauto. exact (rem_4124 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4126 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_113 X2 -> auto___def_113 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4127 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___def_113 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_113 X2 -> auto___def_113 X2). tauto. exact (rem_4126 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4128 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> (auto___type_27 X1 /\ auto___def_113 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___type_27 X1). 2:apply (rem_4125 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_113 X2). 2:apply (rem_4127 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4129 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4128 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_8;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4130 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4131 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_4130 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4132 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4133 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_4132 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4134 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_4131 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_4133 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4135 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4134 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_9;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4136 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4137 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_4136 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4138 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4139 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_4138 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4140 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_4137 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_4139 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4141 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4140 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_10;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4142 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4143 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_4142 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4144 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4145 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_4144 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4146 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_4143 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_4145 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4147 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4146 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_crypt_11;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4148 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current (crypt X1 X2) -> auto___type_26 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_616 X1 X2 H);  intros.
  apply (rem_4087 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4093 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4099 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4105 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4111 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4117 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4123 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4129 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4135 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4141 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4147 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_4149 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26.  tauto.
Defined.

Remark rem_4150 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> auto___type_26 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26.  case (rem_4149 epsilon_mtestable_current_p__type_26). clear  epsilon_mtestable_current_p__type_26. intros. apply trans___type_26_bob_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26. tauto.
Defined.

Remark rem_4151 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> auto_testable_current bob -> auto___type_26 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intro H. intros.
  elim (rem_620 H);  intros.
  apply (rem_4150 epsilon_mtestable_current_p__type_26);  tauto.
Defined.

Remark rem_4152 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.  case (rem_4149 epsilon_mtestable_current_p__type_26). clear  epsilon_mtestable_current_p__type_26. intros. apply trans___type_26_noncea_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26. tauto.
Defined.

Remark rem_4153 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current (noncea_old X1 X2) -> auto___type_26 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_623 X1 X2 H);  intros.
  apply (rem_4152 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_4154 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4155 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_4154 epsilon_mtestable_current_p__type_26 X1);  assumption.
  tauto.
Defined.

Remark rem_4156 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_26 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1.
  case (rem_4155 epsilon_mtestable_current_p__type_26 X1 A1). clear  epsilon_mtestable_current_p__type_26 A1. intros. apply trans___type_26_r_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1. tauto.
Defined.

Remark rem_4157 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current (r_old X1 X2) -> auto___type_26 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_628 X1 X2 H);  intros.
  apply (rem_4156 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_4158 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4159 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1. intros A1.
  cut (auto_testable_current X1). 2:apply (rem_4158 epsilon_mtestable_current_p__type_26 X1);  assumption.
  tauto.
Defined.

Remark rem_4160 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto_testable_current X1 -> auto___type_26 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1. intros A1.
  case (rem_4159 epsilon_mtestable_current_p__type_26 X1 A1). clear  epsilon_mtestable_current_p__type_26 A1. intros. apply trans___type_26_p_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1. tauto.
Defined.

Remark rem_4161 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto_testable_current (p X1) -> auto___type_26 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1. intro H. intros.
  elim (rem_633 X1 H);  intros.
  apply (rem_4160 epsilon_mtestable_current_p__type_26 X1);  tauto.
Defined.

Remark rem_4162 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.  case (rem_4149 epsilon_mtestable_current_p__type_26). clear  epsilon_mtestable_current_p__type_26. intros. apply trans___type_26_passwd_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26. tauto.
Defined.

Remark rem_4163 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current (passwd_old X1 X2) -> auto___type_26 (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_636 X1 X2 H);  intros.
  apply (rem_4162 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_4164 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> auto___type_26 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26.  case (rem_4149 epsilon_mtestable_current_p__type_26). clear  epsilon_mtestable_current_p__type_26. intros. apply trans___type_26_alice_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26. tauto.
Defined.

Remark rem_4165 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> auto_testable_current alice -> auto___type_26 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intro H. intros.
  elim (rem_639 H);  intros.
  apply (rem_4164 epsilon_mtestable_current_p__type_26);  tauto.
Defined.

Remark rem_4166 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.  case (rem_4149 epsilon_mtestable_current_p__type_26). clear  epsilon_mtestable_current_p__type_26. intros. apply trans___type_26_nonceb_old_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26. tauto.
Defined.

Remark rem_4167 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current (nonceb_old X1 X2) -> auto___type_26 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_642 X1 X2 H);  intros.
  apply (rem_4166 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_4168 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto_testable_current X1 -> auto_testable_current X1). tauto. exact (rem_4158 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4169 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_4108 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4170 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_4168 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4169 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4171 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_26 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4170 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_dec_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4172 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current (dec X1 X2) -> auto___type_26 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_648 X1 X2 H);  intros.
  apply (rem_4171 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_4173 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4174 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_4173 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4175 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4176 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_4175 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4177 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_4174 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_4176 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4178 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_26 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4177 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_enc_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4179 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_26 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4170 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_enc_2;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4180 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4181 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_4180 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4182 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4183 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_4182 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4184 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_4181 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_4183 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4185 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_26 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4184 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_enc_3;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4186 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4187 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_4186 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4188 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4189 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_4188 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4190 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_4187 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_4189 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4191 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_26 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4190 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_enc_4;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4192 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current (enc X1 X2) -> auto___type_26 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_669 X1 X2 H);  intros.
  apply (rem_4178 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4179 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4185 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4191 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_4193 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4194 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X2. intros A1.
  cut (auto_testable_current X2). 2:apply (rem_4193 epsilon_mtestable_current_p__type_26 X2);  assumption.
  tauto.
Defined.

Remark rem_4195 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X2 -> auto___type_26 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1.
  case (rem_4194 epsilon_mtestable_current_p__type_26 X2 A1). clear  epsilon_mtestable_current_p__type_26 A1. intros. apply trans___type_26_cons_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1. tauto.
Defined.

Remark rem_4196 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto___type_26 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1.
  case (rem_4159 epsilon_mtestable_current_p__type_26 X1 A1). clear  epsilon_mtestable_current_p__type_26 A1. intros. apply trans___type_26_cons_2;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1. tauto.
Defined.

Remark rem_4197 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current (cons X1 X2) -> auto___type_26 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_675 X1 X2 H);  intros.
  apply (rem_4195 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4196 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_4198 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto_testable_current X1 -> auto___type_26 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1. intros A1.
  case (rem_4159 epsilon_mtestable_current_p__type_26 X1 A1). clear  epsilon_mtestable_current_p__type_26 A1. intros. apply trans___type_26_s_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1. tauto.
Defined.

Remark rem_4199 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto_testable_current (s X1) -> auto___type_26 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1. intro H. intros.
  elim (rem_678 X1 H);  intros.
  apply (rem_4198 epsilon_mtestable_current_p__type_26 X1);  tauto.
Defined.

Remark rem_4200 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> auto___type_26 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26.  case (rem_4149 epsilon_mtestable_current_p__type_26). clear  epsilon_mtestable_current_p__type_26. intros. apply trans___type_26_i_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26. tauto.
Defined.

Remark rem_4201 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> auto_testable_current i -> auto___type_26 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intro H. intros.
  elim (rem_681 H);  intros.
  apply (rem_4200 epsilon_mtestable_current_p__type_26);  tauto.
Defined.

Remark rem_4202 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> auto___type_26 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26.  case (rem_4149 epsilon_mtestable_current_p__type_26). clear  epsilon_mtestable_current_p__type_26. intros. apply trans___type_26_nil_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26. tauto.
Defined.

Remark rem_4203 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> auto_testable_current nil -> auto___type_26 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intro H. intros.
  elim (rem_684 H);  intros.
  apply (rem_4202 epsilon_mtestable_current_p__type_26);  tauto.
Defined.

Remark rem_4204 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> auto___type_26 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26.  case (rem_4149 epsilon_mtestable_current_p__type_26). clear  epsilon_mtestable_current_p__type_26. intros. apply trans___type_26_server_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26. tauto.
Defined.

Remark rem_4205 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> auto_testable_current server -> auto___type_26 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intro H. intros.
  elim (rem_687 H);  intros.
  apply (rem_4204 epsilon_mtestable_current_p__type_26);  tauto.
Defined.

Remark rem_4206 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_119 X1 -> auto___def_119 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4207 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_119 X1 -> auto___def_119 X1). tauto. exact (rem_4206 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4208 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___type_31 X2 -> auto___type_31 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4209 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___type_31 X2 -> auto___type_31 X2). tauto. exact (rem_4208 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4210 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_4207 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_4209 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4211 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_26 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4210 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_key_1;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4212 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_114 X1 -> auto___def_114 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4213 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_114 X1 -> auto___def_114 X1). tauto. exact (rem_4212 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4214 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_66 X2 -> auto___def_66 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4215 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_66 X2 -> auto___def_66 X2). tauto. exact (rem_4214 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4216 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_4213 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_4215 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4217 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___type_26 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4216 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_key_2;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4218 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4219 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4218 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4220 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4221 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_4220 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4222 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4219 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_4221 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4223 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_26 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4222 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_key_3;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4224 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4225 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_4224 epsilon_mtestable_current_p__type_26 X1).
Defined.

Remark rem_4226 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4227 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_4226 epsilon_mtestable_current_p__type_26 X2).
Defined.

Remark rem_4228 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_4225 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_4227 epsilon_mtestable_current_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4229 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_26 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_4228 epsilon_mtestable_current_p__type_26 X1 X2 A1 A2). clear  epsilon_mtestable_current_p__type_26 A1 A2. intros. apply trans___type_26_key_4;  tauto.
 clear  epsilon_mtestable_current_p__type_26 A1 A2. tauto.
Defined.

Remark rem_4230 : (forall X:term, auto_testable_current X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current (key X1 X2) -> auto___type_26 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_713 X1 X2 H);  intros.
  apply (rem_4211 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4217 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4223 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
  apply (rem_4229 epsilon_mtestable_current_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_4231 : forall X1:term, auto_testable_current X1 -> auto___type_26 X1. (* Induct. *)
Proof.
  fix epsilon_mtestable_current_p__type_26 1.
  intro X. case X.
  exact (rem_4165 epsilon_mtestable_current_p__type_26 ).
  exact (rem_4151 epsilon_mtestable_current_p__type_26 ).
  intros X1 X2;  exact (rem_4197 epsilon_mtestable_current_p__type_26 X1 X2).
  intros X1 X2;  exact (rem_4148 epsilon_mtestable_current_p__type_26 X1 X2).
  intros X1 X2;  exact (rem_4172 epsilon_mtestable_current_p__type_26 X1 X2).
  intros X1 X2;  exact (rem_4192 epsilon_mtestable_current_p__type_26 X1 X2).
  exact (rem_4201 epsilon_mtestable_current_p__type_26 ).
  intros X1 X2;  exact (rem_4230 epsilon_mtestable_current_p__type_26 X1 X2).
  exact (rem_4203 epsilon_mtestable_current_p__type_26 ).
  intros X1 X2. intro H. elim (rem_723 X1 X2 H).
  intros X1 X2;  exact (rem_4153 epsilon_mtestable_current_p__type_26 X1 X2).
  intros X1 X2. intro H. elim (rem_715 X1 X2 H).
  intros X1 X2;  exact (rem_4167 epsilon_mtestable_current_p__type_26 X1 X2).
  intros X1;  exact (rem_4161 epsilon_mtestable_current_p__type_26 X1).
  intros X1 X2. intro H. elim (rem_719 X1 X2 H).
  intros X1 X2;  exact (rem_4163 epsilon_mtestable_current_p__type_26 X1 X2).
   intro H. elim (rem_720  H).
   intro H. elim (rem_718  H).
  intros X1 X2. intro H. elim (rem_717 X1 X2 H).
  intros X1 X2;  exact (rem_4157 epsilon_mtestable_current_p__type_26 X1 X2).
  intros X1;  exact (rem_4199 epsilon_mtestable_current_p__type_26 X1).
  exact (rem_4205 epsilon_mtestable_current_p__type_26 ).
  intros X1 X2. intro H. elim (rem_722 X1 X2 H).
  intros X1 X2. intro H. elim (rem_716 X1 X2 H).
   intro H. elim (rem_721  H).
Qed.

Remark rem_4232 : forall X1 X2:term, auto_agent X2 -> auto_agent X1 -> auto___def_73 (session_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1792 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_73_session_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4233 : forall X1:term, auto___def_33 X1 -> auto___def_33 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_4234 : forall X1 X2:term, auto___def_33 X1 -> auto___def_34 X2 -> auto___def_33 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_33 X1 -> auto___def_33 X1). tauto. exact (rem_4233 X1).
Qed.

Remark rem_4235 : forall X2:term, auto___def_34 X2 -> auto___def_34 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_4236 : forall X1 X2:term, auto___def_33 X1 -> auto___def_34 X2 -> auto___def_34 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 X2 -> auto___def_34 X2). tauto. exact (rem_4235 X2).
Qed.

Remark rem_4237 : forall X1 X2:term, auto___def_33 X1 -> auto___def_34 X2 -> (auto___def_33 X1 /\ auto___def_34 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_33 X1). 2:apply (rem_4234 X1 X2);  assumption.
  cut (auto___def_34 X2). 2:apply (rem_4236 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_4238 : forall X1 X2:term, auto___def_33 X1 -> auto___def_34 X2 -> auto___def_29 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_4237 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_29_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4239 : forall X1 X2:term, auto___def_34 X2 -> auto___def_33 X1 -> auto___def_29 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_33 X1 -> auto___def_34 X2 -> auto___def_29 (key X1 X2)). tauto. exact (rem_4238 X1 X2).
Qed.

Remark rem_4240 : forall X1 X2 X3:term, auto___def_24 X3 -> auto_knows_old X1 -> auto___def_39 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_278 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_39_nonceb_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4241 : forall X1 X2 X3:term, auto___def_28 X3 -> auto_knows_old X1 -> auto___def_39 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_281 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_39_nonceb_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4242 : forall X1 X2 X3:term, auto___type_7 X3 -> auto_knows_old X1 -> auto___def_39 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_284 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_39_nonceb_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4243 : forall X1 X2 X3:term, auto___def_35 X2 X3 X1 -> auto___def_39 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_2522 X2 X3 X1 H);  intros.
  apply (rem_4240 X1 X2 X3);  tauto.
  apply (rem_4241 X1 X2 X3);  tauto.
  apply (rem_4242 X1 X2 X3);  tauto.
Qed.

Remark rem_4244 : forall X1:term, auto___def_81 X1 -> auto___def_81 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_4245 : forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> auto___def_81 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_81 X1). tauto. exact (rem_4244 X1).
Qed.

Remark rem_4246 : forall X2:term, auto___def_82 X2 -> auto___def_82 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_4247 : forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> auto___def_82 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_82 X2 -> auto___def_82 X2). tauto. exact (rem_4246 X2).
Qed.

Remark rem_4248 : forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> (auto___def_81 X1 /\ auto___def_82 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_81 X1). 2:apply (rem_4245 X1 X2);  assumption.
  cut (auto___def_82 X2). 2:apply (rem_4247 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_4249 : forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> auto___def_79 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_4248 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_79_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4250 : forall X1 X2:term, auto___def_82 X2 -> auto___def_81 X1 -> auto___def_79 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_82 X2 -> auto___def_79 (crypt X1 X2)). tauto. exact (rem_4249 X1 X2).
Qed.

Remark rem_4251 : (forall X:term, auto_agent X -> auto___type_29 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p__type_29.  tauto.
Defined.

Remark rem_4252 : (forall X:term, auto_agent X -> auto___type_29 X)
    -> auto___type_29 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_29.  case (rem_4251 epsilon_magent_p__type_29). clear  epsilon_magent_p__type_29. intros. apply trans___type_29_bob_1;  tauto.
 clear  epsilon_magent_p__type_29. tauto.
Defined.

Remark rem_4253 : (forall X:term, auto_agent X -> auto___type_29 X)
    -> auto_agent bob -> auto___type_29 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_29. intro H. intros.
  elim (rem_1083 H);  intros.
  apply (rem_4252 epsilon_magent_p__type_29);  tauto.
Defined.

Remark rem_4254 : (forall X:term, auto_agent X -> auto___type_29 X)
    -> auto___type_29 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_29.  case (rem_4251 epsilon_magent_p__type_29). clear  epsilon_magent_p__type_29. intros. apply trans___type_29_alice_1;  tauto.
 clear  epsilon_magent_p__type_29. tauto.
Defined.

Remark rem_4255 : (forall X:term, auto_agent X -> auto___type_29 X)
    -> auto_agent alice -> auto___type_29 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_29. intro H. intros.
  elim (rem_1086 H);  intros.
  apply (rem_4254 epsilon_magent_p__type_29);  tauto.
Defined.

Remark rem_4256 : (forall X:term, auto_agent X -> auto___type_29 X)
    -> auto___type_29 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_29.  case (rem_4251 epsilon_magent_p__type_29). clear  epsilon_magent_p__type_29. intros. apply trans___type_29_i_1;  tauto.
 clear  epsilon_magent_p__type_29. tauto.
Defined.

Remark rem_4257 : (forall X:term, auto_agent X -> auto___type_29 X)
    -> auto_agent i -> auto___type_29 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_29. intro H. intros.
  elim (rem_1089 H);  intros.
  apply (rem_4256 epsilon_magent_p__type_29);  tauto.
Defined.

Remark rem_4258 : (forall X:term, auto_agent X -> auto___type_29 X)
    -> auto___type_29 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_29.  case (rem_4251 epsilon_magent_p__type_29). clear  epsilon_magent_p__type_29. intros. apply trans___type_29_server_1;  tauto.
 clear  epsilon_magent_p__type_29. tauto.
Defined.

Remark rem_4259 : (forall X:term, auto_agent X -> auto___type_29 X)
    -> auto_agent server -> auto___type_29 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_29. intro H. intros.
  elim (rem_1092 H);  intros.
  apply (rem_4258 epsilon_magent_p__type_29);  tauto.
Defined.

Remark rem_4260 : forall X1:term, auto_agent X1 -> auto___type_29 X1. (* Induct. *)
Proof.
  fix epsilon_magent_p__type_29 1.
  intro X. case X.
  exact (rem_4255 epsilon_magent_p__type_29 ).
  exact (rem_4253 epsilon_magent_p__type_29 ).
  intros X1 X2. intro H. elim (rem_1108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1094 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1106 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1107 X1 X2 H).
  exact (rem_4257 epsilon_magent_p__type_29 ).
  intros X1 X2. intro H. elim (rem_1114 X1 X2 H).
   intro H. elim (rem_1112  H).
  intros X1 X2. intro H. elim (rem_1113 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1097 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1105 X1 X2 H).
  intros X1. intro H. elim (rem_1100 X1 H).
  intros X1 X2. intro H. elim (rem_1103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1102 X1 X2 H).
   intro H. elim (rem_1104  H).
   intro H. elim (rem_1101  H).
  intros X1 X2. intro H. elim (rem_1099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1098 X1 X2 H).
  intros X1. intro H. elim (rem_1109 X1 H).
  exact (rem_4259 epsilon_magent_p__type_29 ).
  intros X1 X2. intro H. elim (rem_1111 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1096 X1 X2 H).
   intro H. elim (rem_1110  H).
Qed.

Remark rem_4261 : forall X1 X2:term, auto_agent X1 -> auto_knows_current X2 -> auto_testable_current X2 -> auto___type_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_agent X1 -> auto___type_29 X1). tauto. exact (rem_4260 X1).
Qed.

Remark rem_4262 : (forall X:term, auto___def_13 X -> auto___type_29 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4263 : (forall X:term, auto___def_13 X -> auto___type_29 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_13_p__type_29. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_4262 epsilon_m__def_13_p__type_29 X1).
Defined.

Remark rem_4264 : (forall X:term, auto___def_13 X -> auto___type_29 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4265 : (forall X:term, auto___def_13 X -> auto___type_29 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_13_p__type_29. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_4264 epsilon_m__def_13_p__type_29 X2).
Defined.

Remark rem_4266 : (forall X:term, auto___def_13 X -> auto___type_29 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_13_p__type_29. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_4263 epsilon_m__def_13_p__type_29 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_4265 epsilon_m__def_13_p__type_29 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4267 : (forall X:term, auto___def_13 X -> auto___type_29 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_29 (session_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_13_p__type_29. intros X1 X2. intros A1 A2.
  case (rem_4266 epsilon_m__def_13_p__type_29 X1 X2 A1 A2). clear  epsilon_m__def_13_p__type_29 A1 A2. intros. apply trans___type_29_session_old_1;  tauto.
 clear  epsilon_m__def_13_p__type_29 A1 A2. tauto.
Defined.

Remark rem_4268 : (forall X:term, auto___def_13 X -> auto___type_29 X)
    -> forall X1 X2:term, auto___def_13 (session_old X1 X2) -> auto___type_29 (session_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_13_p__type_29. intros X1 X2. intro H. intros.
  elim (rem_1761 X1 X2 H);  intros.
  apply (rem_4267 epsilon_m__def_13_p__type_29 X1 X2);  tauto.
Defined.

Remark rem_4269 : forall X1:term, auto___def_13 X1 -> auto___type_29 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_13_p__type_29 1.
  intro X. case X.
   intro H. elim (rem_1773  H).
   intro H. elim (rem_1765  H).
  intros X1 X2. intro H. elim (rem_1778 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1763 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1776 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1777 X1 X2 H).
   intro H. elim (rem_1782  H).
  intros X1 X2. intro H. elim (rem_1786 X1 X2 H).
   intro H. elim (rem_1783  H).
  intros X1 X2. intro H. elim (rem_1785 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1766 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1764 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1775 X1 X2 H).
  intros X1. intro H. elim (rem_1769 X1 H).
  intros X1 X2. intro H. elim (rem_1772 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1771 X1 X2 H).
   intro H. elim (rem_1774  H).
   intro H. elim (rem_1770  H).
  intros X1 X2. intro H. elim (rem_1768 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1767 X1 X2 H).
  intros X1. intro H. elim (rem_1779 X1 H).
   intro H. elim (rem_1784  H).
  intros X1 X2. intro H. elim (rem_1781 X1 X2 H).
  intros X1 X2;  exact (rem_4268 epsilon_m__def_13_p__type_29 X1 X2).
   intro H. elim (rem_1780  H).
Qed.

Remark rem_4270 : forall X1 X2:term, auto___def_13 X1 -> auto_knows_current X2 -> auto_testable_current X2 -> auto___type_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_13 X1 -> auto___type_29 X1). tauto. exact (rem_4269 X1).
Qed.

Remark rem_4271 : forall X1 X2:term, auto___def_13 X1 -> auto___def_17 X2 -> auto_testable_current X2 -> auto___type_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_13 X1 -> auto___type_29 X1). tauto. exact (rem_4269 X1).
Qed.

Remark rem_4272 : forall X1 X2:term, auto___def_63 X1 X2 -> or_3
    (auto_agent X1 /\ auto_knows_current X2)
    (auto___def_13 X1 /\ auto_knows_current X2)
    (auto___def_13 X1 /\ auto___def_17 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_4273 : forall X1 X2:term, auto___def_63 X1 X2 -> auto_testable_current X2 -> auto___type_29 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_4272 X1 X2 H);  intros.
  apply (rem_4261 X1 X2);  tauto.
  apply (rem_4270 X1 X2);  tauto.
  apply (rem_4271 X1 X2);  tauto.
Qed.

Remark rem_4274 : forall X1 X2:term, auto___def_36 X2 -> auto___def_41 prv -> auto___def_42 X1 -> auto___def_3 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_41 prv -> False). tauto.
  exact (rem_2154).
Qed.

Remark rem_4275 : forall X1 X2:term, auto___def_41 prv -> auto___def_42 X1 -> auto___def_36 X2 -> auto___def_3 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X2 -> auto___def_41 prv -> auto___def_42 X1 -> auto___def_3 X1 X2). tauto. exact (rem_4274 X1 X2).
Qed.

Remark rem_4276 : forall X1 X2:term, auto___def_36 X2 -> auto___def_37 (key prv X1) -> auto___def_3 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1405 prv X1 H);  intros.
  apply (rem_4275 X1 X2);  tauto.
Qed.

Remark rem_4277 : forall X1 X2:term, auto___def_24 X2 -> auto___def_26 prv -> auto___type_4 X1 -> auto___def_3 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_26 prv -> False). tauto.
  exact (rem_2179).
Qed.

Remark rem_4278 : forall X1 X2:term, auto___def_26 prv -> auto___type_4 X1 -> auto___def_24 X2 -> auto___def_3 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X2 -> auto___def_26 prv -> auto___type_4 X1 -> auto___def_3 X1 X2). tauto. exact (rem_4277 X1 X2).
Qed.

Remark rem_4279 : forall X1 X2:term, auto___def_24 X2 -> auto___def_25 (key prv X1) -> auto___def_3 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1444 prv X1 H);  intros.
  apply (rem_4278 X1 X2);  tauto.
Qed.

Remark rem_4280 : forall X1 X2:term, auto___def_45 prv -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_3 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_45 prv -> False). tauto.
  exact (rem_2184).
Qed.

Remark rem_4281 : forall X1 X2:term, auto___def_45 prv -> auto___type_8 X1 -> auto___type_7 X2 -> auto___def_3 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_45 prv -> auto___type_7 X2 -> auto___type_8 X1 -> auto___def_3 X1 X2). tauto. exact (rem_4280 X1 X2).
Qed.

Remark rem_4282 : forall X1 X2:term, auto___def_44 (key prv X1) -> auto___type_7 X2 -> auto___def_3 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1450 prv X1 H);  intros.
  apply (rem_4281 X1 X2);  tauto.
Qed.

Remark rem_4283 : forall X1 X2:term, auto___type_7 X2 -> auto___def_44 (key prv X1) -> auto___def_3 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_44 (key prv X1) -> auto___type_7 X2 -> auto___def_3 X1 X2). tauto. exact (rem_4282 X1 X2).
Qed.

Remark rem_4284 : forall X1 X2:term, auto___def_61 prv -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_62 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_62 X1 -> auto___def_62 X1). tauto. exact (rem_2159 X1).
Qed.

Remark rem_4285 : forall X1 X2:term, auto___def_61 prv -> auto___def_62 X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_1258 X2).
Qed.

Remark rem_4286 : forall X1 X2:term, auto___def_61 prv -> auto___def_62 X1 -> auto_knows_old X2 -> (auto___def_62 X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_62 X1). 2:apply (rem_4284 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_4285 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_4287 : forall X1 X2:term, auto___def_61 prv -> auto___def_62 X1 -> auto_knows_old X2 -> auto___def_3 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_4286 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_3_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4288 : forall X1 X2:term, auto___def_51 prv -> auto_agent X1 -> auto_knows_old X2 -> auto___def_3 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_51 prv -> False). tauto.
  exact (rem_1359).
Qed.

Remark rem_4289 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old (key prv X1) -> auto___def_3 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1361 prv X1 H);  intros.
  apply (rem_4287 X1 X2);  tauto.
  apply (rem_4288 X1 X2);  tauto.
Qed.

Remark rem_4290 : forall X1 X2:term, auto_knows_old (crypt X2 (key prv X1)) -> auto___def_3 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1860 X2 (key prv X1) H);  intros.
  apply (rem_4276 X1 X2);  tauto.
  apply (rem_4279 X1 X2);  tauto.
  apply (rem_4283 X1 X2);  tauto.
  apply (rem_4289 X1 X2);  tauto.
Qed.

Remark rem_4291 : forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_2385 X1).
Qed.

Remark rem_4292 : forall X2:term, auto___def_73 X2 -> auto___def_73 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_4293 : forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___def_73 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_73 X2 -> auto___def_73 X2). tauto. exact (rem_4292 X2).
Qed.

Remark rem_4294 : forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> (auto___def_12 X1 /\ auto___def_73 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_4291 X1 X2);  assumption.
  cut (auto___def_73 X2). 2:apply (rem_4293 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_4295 : forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___def_71 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_4294 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_71_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4296 : forall X1 X2:term, auto___def_73 X2 -> auto___def_12 X1 -> auto___def_71 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_73 X2 -> auto___def_71 (key X1 X2)). tauto. exact (rem_4295 X1 X2).
Qed.

Remark rem_4297 : forall X1 X2 X3:term, auto_knows_old X3 -> auto_knows_old X1 -> auto___def_21 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_865 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_21_r_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4298 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_knows_old X3 -> auto___def_21 (r_old X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X1 -> auto___def_21 (r_old X1 X2)). tauto. exact (rem_4297 X1 X2 X3).
Qed.

Remark rem_4299 : forall X1 X2 X3:term, auto___def_18 X1 X3 -> auto___def_21 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_868 X1 X3 H);  intros.
  apply (rem_4298 X1 X2 X3);  tauto.
Qed.

Remark rem_4300 : auto___def_61 prv. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_61_prv_1;  tauto.
 tauto.
Qed.

Remark rem_4301 : forall X1 X2 X3:term, auto___def_75 X3 -> auto_knows_current X1 -> auto___def_76 (passwd_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_1714 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_76_passwd_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4302 : forall X1 X2 X3:term, auto___def_79 X3 -> auto_knows_current X1 -> auto___def_76 (passwd_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2.
  case (rem_1717 X1 X3 A1 A2). clear  A1 A2. intros. apply trans___def_76_passwd_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4303 : forall X1 X2 X3:term, auto___def_71 X3 -> auto_agent X2 -> auto_agent X1 -> auto___def_76 (passwd_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1730 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_76_passwd_current_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4304 : forall X1 X2 X3:term, auto_agent X2 -> auto___def_71 X3 -> auto_agent X1 -> auto___def_76 (passwd_current X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto___def_71 X3 -> auto_agent X2 -> auto_agent X1 -> auto___def_76 (passwd_current X1 X2)). tauto. exact (rem_4303 X1 X2 X3).
Qed.

Remark rem_4305 : forall X1 X2 X3:term, auto___def_74 X2 X3 X1 -> auto___def_76 (passwd_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_830 X2 X3 X1 H);  intros.
  apply (rem_4301 X1 X2 X3);  tauto.
  apply (rem_4302 X1 X2 X3);  tauto.
  apply (rem_4304 X1 X2 X3);  tauto.
Qed.

Remark rem_4306 : auto___def_51 pub. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans___def_51_pub_1;  tauto.
 tauto.
Qed.

Remark rem_4307 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (cons (enc X3 (passwd_current X2 X1)) nil) -> auto_knows_current (crypt X4 (key sym (r_current X2 X1))) -> auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_1414 X2).
Qed.

Remark rem_4308 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (cons (enc X3 (passwd_current X2 X1)) nil) -> auto_knows_current (crypt X4 (key sym (r_current X2 X1))) -> auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto_knows_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  cut (auto_knows_current X2). 2:apply (rem_4307 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_4309 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (cons (enc X3 (passwd_current X2 X1)) nil) -> auto_knows_current (crypt X4 (key sym (r_current X2 X1))) -> auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto___def_107 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4.
  case (rem_4308 X1 X2 X3 X4 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans___def_107_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4310 : forall X1 X2 X3 X4:term, auto_knows_current (cons X2 (cons (enc X3 (passwd_current X2 X1)) nil)) -> auto_knows_current (crypt X4 (key sym (r_current X2 X1))) -> auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto___def_107 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1034 X2 (cons (enc X3 (passwd_current X2 X1)) nil) H);  intros.
  apply (rem_4309 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_4311 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto_knows_current (crypt X3 (key sym (r_current X2 X1))) -> auto_knows_current (cons X2 (cons (enc X4 (passwd_current X2 X1)) nil)) -> auto___def_107 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto_knows_current (cons X2 (cons (enc X3 (passwd_current X2 X1)) nil)) -> auto_knows_current (crypt X4 (key sym (r_current X2 X1))) -> auto_knows_current (crypt (nonceb_current X2 X1) (key sym (r_current X2 X1))) -> auto___def_107 X1 X2). tauto. exact (rem_4310 X1 X2 X3 X4).
Qed.

Remark rem_4312 : (forall X:term, auto___def_62 X -> auto___def_64 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_62_p__def_64.  tauto.
Defined.

Remark rem_4313 : (forall X:term, auto___def_62 X -> auto___def_64 X)
    -> auto___def_64 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_62_p__def_64.  case (rem_4312 epsilon_m__def_62_p__def_64). clear  epsilon_m__def_62_p__def_64. intros. apply trans___def_64_i_1;  tauto.
 clear  epsilon_m__def_62_p__def_64. tauto.
Defined.

Remark rem_4314 : (forall X:term, auto___def_62 X -> auto___def_64 X)
    -> auto___def_62 i -> auto___def_64 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_p__def_64. intro H. intros.
  elim (rem_312 H);  intros.
  apply (rem_4313 epsilon_m__def_62_p__def_64);  tauto.
Defined.

Remark rem_4315 : forall X1:term, auto___def_62 X1 -> auto___def_64 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_62_p__def_64 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_4314 epsilon_m__def_62_p__def_64 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_4316 : forall X1:term, auto___def_61 prv -> auto___def_62 X1 -> auto___def_64 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1.
  cut (auto___def_62 X1 -> auto___def_64 X1). tauto. exact (rem_4315 X1).
Qed.

Remark rem_4317 : forall X1:term, auto___def_51 prv -> auto_agent X1 -> auto___def_64 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_51 prv -> False). tauto.
  exact (rem_1359).
Qed.

Remark rem_4318 : forall X1:term, auto___def_12 prv -> auto___def_13 X1 -> auto___def_64 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_12 prv -> False). tauto.
  exact (rem_2150).
Qed.

Remark rem_4319 : forall X1:term, auto_knows_current (key prv X1) -> auto___def_64 X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_1066 prv X1 H);  intros.
  apply (rem_4316 X1);  tauto.
  apply (rem_4317 X1);  tauto.
  apply (rem_4318 X1);  tauto.
Qed.

(* [appp] Proofs that all approximation clauses hold. *)


Remark rem_4320 : (forall X:term, auto___def_40 X -> auto_testable_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_ptestable_old.  tauto.
Defined.

Remark rem_4321 : (forall X:term, auto___def_40 X -> auto_testable_old X)
    -> auto_testable_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_ptestable_old.  case (rem_4320 epsilon_m__def_40_ptestable_old). clear  epsilon_m__def_40_ptestable_old. intros. apply trans_testable_old_nil_1;  tauto.
 clear  epsilon_m__def_40_ptestable_old. tauto.
Defined.

Remark rem_4322 : (forall X:term, auto___def_40 X -> auto_testable_old X)
    -> auto___def_40 nil -> auto_testable_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_ptestable_old. intro H. intros.
  elim (rem_2250 H);  intros.
  apply (rem_4321 epsilon_m__def_40_ptestable_old);  tauto.
Defined.

Remark rem_4323 : forall X2:term, auto___def_40 X2 -> auto_testable_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_40_ptestable_old 1.
  intro X. case X.
   intro H. elim (rem_2263  H).
   intro H. elim (rem_2255  H).
  intros X1 X2. intro H. elim (rem_2268 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2252 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2266 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2267 X1 X2 H).
   intro H. elim (rem_2272  H).
  intros X1 X2. intro H. elim (rem_2275 X1 X2 H).
  exact (rem_4322 epsilon_m__def_40_ptestable_old ).
  intros X1 X2. intro H. elim (rem_2274 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2256 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2253 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2265 X1 X2 H).
  intros X1. intro H. elim (rem_2259 X1 H).
  intros X1 X2. intro H. elim (rem_2262 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2261 X1 X2 H).
   intro H. elim (rem_2264  H).
   intro H. elim (rem_2260  H).
  intros X1 X2. intro H. elim (rem_2258 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2257 X1 X2 H).
  intros X1. intro H. elim (rem_2269 X1 H).
   intro H. elim (rem_2273  H).
  intros X1 X2. intro H. elim (rem_2271 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2254 X1 X2 H).
   intro H. elim (rem_2270  H).
Qed.

Remark rem_4324 : (forall X:term, auto___def_38 X -> auto_testable_old X)
    -> forall X2:term, auto___def_40 X2 -> auto_testable_old X2. (* Cut history. *)
Proof.  intros epsilon_m__def_38_ptestable_old. exact (rem_4323).
Defined.

Remark rem_4325 : (forall X:term, auto___def_38 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto_testable_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_38_ptestable_old. intros X1 X2.
  cut (auto___def_40 X2 -> auto_testable_old X2). tauto. exact (rem_4324 epsilon_m__def_38_ptestable_old X2).
Defined.

Remark rem_4326 : (forall X:term, auto___def_38 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto_testable_old X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_38_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto_testable_old X2). 2:apply (rem_4325 epsilon_m__def_38_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4327 : (forall X:term, auto___def_38 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto_testable_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_38_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4326 epsilon_m__def_38_ptestable_old X1 X2 A1 A2). clear  epsilon_m__def_38_ptestable_old A1 A2. intros. apply trans_testable_old_cons_1;  tauto.
 clear  epsilon_m__def_38_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4328 : (forall X:term, auto___def_38 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_38 (cons X1 X2) -> auto_testable_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_38_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_1929 X1 X2 H);  intros.
  apply (rem_4327 epsilon_m__def_38_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4329 : forall X2:term, auto___def_38 X2 -> auto_testable_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_38_ptestable_old 1.
  intro X. case X.
   intro H. elim (rem_2293  H).
   intro H. elim (rem_2285  H).
  intros X1 X2;  exact (rem_4328 epsilon_m__def_38_ptestable_old X1 X2).
  intros X1 X2. intro H. elim (rem_2282 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2296 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2297 X1 X2 H).
   intro H. elim (rem_2301  H).
  intros X1 X2. intro H. elim (rem_2305 X1 X2 H).
   intro H. elim (rem_2302  H).
  intros X1 X2. intro H. elim (rem_2304 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2286 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2283 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2295 X1 X2 H).
  intros X1. intro H. elim (rem_2289 X1 H).
  intros X1 X2. intro H. elim (rem_2292 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2291 X1 X2 H).
   intro H. elim (rem_2294  H).
   intro H. elim (rem_2290  H).
  intros X1 X2. intro H. elim (rem_2288 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2287 X1 X2 H).
  intros X1. intro H. elim (rem_2298 X1 H).
   intro H. elim (rem_2303  H).
  intros X1 X2. intro H. elim (rem_2300 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2284 X1 X2 H).
   intro H. elim (rem_2299  H).
Qed.

Remark rem_4330 : (forall X:term, auto___def_36 X -> auto_testable_old X)
    -> forall X2:term, auto___def_38 X2 -> auto_testable_old X2. (* Cut history. *)
Proof.  intros epsilon_m__def_36_ptestable_old. exact (rem_4329).
Defined.

Remark rem_4331 : (forall X:term, auto___def_36 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto_testable_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_36_ptestable_old. intros X1 X2.
  cut (auto___def_38 X2 -> auto_testable_old X2). tauto. exact (rem_4330 epsilon_m__def_36_ptestable_old X2).
Defined.

Remark rem_4332 : (forall X:term, auto___def_36 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto_testable_old X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_36_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto_testable_old X2). 2:apply (rem_4331 epsilon_m__def_36_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4333 : (forall X:term, auto___def_36 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto_testable_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_36_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4332 epsilon_m__def_36_ptestable_old X1 X2 A1 A2). clear  epsilon_m__def_36_ptestable_old A1 A2. intros. apply trans_testable_old_cons_1;  tauto.
 clear  epsilon_m__def_36_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4334 : (forall X:term, auto___def_36 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 (cons X1 X2) -> auto_testable_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_36_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_1935 X1 X2 H);  intros.
  apply (rem_4333 epsilon_m__def_36_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4335 : forall X1:term, auto___def_36 X1 -> auto_testable_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_36_ptestable_old 1.
  intro X. case X.
   intro H. elim (rem_1993  H).
   intro H. elim (rem_1990  H).
  intros X1 X2;  exact (rem_4334 epsilon_m__def_36_ptestable_old X1 X2).
  intros X1 X2. intro H. elim (rem_2312 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2325 X1 X2 H).
   intro H. elim (rem_1984  H).
  intros X1 X2. intro H. elim (rem_2331 X1 X2 H).
   intro H. elim (rem_2329  H).
  intros X1 X2. intro H. elim (rem_2330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2313 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2323 X1 X2 H).
  intros X1. intro H. elim (rem_2318 X1 H).
  intros X1 X2. intro H. elim (rem_2321 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2320 X1 X2 H).
   intro H. elim (rem_2322  H).
   intro H. elim (rem_2319  H).
  intros X1 X2. intro H. elim (rem_2317 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2316 X1 X2 H).
  intros X1. intro H. elim (rem_2326 X1 H).
   intro H. elim (rem_1998  H).
  intros X1 X2. intro H. elim (rem_2328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2314 X1 X2 H).
   intro H. elim (rem_2327  H).
Qed.

Remark rem_4336 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_36 X1 -> auto_testable_old X1). tauto. exact (rem_4335 X1).
Qed.

Remark rem_4337 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4338 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_4337 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4339 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4340 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_4339 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4341 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_4338 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_4340 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4342 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4341 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4343 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___type_12 X1 -> auto___type_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4344 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___type_12 X1 -> auto___type_12 X1). tauto. exact (rem_4343 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4345 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto___def_54 X2 -> auto___def_54 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4346 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___def_54 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_54 X2 -> auto___def_54 X2). tauto. exact (rem_4345 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4347 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> (auto___type_12 X1 /\ auto___def_54 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_4344 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto___def_54 X2). 2:apply (rem_4346 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4348 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4347 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_2;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4349 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4350 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_4349 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4351 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4352 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_4351 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4353 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_4350 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_4352 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4354 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4353 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_3;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4355 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___type_11 X1 -> auto___type_11 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4356 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___type_11 X1 -> auto___type_11 X1). tauto. exact (rem_4355 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4357 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4358 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4357 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4359 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> (auto___type_11 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_4356 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4358 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4360 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4359 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_4;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4361 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4362 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_4361 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4363 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4364 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_4363 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4365 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_4362 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_4364 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4366 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4365 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_5;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4367 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4368 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_4367 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4369 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4370 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_4369 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4371 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_4368 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_4370 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4372 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4371 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_6;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4373 : forall X1 X2:term, auto___type_12 (crypt X1 X2) -> or_6
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___type_12 X1 /\ auto___def_54 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_11 X1 /\ auto___def_52 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_6_intro_1; tauto.
  intros. apply or_6_intro_2; tauto.
  intros. apply or_6_intro_3; tauto.
  intros. apply or_6_intro_4; tauto.
  intros. apply or_6_intro_5; tauto.
  intros. apply or_6_intro_6; tauto.
Qed.

Remark rem_4374 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 (crypt X1 X2) -> auto_testable_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_4373 X1 X2 H);  intros.
  apply (rem_4342 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4348 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4354 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4360 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4366 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4372 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4375 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old.  tauto.
Defined.

Remark rem_4376 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> auto_testable_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old.  case (rem_4375 epsilon_m__type_12_ptestable_old). clear  epsilon_m__type_12_ptestable_old. intros. apply trans_testable_old_bob_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old. tauto.
Defined.

Remark rem_4377 : auto___type_12 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4378 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> auto___type_12 bob -> auto_testable_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intro H. intros.
  elim (rem_4377 H);  intros.
  apply (rem_4376 epsilon_m__type_12_ptestable_old);  tauto.
Defined.

Remark rem_4379 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4380 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1. intros A1.
  cut (auto_testable_old X1). 2:apply (rem_4379 epsilon_m__type_12_ptestable_old X1);  assumption.
  tauto.
Defined.

Remark rem_4381 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1. intros A1.
  case (rem_4380 epsilon_m__type_12_ptestable_old X1 A1). clear  epsilon_m__type_12_ptestable_old A1. intros. apply trans_testable_old_p_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1. tauto.
Defined.

Remark rem_4382 : forall X1:term, auto___type_12 (p X1) -> or_1
    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4383 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___type_12 (p X1) -> auto_testable_old (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1. intro H. intros.
  elim (rem_4382 X1 H);  intros.
  apply (rem_4381 epsilon_m__type_12_ptestable_old X1);  tauto.
Defined.

Remark rem_4384 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> auto_testable_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old.  case (rem_4375 epsilon_m__type_12_ptestable_old). clear  epsilon_m__type_12_ptestable_old. intros. apply trans_testable_old_alice_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old. tauto.
Defined.

Remark rem_4385 : auto___type_12 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4386 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> auto___type_12 alice -> auto_testable_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intro H. intros.
  elim (rem_4385 H);  intros.
  apply (rem_4384 epsilon_m__type_12_ptestable_old);  tauto.
Defined.

Remark rem_4387 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto_testable_old X1 -> auto_testable_old X1). tauto. exact (rem_4379 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4388 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_4369 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4389 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> (auto_testable_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto_testable_old X1). 2:apply (rem_4387 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_4388 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4390 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4389 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_dec_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4391 : forall X1 X2:term, auto___type_12 (dec X1 X2) -> or_1
    (auto_testable_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4392 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 (dec X1 X2) -> auto_testable_old (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_4391 X1 X2 H);  intros.
  apply (rem_4390 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4393 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___def_10 X1 -> auto___def_10 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4394 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_10 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_10 X1). tauto. exact (rem_4393 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4395 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto___def_11 X2 -> auto___def_11 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4396 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_11 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_11 X2 -> auto___def_11 X2). tauto. exact (rem_4395 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4397 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto___def_10 X1 /\ auto___def_11 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_10 X1). 2:apply (rem_4394 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto___def_11 X2). 2:apply (rem_4396 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4398 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4397 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_enc_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4399 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___def_15 X1 -> auto___def_15 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4400 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_15 X1 -> auto___def_15 X1). tauto. exact (rem_4399 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4401 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto___def_16 X2 -> auto___def_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4402 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_16 X2 -> auto___def_16 X2). tauto. exact (rem_4401 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4403 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto___def_15 X1 /\ auto___def_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_15 X1). 2:apply (rem_4400 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto___def_16 X2). 2:apply (rem_4402 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4404 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4403 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_enc_2;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4405 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___def_19 X1 -> auto___def_19 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4406 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_19 X1 -> auto___def_19 X1). tauto. exact (rem_4405 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4407 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto___def_20 X2 -> auto___def_20 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4408 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_20 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_20 X2 -> auto___def_20 X2). tauto. exact (rem_4407 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4409 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto___def_19 X1 /\ auto___def_20 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_19 X1). 2:apply (rem_4406 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto___def_20 X2). 2:apply (rem_4408 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4410 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4409 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_enc_3;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4411 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4389 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_enc_4;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4412 : forall X1 X2:term, auto___type_12 (enc X1 X2) -> or_4
    (auto___def_10 X1 /\ auto___def_11 X2)
    (auto___def_15 X1 /\ auto___def_16 X2)
    (auto___def_19 X1 /\ auto___def_20 X2)
    (auto_testable_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_4413 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 (enc X1 X2) -> auto_testable_old (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_4412 X1 X2 H);  intros.
  apply (rem_4398 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4404 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4410 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4411 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4414 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4415 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X2. intros A1.
  cut (auto_testable_old X2). 2:apply (rem_4414 epsilon_m__type_12_ptestable_old X2);  assumption.
  tauto.
Defined.

Remark rem_4416 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X2 -> auto_testable_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1.
  case (rem_4415 epsilon_m__type_12_ptestable_old X2 A1). clear  epsilon_m__type_12_ptestable_old A1. intros. apply trans_testable_old_cons_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1. tauto.
Defined.

Remark rem_4417 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_testable_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1.
  case (rem_4380 epsilon_m__type_12_ptestable_old X1 A1). clear  epsilon_m__type_12_ptestable_old A1. intros. apply trans_testable_old_cons_2;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1. tauto.
Defined.

Remark rem_4418 : forall X1 X2:term, auto___type_12 (cons X1 X2) -> or_2
    (auto_testable_old X2)    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_4419 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 (cons X1 X2) -> auto_testable_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_4418 X1 X2 H);  intros.
  apply (rem_4416 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4417 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4420 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1. intros A1.
  case (rem_4380 epsilon_m__type_12_ptestable_old X1 A1). clear  epsilon_m__type_12_ptestable_old A1. intros. apply trans_testable_old_s_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1. tauto.
Defined.

Remark rem_4421 : forall X1:term, auto___type_12 (s X1) -> or_1
    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4422 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___type_12 (s X1) -> auto_testable_old (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1. intro H. intros.
  elim (rem_4421 X1 H);  intros.
  apply (rem_4420 epsilon_m__type_12_ptestable_old X1);  tauto.
Defined.

Remark rem_4423 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> auto_testable_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old.  case (rem_4375 epsilon_m__type_12_ptestable_old). clear  epsilon_m__type_12_ptestable_old. intros. apply trans_testable_old_i_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old. tauto.
Defined.

Remark rem_4424 : auto___type_12 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4425 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> auto___type_12 i -> auto_testable_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intro H. intros.
  elim (rem_4424 H);  intros.
  apply (rem_4423 epsilon_m__type_12_ptestable_old);  tauto.
Defined.

Remark rem_4426 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> auto_testable_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old.  case (rem_4375 epsilon_m__type_12_ptestable_old). clear  epsilon_m__type_12_ptestable_old. intros. apply trans_testable_old_nil_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old. tauto.
Defined.

Remark rem_4427 : auto___type_12 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4428 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> auto___type_12 nil -> auto_testable_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intro H. intros.
  elim (rem_4427 H);  intros.
  apply (rem_4426 epsilon_m__type_12_ptestable_old);  tauto.
Defined.

Remark rem_4429 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> auto_testable_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old.  case (rem_4375 epsilon_m__type_12_ptestable_old). clear  epsilon_m__type_12_ptestable_old. intros. apply trans_testable_old_server_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old. tauto.
Defined.

Remark rem_4430 : auto___type_12 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4431 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> auto___type_12 server -> auto_testable_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intro H. intros.
  elim (rem_4430 H);  intros.
  apply (rem_4429 epsilon_m__type_12_ptestable_old);  tauto.
Defined.

Remark rem_4432 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___def_60 X1 -> auto___def_60 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4433 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___def_60 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_60 X1 -> auto___def_60 X1). tauto. exact (rem_4432 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4434 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto___type_16 X2 -> auto___type_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4435 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___type_16 X2 -> auto___type_16 X2). tauto. exact (rem_4434 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4436 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> (auto___def_60 X1 /\ auto___type_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_60 X1). 2:apply (rem_4433 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto___type_16 X2). 2:apply (rem_4435 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4437 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4436 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_key_1;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4438 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___def_55 X1 -> auto___def_55 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4439 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_55 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_55 X1 -> auto___def_55 X1). tauto. exact (rem_4438 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4440 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto___def_4 X2 -> auto___def_4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4441 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_4 X2 -> auto___def_4 X2). tauto. exact (rem_4440 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4442 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> (auto___def_55 X1 /\ auto___def_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_55 X1). 2:apply (rem_4439 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto___def_4 X2). 2:apply (rem_4441 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4443 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4442 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_key_2;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4444 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4445 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4444 epsilon_m__type_12_ptestable_old X1).
Defined.

Remark rem_4446 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4447 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_4446 epsilon_m__type_12_ptestable_old X2).
Defined.

Remark rem_4448 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4445 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_4447 epsilon_m__type_12_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4449 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4448 epsilon_m__type_12_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_12_ptestable_old A1 A2. intros. apply trans_testable_old_key_3;  tauto.
 clear  epsilon_m__type_12_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4450 : forall X1 X2:term, auto___type_12 (key X1 X2) -> or_3
    (auto___def_60 X1 /\ auto___type_16 X2)
    (auto___def_55 X1 /\ auto___def_4 X2)
    (auto___def_51 X1 /\ auto_agent 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_4451 : (forall X:term, auto___type_12 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 (key X1 X2) -> auto_testable_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_4450 X1 X2 H);  intros.
  apply (rem_4437 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4443 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
  apply (rem_4449 epsilon_m__type_12_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4452 : forall X1 X2:term, auto___type_12 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4453 : forall X1 X2:term, auto___type_12 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4454 : forall X1 X2:term, auto___type_12 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4455 : forall X1 X2:term, auto___type_12 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4456 : forall X1 X2:term, auto___type_12 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4457 : auto___type_12 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4458 : forall X1 X2:term, auto___type_12 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4459 : forall X1 X2:term, auto___type_12 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4460 : auto___type_12 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4461 : forall X1 X2:term, auto___type_12 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4462 : auto___type_12 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4463 : forall X1 X2:term, auto___type_12 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4464 : forall X1 X2:term, auto___type_12 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4465 : forall X1:term, auto___type_12 X1 -> auto_testable_old X1. (* Induct. *)
Proof.
  fix epsilon_m__type_12_ptestable_old 1.
  intro X. case X.
  exact (rem_4386 epsilon_m__type_12_ptestable_old ).
  exact (rem_4378 epsilon_m__type_12_ptestable_old ).
  intros X1 X2;  exact (rem_4419 epsilon_m__type_12_ptestable_old X1 X2).
  intros X1 X2;  exact (rem_4374 epsilon_m__type_12_ptestable_old X1 X2).
  intros X1 X2;  exact (rem_4392 epsilon_m__type_12_ptestable_old X1 X2).
  intros X1 X2;  exact (rem_4413 epsilon_m__type_12_ptestable_old X1 X2).
  exact (rem_4425 epsilon_m__type_12_ptestable_old ).
  intros X1 X2;  exact (rem_4451 epsilon_m__type_12_ptestable_old X1 X2).
  exact (rem_4428 epsilon_m__type_12_ptestable_old ).
  intros X1 X2. intro H. elim (rem_4464 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4454 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4452 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4461 X1 X2 H).
  intros X1;  exact (rem_4383 epsilon_m__type_12_ptestable_old X1).
  intros X1 X2. intro H. elim (rem_4459 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4458 X1 X2 H).
   intro H. elim (rem_4460  H).
   intro H. elim (rem_4457  H).
  intros X1 X2. intro H. elim (rem_4456 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4455 X1 X2 H).
  intros X1;  exact (rem_4422 epsilon_m__type_12_ptestable_old X1).
  exact (rem_4431 epsilon_m__type_12_ptestable_old ).
  intros X1 X2. intro H. elim (rem_4463 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4453 X1 X2 H).
   intro H. elim (rem_4462  H).
Qed.

Remark rem_4466 : forall X1 X2:term, auto___def_54 X2 -> auto___type_12 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_12 X1 -> auto_testable_old X1). tauto. exact (rem_4465 X1).
Qed.

Remark rem_4467 : forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_54 X2 -> auto___type_12 X1 -> auto_knows_old X2 -> auto_testable_old X1). tauto. exact (rem_4466 X1 X2).
Qed.

Remark rem_4468 : (forall X:term, auto___def_61 X -> auto___def_26 X -> False)
    -> auto___def_26 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_26. intro H. intros.
  elim (rem_2178 H);  intros.
Defined.

Remark rem_4469 : auto___def_61 prv -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4470 : (forall X:term, auto___def_61 X -> auto___def_26 X -> False)
    -> auto___def_61 prv -> auto___def_26 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_26. intro H. intros.
  elim (rem_4469 H);  intros.
  apply (rem_4468 epsilon_m__def_61_m__def_26);  tauto.
Defined.

Remark rem_4471 : forall X1 X2:term, auto___def_61 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4472 : forall X1 X2:term, auto___def_61 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4473 : forall X1 X2:term, auto___def_61 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4474 : auto___def_61 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4475 : forall X1 X2:term, auto___def_61 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4476 : forall X1 X2:term, auto___def_61 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4477 : forall X1 X2:term, auto___def_61 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4478 : forall X1:term, auto___def_61 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4479 : auto___def_61 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4480 : forall X1 X2:term, auto___def_61 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4481 : forall X1 X2:term, auto___def_61 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4482 : auto___def_61 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4483 : forall X1 X2:term, auto___def_61 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4484 : forall X1 X2:term, auto___def_61 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4485 : forall X1 X2:term, auto___def_61 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4486 : forall X1 X2:term, auto___def_61 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4487 : forall X1:term, auto___def_61 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4488 : forall X1 X2:term, auto___def_61 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4489 : auto___def_61 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4490 : auto___def_61 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4491 : auto___def_61 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4492 : forall X1 X2:term, auto___def_61 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4493 : forall X1 X2:term, auto___def_61 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4494 : forall X1:term, auto___def_61 X1 -> auto___def_26 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_61_m__def_26 1.
  intro X. case X.
   intro H. elim (rem_4482  H).
   intro H. elim (rem_4474  H).
  intros X1 X2. intro H. elim (rem_4486 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4484 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4485 X1 X2 H).
   intro H. elim (rem_4489  H).
  intros X1 X2. intro H. elim (rem_4493 X1 X2 H).
   intro H. elim (rem_4490  H).
  intros X1 X2. intro H. elim (rem_4492 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4475 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4472 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4483 X1 X2 H).
  intros X1. intro H. elim (rem_4478 X1 H).
  intros X1 X2. intro H. elim (rem_4481 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4480 X1 X2 H).
  exact (rem_4470 epsilon_m__def_61_m__def_26 ).
   intro H. elim (rem_4479  H).
  intros X1 X2. intro H. elim (rem_4477 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4476 X1 X2 H).
  intros X1. intro H. elim (rem_4487 X1 H).
   intro H. elim (rem_4491  H).
  intros X1 X2. intro H. elim (rem_4488 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4473 X1 X2 H).
   intro H. elim (rem_1309  H).
Qed.

Remark rem_4495 : (forall X:term, auto___def_25 X -> auto_knows_old X -> False)
    -> forall X1:term, auto___def_61 X1 -> auto___def_26 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_25_mknows_old. exact (rem_4494).
Defined.

Remark rem_4496 : (forall X:term, auto___def_25 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_26 X1 -> auto___def_62 X2 -> auto___type_4 X2 -> auto___def_61 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_25_mknows_old. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_26 X1 -> False). clear  epsilon_m__def_25_mknows_old. tauto.
  exact (rem_4495 epsilon_m__def_25_mknows_old X1).
Defined.

Remark rem_4497 : (forall X:term, auto___def_51 X -> auto___def_26 X -> False)
    -> auto___def_26 pub -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_51_m__def_26. intro H. intros.
  elim (rem_1440 H);  intros.
Defined.

Remark rem_4498 : auto___def_51 pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4499 : (forall X:term, auto___def_51 X -> auto___def_26 X -> False)
    -> auto___def_51 pub -> auto___def_26 pub -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_51_m__def_26. intro H. intros.
  elim (rem_4498 H);  intros.
  apply (rem_4497 epsilon_m__def_51_m__def_26);  tauto.
Defined.

Remark rem_4500 : forall X1 X2:term, auto___def_51 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4501 : forall X1 X2:term, auto___def_51 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4502 : forall X1 X2:term, auto___def_51 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4503 : auto___def_51 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4504 : forall X1 X2:term, auto___def_51 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4505 : forall X1 X2:term, auto___def_51 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4506 : forall X1 X2:term, auto___def_51 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4507 : forall X1:term, auto___def_51 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4508 : forall X1 X2:term, auto___def_51 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4509 : forall X1 X2:term, auto___def_51 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4510 : auto___def_51 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4511 : forall X1 X2:term, auto___def_51 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4512 : forall X1 X2:term, auto___def_51 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4513 : forall X1 X2:term, auto___def_51 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4514 : forall X1 X2:term, auto___def_51 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4515 : forall X1:term, auto___def_51 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4516 : forall X1 X2:term, auto___def_51 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4517 : auto___def_51 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4518 : auto___def_51 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4519 : auto___def_51 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4520 : forall X1 X2:term, auto___def_51 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4521 : forall X1 X2:term, auto___def_51 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4522 : forall X1:term, auto___def_51 X1 -> auto___def_26 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_51_m__def_26 1.
  intro X. case X.
   intro H. elim (rem_4510  H).
   intro H. elim (rem_4503  H).
  intros X1 X2. intro H. elim (rem_4514 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4500 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4512 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4513 X1 X2 H).
   intro H. elim (rem_4517  H).
  intros X1 X2. intro H. elim (rem_4521 X1 X2 H).
   intro H. elim (rem_4518  H).
  intros X1 X2. intro H. elim (rem_4520 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4504 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4511 X1 X2 H).
  intros X1. intro H. elim (rem_4507 X1 H).
  intros X1 X2. intro H. elim (rem_4509 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4508 X1 X2 H).
   intro H. elim (rem_1358  H).
  exact (rem_4499 epsilon_m__def_51_m__def_26 ).
  intros X1 X2. intro H. elim (rem_4506 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4505 X1 X2 H).
  intros X1. intro H. elim (rem_4515 X1 H).
   intro H. elim (rem_4519  H).
  intros X1 X2. intro H. elim (rem_4516 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4502 X1 X2 H).
   intro H. elim (rem_1312  H).
Qed.

Remark rem_4523 : (forall X:term, auto___def_25 X -> auto_knows_old X -> False)
    -> forall X1:term, auto___def_51 X1 -> auto___def_26 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_25_mknows_old. exact (rem_4522).
Defined.

Remark rem_4524 : (forall X:term, auto___def_25 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto___def_51 X1 -> auto_agent X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_25_mknows_old. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_26 X1 -> False). clear  epsilon_m__def_25_mknows_old. tauto.
  exact (rem_4523 epsilon_m__def_25_mknows_old X1).
Defined.

Remark rem_4525 : (forall X:term, auto___def_25 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto___def_26 X1 -> auto___type_4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_25_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1361 X1 X2 H);  intros.
  apply (rem_4496 epsilon_m__def_25_mknows_old X1 X2);  tauto.
  apply (rem_4524 epsilon_m__def_25_mknows_old X1 X2);  tauto.
Defined.

Remark rem_4526 : (forall X:term, auto___def_25 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_25 (key X1 X2) -> auto_knows_old (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_25_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1444 X1 X2 H);  intros.
  apply (rem_4525 epsilon_m__def_25_mknows_old X1 X2);  tauto.
Defined.

Remark rem_4527 : forall X1 X2:term, auto___def_25 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4528 : forall X1 X2:term, auto___def_25 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4529 : forall X1 X2:term, auto___def_25 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4530 : auto___def_25 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4531 : forall X1 X2:term, auto___def_25 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4532 : forall X1 X2:term, auto___def_25 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4533 : forall X1 X2:term, auto___def_25 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4534 : forall X1:term, auto___def_25 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4535 : auto___def_25 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4536 : forall X1 X2:term, auto___def_25 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4537 : forall X1 X2:term, auto___def_25 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4538 : auto___def_25 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4539 : auto___def_25 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4540 : forall X1 X2:term, auto___def_25 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4541 : forall X1 X2:term, auto___def_25 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4542 : forall X1 X2:term, auto___def_25 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4543 : forall X1 X2:term, auto___def_25 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4544 : forall X1:term, auto___def_25 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4545 : auto___def_25 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4546 : forall X1 X2:term, auto___def_25 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4547 : auto___def_25 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4548 : auto___def_25 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4549 : auto___def_25 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4550 : forall X1 X2:term, auto___def_25 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4551 : forall X1:term, auto___def_25 X1 -> auto_knows_old X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_25_mknows_old 1.
  intro X. case X.
   intro H. elim (rem_4538  H).
   intro H. elim (rem_4530  H).
  intros X1 X2. intro H. elim (rem_4543 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4527 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4541 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4542 X1 X2 H).
   intro H. elim (rem_4547  H).
  intros X1 X2;  exact (rem_4526 epsilon_m__def_25_mknows_old X1 X2).
   intro H. elim (rem_4548  H).
  intros X1 X2. intro H. elim (rem_4550 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4531 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4528 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4540 X1 X2 H).
  intros X1. intro H. elim (rem_4534 X1 H).
  intros X1 X2. intro H. elim (rem_4537 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4536 X1 X2 H).
   intro H. elim (rem_4539  H).
   intro H. elim (rem_4535  H).
  intros X1 X2. intro H. elim (rem_4533 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4532 X1 X2 H).
  intros X1. intro H. elim (rem_4544 X1 H).
   intro H. elim (rem_4549  H).
  intros X1 X2. intro H. elim (rem_4546 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4529 X1 X2 H).
   intro H. elim (rem_4545  H).
Qed.

Remark rem_4552 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_4551 X2)). tauto.
Qed.

Remark rem_4553 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4554 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_4553 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4555 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4556 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_4555 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4557 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_4554 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_4556 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4558 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4557 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4559 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___type_12 X1 -> auto___type_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4560 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___type_12 X1 -> auto___type_12 X1). tauto. exact (rem_4559 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4561 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto___def_54 X2 -> auto___def_54 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4562 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___def_54 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_54 X2 -> auto___def_54 X2). tauto. exact (rem_4561 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4563 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> (auto___type_12 X1 /\ auto___def_54 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_4560 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto___def_54 X2). 2:apply (rem_4562 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4564 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4563 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_2;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4565 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4566 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_4565 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4567 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4568 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_4567 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4569 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_4566 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_4568 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4570 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4569 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_3;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4571 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___type_11 X1 -> auto___type_11 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4572 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___type_11 X1 -> auto___type_11 X1). tauto. exact (rem_4571 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4573 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4574 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4573 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4575 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> (auto___type_11 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_4572 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4574 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4576 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4575 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_4;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4577 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4578 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_4577 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4579 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4580 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_4579 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4581 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_4578 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_4580 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4582 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4581 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_5;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4583 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4584 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_4583 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4585 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4586 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_4585 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4587 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_4584 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_4586 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4588 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4587 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_6;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4589 : forall X1 X2:term, auto___type_11 (crypt X1 X2) -> or_6
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___type_12 X1 /\ auto___def_54 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_11 X1 /\ auto___def_52 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_6_intro_1; tauto.
  intros. apply or_6_intro_2; tauto.
  intros. apply or_6_intro_3; tauto.
  intros. apply or_6_intro_4; tauto.
  intros. apply or_6_intro_5; tauto.
  intros. apply or_6_intro_6; tauto.
Qed.

Remark rem_4590 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 (crypt X1 X2) -> auto_testable_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_4589 X1 X2 H);  intros.
  apply (rem_4558 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4564 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4570 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4576 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4582 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4588 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4591 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old.  tauto.
Defined.

Remark rem_4592 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> auto_testable_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old.  case (rem_4591 epsilon_m__type_11_ptestable_old). clear  epsilon_m__type_11_ptestable_old. intros. apply trans_testable_old_bob_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old. tauto.
Defined.

Remark rem_4593 : auto___type_11 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4594 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> auto___type_11 bob -> auto_testable_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intro H. intros.
  elim (rem_4593 H);  intros.
  apply (rem_4592 epsilon_m__type_11_ptestable_old);  tauto.
Defined.

Remark rem_4595 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4596 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1. intros A1.
  cut (auto_testable_old X1). 2:apply (rem_4595 epsilon_m__type_11_ptestable_old X1);  assumption.
  tauto.
Defined.

Remark rem_4597 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1. intros A1.
  case (rem_4596 epsilon_m__type_11_ptestable_old X1 A1). clear  epsilon_m__type_11_ptestable_old A1. intros. apply trans_testable_old_p_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1. tauto.
Defined.

Remark rem_4598 : forall X1:term, auto___type_11 (p X1) -> or_1
    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4599 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___type_11 (p X1) -> auto_testable_old (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1. intro H. intros.
  elim (rem_4598 X1 H);  intros.
  apply (rem_4597 epsilon_m__type_11_ptestable_old X1);  tauto.
Defined.

Remark rem_4600 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> auto_testable_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old.  case (rem_4591 epsilon_m__type_11_ptestable_old). clear  epsilon_m__type_11_ptestable_old. intros. apply trans_testable_old_alice_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old. tauto.
Defined.

Remark rem_4601 : auto___type_11 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4602 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> auto___type_11 alice -> auto_testable_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intro H. intros.
  elim (rem_4601 H);  intros.
  apply (rem_4600 epsilon_m__type_11_ptestable_old);  tauto.
Defined.

Remark rem_4603 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto_testable_old X1 -> auto_testable_old X1). tauto. exact (rem_4595 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4604 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_4585 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4605 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> (auto_testable_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto_testable_old X1). 2:apply (rem_4603 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_4604 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4606 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4605 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_dec_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4607 : forall X1 X2:term, auto___type_11 (dec X1 X2) -> or_1
    (auto_testable_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4608 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 (dec X1 X2) -> auto_testable_old (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_4607 X1 X2 H);  intros.
  apply (rem_4606 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4609 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___def_10 X1 -> auto___def_10 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4610 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_10 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_10 X1). tauto. exact (rem_4609 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4611 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto___def_11 X2 -> auto___def_11 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4612 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_11 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_11 X2 -> auto___def_11 X2). tauto. exact (rem_4611 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4613 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto___def_10 X1 /\ auto___def_11 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_10 X1). 2:apply (rem_4610 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto___def_11 X2). 2:apply (rem_4612 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4614 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4613 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_enc_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4615 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___def_15 X1 -> auto___def_15 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4616 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_15 X1 -> auto___def_15 X1). tauto. exact (rem_4615 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4617 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto___def_16 X2 -> auto___def_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4618 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_16 X2 -> auto___def_16 X2). tauto. exact (rem_4617 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4619 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto___def_15 X1 /\ auto___def_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_15 X1). 2:apply (rem_4616 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto___def_16 X2). 2:apply (rem_4618 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4620 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4619 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_enc_2;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4621 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___def_19 X1 -> auto___def_19 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4622 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_19 X1 -> auto___def_19 X1). tauto. exact (rem_4621 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4623 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto___def_20 X2 -> auto___def_20 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4624 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_20 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_20 X2 -> auto___def_20 X2). tauto. exact (rem_4623 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4625 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto___def_19 X1 /\ auto___def_20 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_19 X1). 2:apply (rem_4622 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto___def_20 X2). 2:apply (rem_4624 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4626 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4625 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_enc_3;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4627 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4605 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_enc_4;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4628 : forall X1 X2:term, auto___type_11 (enc X1 X2) -> or_4
    (auto___def_10 X1 /\ auto___def_11 X2)
    (auto___def_15 X1 /\ auto___def_16 X2)
    (auto___def_19 X1 /\ auto___def_20 X2)
    (auto_testable_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_4629 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 (enc X1 X2) -> auto_testable_old (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_4628 X1 X2 H);  intros.
  apply (rem_4614 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4620 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4626 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4627 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4630 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4631 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X2. intros A1.
  cut (auto_testable_old X2). 2:apply (rem_4630 epsilon_m__type_11_ptestable_old X2);  assumption.
  tauto.
Defined.

Remark rem_4632 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X2 -> auto_testable_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1.
  case (rem_4631 epsilon_m__type_11_ptestable_old X2 A1). clear  epsilon_m__type_11_ptestable_old A1. intros. apply trans_testable_old_cons_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1. tauto.
Defined.

Remark rem_4633 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_testable_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1.
  case (rem_4596 epsilon_m__type_11_ptestable_old X1 A1). clear  epsilon_m__type_11_ptestable_old A1. intros. apply trans_testable_old_cons_2;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1. tauto.
Defined.

Remark rem_4634 : forall X1 X2:term, auto___type_11 (cons X1 X2) -> or_2
    (auto_testable_old X2)    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_4635 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 (cons X1 X2) -> auto_testable_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_4634 X1 X2 H);  intros.
  apply (rem_4632 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4633 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4636 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1. intros A1.
  case (rem_4596 epsilon_m__type_11_ptestable_old X1 A1). clear  epsilon_m__type_11_ptestable_old A1. intros. apply trans_testable_old_s_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1. tauto.
Defined.

Remark rem_4637 : forall X1:term, auto___type_11 (s X1) -> or_1
    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4638 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___type_11 (s X1) -> auto_testable_old (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1. intro H. intros.
  elim (rem_4637 X1 H);  intros.
  apply (rem_4636 epsilon_m__type_11_ptestable_old X1);  tauto.
Defined.

Remark rem_4639 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> auto_testable_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old.  case (rem_4591 epsilon_m__type_11_ptestable_old). clear  epsilon_m__type_11_ptestable_old. intros. apply trans_testable_old_i_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old. tauto.
Defined.

Remark rem_4640 : auto___type_11 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4641 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> auto___type_11 i -> auto_testable_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intro H. intros.
  elim (rem_4640 H);  intros.
  apply (rem_4639 epsilon_m__type_11_ptestable_old);  tauto.
Defined.

Remark rem_4642 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> auto_testable_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old.  case (rem_4591 epsilon_m__type_11_ptestable_old). clear  epsilon_m__type_11_ptestable_old. intros. apply trans_testable_old_nil_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old. tauto.
Defined.

Remark rem_4643 : auto___type_11 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4644 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> auto___type_11 nil -> auto_testable_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intro H. intros.
  elim (rem_4643 H);  intros.
  apply (rem_4642 epsilon_m__type_11_ptestable_old);  tauto.
Defined.

Remark rem_4645 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> auto_testable_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old.  case (rem_4591 epsilon_m__type_11_ptestable_old). clear  epsilon_m__type_11_ptestable_old. intros. apply trans_testable_old_server_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old. tauto.
Defined.

Remark rem_4646 : auto___type_11 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4647 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> auto___type_11 server -> auto_testable_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intro H. intros.
  elim (rem_4646 H);  intros.
  apply (rem_4645 epsilon_m__type_11_ptestable_old);  tauto.
Defined.

Remark rem_4648 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___def_60 X1 -> auto___def_60 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4649 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___def_60 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_60 X1 -> auto___def_60 X1). tauto. exact (rem_4648 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4650 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto___type_16 X2 -> auto___type_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4651 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___type_16 X2 -> auto___type_16 X2). tauto. exact (rem_4650 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4652 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> (auto___def_60 X1 /\ auto___type_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_60 X1). 2:apply (rem_4649 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto___type_16 X2). 2:apply (rem_4651 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4653 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4652 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_key_1;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4654 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___def_55 X1 -> auto___def_55 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4655 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_55 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_55 X1 -> auto___def_55 X1). tauto. exact (rem_4654 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4656 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto___def_4 X2 -> auto___def_4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4657 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_4 X2 -> auto___def_4 X2). tauto. exact (rem_4656 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4658 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> (auto___def_55 X1 /\ auto___def_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_55 X1). 2:apply (rem_4655 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto___def_4 X2). 2:apply (rem_4657 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4659 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4658 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_key_2;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4660 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4661 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4660 epsilon_m__type_11_ptestable_old X1).
Defined.

Remark rem_4662 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4663 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_4662 epsilon_m__type_11_ptestable_old X2).
Defined.

Remark rem_4664 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4661 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_4663 epsilon_m__type_11_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4665 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4664 epsilon_m__type_11_ptestable_old X1 X2 A1 A2). clear  epsilon_m__type_11_ptestable_old A1 A2. intros. apply trans_testable_old_key_3;  tauto.
 clear  epsilon_m__type_11_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4666 : forall X1 X2:term, auto___type_11 (key X1 X2) -> or_3
    (auto___def_60 X1 /\ auto___type_16 X2)
    (auto___def_55 X1 /\ auto___def_4 X2)
    (auto___def_51 X1 /\ auto_agent 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_4667 : (forall X:term, auto___type_11 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_11 (key X1 X2) -> auto_testable_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_4666 X1 X2 H);  intros.
  apply (rem_4653 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4659 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
  apply (rem_4665 epsilon_m__type_11_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4668 : forall X1 X2:term, auto___type_11 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4669 : forall X1 X2:term, auto___type_11 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4670 : forall X1 X2:term, auto___type_11 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4671 : forall X1 X2:term, auto___type_11 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4672 : forall X1 X2:term, auto___type_11 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4673 : auto___type_11 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4674 : forall X1 X2:term, auto___type_11 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4675 : forall X1 X2:term, auto___type_11 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4676 : auto___type_11 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4677 : forall X1 X2:term, auto___type_11 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4678 : auto___type_11 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4679 : forall X1 X2:term, auto___type_11 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4680 : forall X1 X2:term, auto___type_11 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4681 : forall X1:term, auto___type_11 X1 -> auto_testable_old X1. (* Induct. *)
Proof.
  fix epsilon_m__type_11_ptestable_old 1.
  intro X. case X.
  exact (rem_4602 epsilon_m__type_11_ptestable_old ).
  exact (rem_4594 epsilon_m__type_11_ptestable_old ).
  intros X1 X2;  exact (rem_4635 epsilon_m__type_11_ptestable_old X1 X2).
  intros X1 X2;  exact (rem_4590 epsilon_m__type_11_ptestable_old X1 X2).
  intros X1 X2;  exact (rem_4608 epsilon_m__type_11_ptestable_old X1 X2).
  intros X1 X2;  exact (rem_4629 epsilon_m__type_11_ptestable_old X1 X2).
  exact (rem_4641 epsilon_m__type_11_ptestable_old ).
  intros X1 X2;  exact (rem_4667 epsilon_m__type_11_ptestable_old X1 X2).
  exact (rem_4644 epsilon_m__type_11_ptestable_old ).
  intros X1 X2. intro H. elim (rem_4680 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4670 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4668 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4677 X1 X2 H).
  intros X1;  exact (rem_4599 epsilon_m__type_11_ptestable_old X1).
  intros X1 X2. intro H. elim (rem_4675 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4674 X1 X2 H).
   intro H. elim (rem_4676  H).
   intro H. elim (rem_4673  H).
  intros X1 X2. intro H. elim (rem_4672 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4671 X1 X2 H).
  intros X1;  exact (rem_4638 epsilon_m__type_11_ptestable_old X1).
  exact (rem_4647 epsilon_m__type_11_ptestable_old ).
  intros X1 X2. intro H. elim (rem_4679 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4669 X1 X2 H).
   intro H. elim (rem_4678  H).
Qed.

Remark rem_4682 : forall X1 X2:term, auto___def_52 X2 -> auto___type_11 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_11 X1 -> auto_testable_old X1). tauto. exact (rem_4681 X1).
Qed.

Remark rem_4683 : forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_52 X2 -> auto___type_11 X1 -> auto_knows_old X2 -> auto_testable_old X1). tauto. exact (rem_4682 X1 X2).
Qed.

Remark rem_4684 : (forall X:term, auto___def_61 X -> auto___def_45 X -> False)
    -> auto___def_45 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_45. intro H. intros.
  elim (rem_2183 H);  intros.
Defined.

Remark rem_4685 : (forall X:term, auto___def_61 X -> auto___def_45 X -> False)
    -> auto___def_61 prv -> auto___def_45 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_45. intro H. intros.
  elim (rem_4469 H);  intros.
  apply (rem_4684 epsilon_m__def_61_m__def_45);  tauto.
Defined.

Remark rem_4686 : forall X1:term, auto___def_61 X1 -> auto___def_45 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_61_m__def_45 1.
  intro X. case X.
   intro H. elim (rem_4482  H).
   intro H. elim (rem_4474  H).
  intros X1 X2. intro H. elim (rem_4486 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4484 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4485 X1 X2 H).
   intro H. elim (rem_4489  H).
  intros X1 X2. intro H. elim (rem_4493 X1 X2 H).
   intro H. elim (rem_4490  H).
  intros X1 X2. intro H. elim (rem_4492 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4475 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4472 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4483 X1 X2 H).
  intros X1. intro H. elim (rem_4478 X1 H).
  intros X1 X2. intro H. elim (rem_4481 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4480 X1 X2 H).
  exact (rem_4685 epsilon_m__def_61_m__def_45 ).
   intro H. elim (rem_4479  H).
  intros X1 X2. intro H. elim (rem_4477 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4476 X1 X2 H).
  intros X1. intro H. elim (rem_4487 X1 H).
   intro H. elim (rem_4491  H).
  intros X1 X2. intro H. elim (rem_4488 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4473 X1 X2 H).
   intro H. elim (rem_1309  H).
Qed.

Remark rem_4687 : (forall X:term, auto___def_44 X -> auto_knows_old X -> False)
    -> forall X1:term, auto___def_61 X1 -> auto___def_45 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_44_mknows_old. exact (rem_4686).
Defined.

Remark rem_4688 : (forall X:term, auto___def_44 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___type_8 X2 -> auto___def_62 X2 -> auto___def_61 X1 -> auto___def_45 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_44_mknows_old. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_45 X1 -> False). clear  epsilon_m__def_44_mknows_old. tauto.
  exact (rem_4687 epsilon_m__def_44_mknows_old X1).
Defined.

Remark rem_4689 : (forall X:term, auto___def_51 X -> auto___def_45 X -> False)
    -> auto___def_45 pub -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_51_m__def_45. intro H. intros.
  elim (rem_1446 H);  intros.
Defined.

Remark rem_4690 : (forall X:term, auto___def_51 X -> auto___def_45 X -> False)
    -> auto___def_51 pub -> auto___def_45 pub -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_51_m__def_45. intro H. intros.
  elim (rem_4498 H);  intros.
  apply (rem_4689 epsilon_m__def_51_m__def_45);  tauto.
Defined.

Remark rem_4691 : forall X1:term, auto___def_51 X1 -> auto___def_45 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_51_m__def_45 1.
  intro X. case X.
   intro H. elim (rem_4510  H).
   intro H. elim (rem_4503  H).
  intros X1 X2. intro H. elim (rem_4514 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4500 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4512 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4513 X1 X2 H).
   intro H. elim (rem_4517  H).
  intros X1 X2. intro H. elim (rem_4521 X1 X2 H).
   intro H. elim (rem_4518  H).
  intros X1 X2. intro H. elim (rem_4520 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4504 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4511 X1 X2 H).
  intros X1. intro H. elim (rem_4507 X1 H).
  intros X1 X2. intro H. elim (rem_4509 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4508 X1 X2 H).
   intro H. elim (rem_1358  H).
  exact (rem_4690 epsilon_m__def_51_m__def_45 ).
  intros X1 X2. intro H. elim (rem_4506 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4505 X1 X2 H).
  intros X1. intro H. elim (rem_4515 X1 H).
   intro H. elim (rem_4519  H).
  intros X1 X2. intro H. elim (rem_4516 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4502 X1 X2 H).
   intro H. elim (rem_1312  H).
Qed.

Remark rem_4692 : (forall X:term, auto___def_44 X -> auto_knows_old X -> False)
    -> forall X1:term, auto___def_51 X1 -> auto___def_45 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_44_mknows_old. exact (rem_4691).
Defined.

Remark rem_4693 : (forall X:term, auto___def_44 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___type_8 X2 -> auto___def_45 X1 -> auto___def_51 X1 -> auto_agent X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_44_mknows_old. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_45 X1 -> False). clear  epsilon_m__def_44_mknows_old. tauto.
  exact (rem_4692 epsilon_m__def_44_mknows_old X1).
Defined.

Remark rem_4694 : (forall X:term, auto___def_44 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto___def_45 X1 -> auto___type_8 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_44_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1361 X1 X2 H);  intros.
  apply (rem_4688 epsilon_m__def_44_mknows_old X1 X2);  tauto.
  apply (rem_4693 epsilon_m__def_44_mknows_old X1 X2);  tauto.
Defined.

Remark rem_4695 : (forall X:term, auto___def_44 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_44 (key X1 X2) -> auto_knows_old (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_44_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1450 X1 X2 H);  intros.
  apply (rem_4694 epsilon_m__def_44_mknows_old X1 X2);  tauto.
Defined.

Remark rem_4696 : forall X1 X2:term, auto___def_44 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4697 : forall X1 X2:term, auto___def_44 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4698 : forall X1 X2:term, auto___def_44 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4699 : auto___def_44 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4700 : forall X1 X2:term, auto___def_44 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4701 : forall X1 X2:term, auto___def_44 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4702 : forall X1 X2:term, auto___def_44 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4703 : forall X1:term, auto___def_44 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4704 : auto___def_44 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4705 : forall X1 X2:term, auto___def_44 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4706 : forall X1 X2:term, auto___def_44 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4707 : auto___def_44 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4708 : auto___def_44 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4709 : forall X1 X2:term, auto___def_44 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4710 : forall X1 X2:term, auto___def_44 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4711 : forall X1 X2:term, auto___def_44 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4712 : forall X1 X2:term, auto___def_44 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4713 : forall X1:term, auto___def_44 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4714 : auto___def_44 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4715 : forall X1 X2:term, auto___def_44 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4716 : auto___def_44 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4717 : auto___def_44 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4718 : auto___def_44 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4719 : forall X1 X2:term, auto___def_44 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4720 : forall X1:term, auto___def_44 X1 -> auto_knows_old X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_44_mknows_old 1.
  intro X. case X.
   intro H. elim (rem_4707  H).
   intro H. elim (rem_4699  H).
  intros X1 X2. intro H. elim (rem_4712 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4696 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4710 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4711 X1 X2 H).
   intro H. elim (rem_4716  H).
  intros X1 X2;  exact (rem_4695 epsilon_m__def_44_mknows_old X1 X2).
   intro H. elim (rem_4717  H).
  intros X1 X2. intro H. elim (rem_4719 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4700 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4697 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4709 X1 X2 H).
  intros X1. intro H. elim (rem_4703 X1 H).
  intros X1 X2. intro H. elim (rem_4706 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4705 X1 X2 H).
   intro H. elim (rem_4708  H).
   intro H. elim (rem_4704  H).
  intros X1 X2. intro H. elim (rem_4702 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4701 X1 X2 H).
  intros X1. intro H. elim (rem_4713 X1 H).
   intro H. elim (rem_4718  H).
  intros X1 X2. intro H. elim (rem_4715 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4698 X1 X2 H).
   intro H. elim (rem_4714  H).
Qed.

Remark rem_4721 : forall X1 X2:term, auto___def_44 X2 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_4720 X2)). tauto.
Qed.

Remark rem_4722 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_44 X2 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_testable_old X1). tauto. exact (rem_4721 X1 X2).
Qed.

Remark rem_4723 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4724 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_4723 epsilon_mknows_old_ptestable_old X1).
Defined.

Remark rem_4725 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4726 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_4725 epsilon_mknows_old_ptestable_old X2).
Defined.

Remark rem_4727 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_4724 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_4726 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4728 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4727 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4729 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4730 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_4729 epsilon_mknows_old_ptestable_old X1).
Defined.

Remark rem_4731 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4732 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_4731 epsilon_mknows_old_ptestable_old X2).
Defined.

Remark rem_4733 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_4730 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_4732 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4734 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4733 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_3;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4735 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4736 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_4735 epsilon_mknows_old_ptestable_old X1).
Defined.

Remark rem_4737 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4738 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_4737 epsilon_mknows_old_ptestable_old X2).
Defined.

Remark rem_4739 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_4736 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_4738 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4740 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4739 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_5;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4741 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4742 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_4741 epsilon_mknows_old_ptestable_old X1).
Defined.

Remark rem_4743 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4744 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_4743 epsilon_mknows_old_ptestable_old X2).
Defined.

Remark rem_4745 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_4742 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_4744 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4746 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4745 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_crypt_6;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4747 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto_testable_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_1860 X1 X2 H);  intros.
  apply (rem_4728 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
  apply (rem_4734 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
  apply (rem_4740 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
  apply (rem_4746 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4748 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old.  tauto.
Defined.

Remark rem_4749 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> auto_testable_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old.  case (rem_4748 epsilon_mknows_old_ptestable_old). clear  epsilon_mknows_old_ptestable_old. intros. apply trans_testable_old_bob_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old. tauto.
Defined.

Remark rem_4750 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> auto_knows_old bob -> auto_testable_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intro H. intros.
  elim (rem_2438 H);  intros.
  apply (rem_4749 epsilon_mknows_old_ptestable_old);  tauto.
Defined.

Remark rem_4751 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_old X1. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intros X1.
  cut (auto_knows_old X1 -> auto_testable_old X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4752 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1. intros A1.
  cut (auto_testable_old X1). 2:apply (rem_4751 epsilon_mknows_old_ptestable_old X1);  assumption.
  tauto.
Defined.

Remark rem_4753 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_old (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1. intros A1.
  case (rem_4752 epsilon_mknows_old_ptestable_old X1 A1). clear  epsilon_mknows_old_ptestable_old A1. intros. apply trans_testable_old_p_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1. tauto.
Defined.

Remark rem_4754 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto_knows_old (p X1) -> auto_testable_old (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1. intro H. intros.
  elim (rem_2442 X1 H);  intros.
  apply (rem_4753 epsilon_mknows_old_ptestable_old X1);  tauto.
Defined.

Remark rem_4755 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> auto_testable_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old.  case (rem_4748 epsilon_mknows_old_ptestable_old). clear  epsilon_mknows_old_ptestable_old. intros. apply trans_testable_old_alice_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old. tauto.
Defined.

Remark rem_4756 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> auto_knows_old alice -> auto_testable_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intro H. intros.
  elim (rem_2445 H);  intros.
  apply (rem_4755 epsilon_mknows_old_ptestable_old);  tauto.
Defined.

Remark rem_4757 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto_knows_old X1 -> auto_testable_old X1). tauto. exact (rem_4751 epsilon_mknows_old_ptestable_old X1).
Defined.

Remark rem_4758 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_testable_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto_testable_old X1). 2:apply (rem_4757 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_4744 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4759 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4758 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_dec_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4760 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old (dec X1 X2) -> auto_testable_old (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_2448 X1 X2 H);  intros.
  apply (rem_4759 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4761 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto___def_10 X1 -> auto___def_10 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4762 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_10 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_10 X1). tauto. exact (rem_4761 epsilon_mknows_old_ptestable_old X1).
Defined.

Remark rem_4763 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X2:term, auto___def_11 X2 -> auto___def_11 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4764 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_11 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_11 X2 -> auto___def_11 X2). tauto. exact (rem_4763 epsilon_mknows_old_ptestable_old X2).
Defined.

Remark rem_4765 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto___def_10 X1 /\ auto___def_11 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_10 X1). 2:apply (rem_4762 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  cut (auto___def_11 X2). 2:apply (rem_4764 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4766 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4765 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_enc_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4767 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto___def_15 X1 -> auto___def_15 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4768 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_15 X1 -> auto___def_15 X1). tauto. exact (rem_4767 epsilon_mknows_old_ptestable_old X1).
Defined.

Remark rem_4769 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X2:term, auto___def_16 X2 -> auto___def_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4770 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_16 X2 -> auto___def_16 X2). tauto. exact (rem_4769 epsilon_mknows_old_ptestable_old X2).
Defined.

Remark rem_4771 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto___def_15 X1 /\ auto___def_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_15 X1). 2:apply (rem_4768 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  cut (auto___def_16 X2). 2:apply (rem_4770 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4772 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4771 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_enc_2;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4773 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto___def_19 X1 -> auto___def_19 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4774 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_19 X1 -> auto___def_19 X1). tauto. exact (rem_4773 epsilon_mknows_old_ptestable_old X1).
Defined.

Remark rem_4775 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X2:term, auto___def_20 X2 -> auto___def_20 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4776 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_20 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_20 X2 -> auto___def_20 X2). tauto. exact (rem_4775 epsilon_mknows_old_ptestable_old X2).
Defined.

Remark rem_4777 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto___def_19 X1 /\ auto___def_20 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_19 X1). 2:apply (rem_4774 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  cut (auto___def_20 X2). 2:apply (rem_4776 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4778 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4777 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_enc_3;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4779 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4758 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_enc_4;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4780 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old (enc X1 X2) -> auto_testable_old (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_1290 X1 X2 H);  intros.
  apply (rem_4766 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
  apply (rem_4772 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
  apply (rem_4778 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
  apply (rem_4779 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4781 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X2:term, auto_knows_old X2 -> auto_testable_old X2. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intros X2.
  cut (auto_knows_old X2 -> auto_testable_old X2). tauto. exact (Hrec X2).
Defined.

Remark rem_4782 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto_knows_old X2 -> auto_testable_old X2). tauto. exact (rem_4781 epsilon_mknows_old_ptestable_old X2).
Defined.

Remark rem_4783 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto_testable_old X2). 2:apply (rem_4782 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4784 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4783 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_cons_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4785 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto_testable_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_1263 X1 X2 H);  intros.
  apply (rem_4784 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4786 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1. intros A1.
  case (rem_4752 epsilon_mknows_old_ptestable_old X1 A1). clear  epsilon_mknows_old_ptestable_old A1. intros. apply trans_testable_old_s_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1. tauto.
Defined.

Remark rem_4787 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto_knows_old (s X1) -> auto_testable_old (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1. intro H. intros.
  elim (rem_2473 X1 H);  intros.
  apply (rem_4786 epsilon_mknows_old_ptestable_old X1);  tauto.
Defined.

Remark rem_4788 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> auto_testable_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old.  case (rem_4748 epsilon_mknows_old_ptestable_old). clear  epsilon_mknows_old_ptestable_old. intros. apply trans_testable_old_i_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old. tauto.
Defined.

Remark rem_4789 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> auto_knows_old i -> auto_testable_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intro H. intros.
  elim (rem_2476 H);  intros.
  apply (rem_4788 epsilon_mknows_old_ptestable_old);  tauto.
Defined.

Remark rem_4790 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> auto_testable_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old.  case (rem_4748 epsilon_mknows_old_ptestable_old). clear  epsilon_mknows_old_ptestable_old. intros. apply trans_testable_old_nil_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old. tauto.
Defined.

Remark rem_4791 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> auto_knows_old nil -> auto_testable_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intro H. intros.
  elim (rem_2479 H);  intros.
  apply (rem_4790 epsilon_mknows_old_ptestable_old);  tauto.
Defined.

Remark rem_4792 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> auto_testable_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old.  case (rem_4748 epsilon_mknows_old_ptestable_old). clear  epsilon_mknows_old_ptestable_old. intros. apply trans_testable_old_server_1;  tauto.
 clear  epsilon_mknows_old_ptestable_old. tauto.
Defined.

Remark rem_4793 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> auto_knows_old server -> auto_testable_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intro H. intros.
  elim (rem_2482 H);  intros.
  apply (rem_4792 epsilon_mknows_old_ptestable_old);  tauto.
Defined.

Remark rem_4794 : (forall X:term, auto___def_61 X -> auto___def_55 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_61_p__def_55.  tauto.
Defined.

Remark rem_4795 : (forall X:term, auto___def_61 X -> auto___def_55 X)
    -> auto___def_55 prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_61_p__def_55.  case (rem_4794 epsilon_m__def_61_p__def_55). clear  epsilon_m__def_61_p__def_55. intros. apply trans___def_55_prv_1;  tauto.
 clear  epsilon_m__def_61_p__def_55. tauto.
Defined.

Remark rem_4796 : (forall X:term, auto___def_61 X -> auto___def_55 X)
    -> auto___def_61 prv -> auto___def_55 prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_p__def_55. intro H. intros.
  elim (rem_4469 H);  intros.
  apply (rem_4795 epsilon_m__def_61_p__def_55);  tauto.
Defined.

Remark rem_4797 : forall X1:term, auto___def_61 X1 -> auto___def_55 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_61_p__def_55 1.
  intro X. case X.
   intro H. elim (rem_4482  H).
   intro H. elim (rem_4474  H).
  intros X1 X2. intro H. elim (rem_4486 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4484 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4485 X1 X2 H).
   intro H. elim (rem_4489  H).
  intros X1 X2. intro H. elim (rem_4493 X1 X2 H).
   intro H. elim (rem_4490  H).
  intros X1 X2. intro H. elim (rem_4492 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4475 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4472 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4483 X1 X2 H).
  intros X1. intro H. elim (rem_4478 X1 H).
  intros X1 X2. intro H. elim (rem_4481 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4480 X1 X2 H).
  exact (rem_4796 epsilon_m__def_61_p__def_55 ).
   intro H. elim (rem_4479  H).
  intros X1 X2. intro H. elim (rem_4477 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4476 X1 X2 H).
  intros X1. intro H. elim (rem_4487 X1 H).
   intro H. elim (rem_4491  H).
  intros X1 X2. intro H. elim (rem_4488 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4473 X1 X2 H).
   intro H. elim (rem_1309  H).
Qed.

Remark rem_4798 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto___def_61 X1 -> auto___def_55 X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_old. exact (rem_4797).
Defined.

Remark rem_4799 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_55 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_55 X1). tauto. exact (rem_4798 epsilon_mknows_old_ptestable_old X1).
Defined.

Remark rem_4800 : forall X2:term, auto___def_62 X2 -> auto___def_4 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_62_p__def_4 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_3120 epsilon_m__def_62_p__def_4 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_4801 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X2:term, auto___def_62 X2 -> auto___def_4 X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_old. exact (rem_4800).
Defined.

Remark rem_4802 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_4 X2). tauto. exact (rem_4801 epsilon_mknows_old_ptestable_old X2).
Defined.

Remark rem_4803 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_55 X1 /\ auto___def_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_55 X1). 2:apply (rem_4799 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  cut (auto___def_4 X2). 2:apply (rem_4802 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4804 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4803 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_key_2;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4805 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4806 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4805 epsilon_mknows_old_ptestable_old X1).
Defined.

Remark rem_4807 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4808 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_4807 epsilon_mknows_old_ptestable_old X2).
Defined.

Remark rem_4809 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4806 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_4808 epsilon_mknows_old_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4810 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_4809 epsilon_mknows_old_ptestable_old X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_old A1 A2. intros. apply trans_testable_old_key_3;  tauto.
 clear  epsilon_mknows_old_ptestable_old A1 A2. tauto.
Defined.

Remark rem_4811 : (forall X:term, auto_knows_old X -> auto_testable_old X)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto_testable_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_1361 X1 X2 H);  intros.
  apply (rem_4804 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
  apply (rem_4810 epsilon_mknows_old_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_4812 : forall X1:term, auto_knows_old X1 -> auto_testable_old X1. (* Induct. *)
Proof.
  fix epsilon_mknows_old_ptestable_old 1.
  intro X. case X.
  exact (rem_4756 epsilon_mknows_old_ptestable_old ).
  exact (rem_4750 epsilon_mknows_old_ptestable_old ).
  intros X1 X2;  exact (rem_4785 epsilon_mknows_old_ptestable_old X1 X2).
  intros X1 X2;  exact (rem_4747 epsilon_mknows_old_ptestable_old X1 X2).
  intros X1 X2;  exact (rem_4760 epsilon_mknows_old_ptestable_old X1 X2).
  intros X1 X2;  exact (rem_4780 epsilon_mknows_old_ptestable_old X1 X2).
  exact (rem_4789 epsilon_mknows_old_ptestable_old ).
  intros X1 X2;  exact (rem_4811 epsilon_mknows_old_ptestable_old X1 X2).
  exact (rem_4791 epsilon_mknows_old_ptestable_old ).
  intros X1 X2. intro H. elim (rem_2508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2505 X1 X2 H).
  intros X1;  exact (rem_4754 epsilon_mknows_old_ptestable_old X1).
  intros X1 X2. intro H. elim (rem_2503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1287 X1 X2 H).
   intro H. elim (rem_2504  H).
   intro H. elim (rem_2502  H).
  intros X1 X2. intro H. elim (rem_2501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2500 X1 X2 H).
  intros X1;  exact (rem_4787 epsilon_mknows_old_ptestable_old X1).
  exact (rem_4793 epsilon_mknows_old_ptestable_old ).
  intros X1 X2. intro H. elim (rem_2507 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2498 X1 X2 H).
   intro H. elim (rem_2506  H).
Qed.

Remark rem_4813 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X1 -> auto_testable_old X1). tauto. exact (rem_4812 X1).
Qed.

Remark rem_4814 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X1 -> auto_testable_old X1). tauto. exact (rem_4813 X1 X2).
Qed.

Remark rem_4815 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old (crypt X1 X2) -> auto_testable_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_79 X1 X2 H);  intros.
  apply (rem_4336 X1 X2);  tauto.
  apply (rem_4467 X1 X2);  tauto.
  apply (rem_4552 X1 X2);  tauto.
  apply (rem_4683 X1 X2);  tauto.
  apply (rem_4722 X1 X2);  tauto.
  apply (rem_4814 X1 X2);  tauto.
Qed.

Remark rem_4816 : forall X1 X2:term, auto_testable_old (crypt X1 X2) -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_testable_old (crypt X1 X2) -> auto_testable_old X1). tauto. exact (rem_4815 X1 X2).
Qed.

Remark rem_4817 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4818 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_4817 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4819 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4820 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_4819 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4821 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_4818 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_4820 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4822 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4821 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_crypt_1;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4823 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___type_12 X1 -> auto___type_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4824 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___type_12 X1 -> auto___type_12 X1). tauto. exact (rem_4823 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4825 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto___def_54 X2 -> auto___def_54 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4826 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___def_54 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_54 X2 -> auto___def_54 X2). tauto. exact (rem_4825 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4827 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> (auto___type_12 X1 /\ auto___def_54 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_4824 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto___def_54 X2). 2:apply (rem_4826 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4828 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_54 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4827 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_crypt_2;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4829 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4830 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_4829 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4831 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4832 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_4831 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4833 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_4830 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_4832 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4834 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4833 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_crypt_3;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4835 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___type_11 X1 -> auto___type_11 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4836 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___type_11 X1 -> auto___type_11 X1). tauto. exact (rem_4835 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4837 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4838 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4837 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4839 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> (auto___type_11 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_4836 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4838 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4840 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_52 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4839 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4841 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4842 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_4841 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4843 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4844 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_4843 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4845 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_4842 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_4844 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4846 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4845 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_crypt_5;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4847 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4848 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_4847 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4849 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4850 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_4849 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4851 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_4848 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_4850 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4852 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4851 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_crypt_6;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4853 : forall X1 X2:term, auto___type_13 (crypt X1 X2) -> or_6
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___type_12 X1 /\ auto___def_54 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_11 X1 /\ auto___def_52 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_6_intro_1; tauto.
  intros. apply or_6_intro_2; tauto.
  intros. apply or_6_intro_3; tauto.
  intros. apply or_6_intro_4; tauto.
  intros. apply or_6_intro_5; tauto.
  intros. apply or_6_intro_6; tauto.
Qed.

Remark rem_4854 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_13 (crypt X1 X2) -> auto___type_12 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_4853 X1 X2 H);  intros.
  apply (rem_4822 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4828 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4834 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4840 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4846 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4852 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_4855 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12.  tauto.
Defined.

Remark rem_4856 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> auto___type_12 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12.  case (rem_4855 epsilon_m__type_13_p__type_12). clear  epsilon_m__type_13_p__type_12. intros. apply trans___type_12_bob_1;  tauto.
 clear  epsilon_m__type_13_p__type_12. tauto.
Defined.

Remark rem_4857 : auto___type_13 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4858 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> auto___type_13 bob -> auto___type_12 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intro H. intros.
  elim (rem_4857 H);  intros.
  apply (rem_4856 epsilon_m__type_13_p__type_12);  tauto.
Defined.

Remark rem_4859 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4860 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto_testable_old X1 -> auto_testable_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1. intros A1.
  cut (auto_testable_old X1). 2:apply (rem_4859 epsilon_m__type_13_p__type_12 X1);  assumption.
  tauto.
Defined.

Remark rem_4861 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto_testable_old X1 -> auto___type_12 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1. intros A1.
  case (rem_4860 epsilon_m__type_13_p__type_12 X1 A1). clear  epsilon_m__type_13_p__type_12 A1. intros. apply trans___type_12_p_1;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1. tauto.
Defined.

Remark rem_4862 : forall X1:term, auto___type_13 (p X1) -> or_1
    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4863 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___type_13 (p X1) -> auto___type_12 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1. intro H. intros.
  elim (rem_4862 X1 H);  intros.
  apply (rem_4861 epsilon_m__type_13_p__type_12 X1);  tauto.
Defined.

Remark rem_4864 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> auto___type_12 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12.  case (rem_4855 epsilon_m__type_13_p__type_12). clear  epsilon_m__type_13_p__type_12. intros. apply trans___type_12_alice_1;  tauto.
 clear  epsilon_m__type_13_p__type_12. tauto.
Defined.

Remark rem_4865 : auto___type_13 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4866 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> auto___type_13 alice -> auto___type_12 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intro H. intros.
  elim (rem_4865 H);  intros.
  apply (rem_4864 epsilon_m__type_13_p__type_12);  tauto.
Defined.

Remark rem_4867 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto_testable_old X1 -> auto_testable_old X1). tauto. exact (rem_4859 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4868 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_4849 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4869 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> (auto_testable_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto_testable_old X1). 2:apply (rem_4867 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_4868 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4870 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_12 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4869 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_dec_1;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4871 : forall X1 X2:term, auto___type_13 (dec X1 X2) -> or_1
    (auto_testable_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4872 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_13 (dec X1 X2) -> auto___type_12 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_4871 X1 X2 H);  intros.
  apply (rem_4870 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_4873 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___def_10 X1 -> auto___def_10 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4874 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_10 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_10 X1). tauto. exact (rem_4873 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4875 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto___def_11 X2 -> auto___def_11 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4876 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_11 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_11 X2 -> auto___def_11 X2). tauto. exact (rem_4875 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4877 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto___def_10 X1 /\ auto___def_11 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_10 X1). 2:apply (rem_4874 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto___def_11 X2). 2:apply (rem_4876 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4878 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___type_12 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4877 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_enc_1;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4879 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___def_15 X1 -> auto___def_15 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4880 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_15 X1 -> auto___def_15 X1). tauto. exact (rem_4879 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4881 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto___def_16 X2 -> auto___def_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4882 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_16 X2 -> auto___def_16 X2). tauto. exact (rem_4881 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4883 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto___def_15 X1 /\ auto___def_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_15 X1). 2:apply (rem_4880 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto___def_16 X2). 2:apply (rem_4882 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4884 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___type_12 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4883 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_enc_2;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4885 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___def_19 X1 -> auto___def_19 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4886 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_19 X1 -> auto___def_19 X1). tauto. exact (rem_4885 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4887 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto___def_20 X2 -> auto___def_20 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4888 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_20 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_20 X2 -> auto___def_20 X2). tauto. exact (rem_4887 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4889 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto___def_19 X1 /\ auto___def_20 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_19 X1). 2:apply (rem_4886 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto___def_20 X2). 2:apply (rem_4888 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4890 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___type_12 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4889 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_enc_3;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4891 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto___type_12 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4869 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_enc_4;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4892 : forall X1 X2:term, auto___type_13 (enc X1 X2) -> or_4
    (auto___def_10 X1 /\ auto___def_11 X2)
    (auto___def_15 X1 /\ auto___def_16 X2)
    (auto___def_19 X1 /\ auto___def_20 X2)
    (auto_testable_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_4893 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_13 (enc X1 X2) -> auto___type_12 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_4892 X1 X2 H);  intros.
  apply (rem_4878 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4884 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4890 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4891 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_4894 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4895 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto_testable_old X2 -> auto_testable_old X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X2. intros A1.
  cut (auto_testable_old X2). 2:apply (rem_4894 epsilon_m__type_13_p__type_12 X2);  assumption.
  tauto.
Defined.

Remark rem_4896 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X2 -> auto___type_12 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1.
  case (rem_4895 epsilon_m__type_13_p__type_12 X2 A1). clear  epsilon_m__type_13_p__type_12 A1. intros. apply trans___type_12_cons_1;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1. tauto.
Defined.

Remark rem_4897 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto_testable_old X1 -> auto___type_12 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1.
  case (rem_4860 epsilon_m__type_13_p__type_12 X1 A1). clear  epsilon_m__type_13_p__type_12 A1. intros. apply trans___type_12_cons_2;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1. tauto.
Defined.

Remark rem_4898 : forall X1 X2:term, auto___type_13 (cons X1 X2) -> or_2
    (auto_testable_old X2)    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_4899 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_13 (cons X1 X2) -> auto___type_12 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_4898 X1 X2 H);  intros.
  apply (rem_4896 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4897 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_4900 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto_testable_old X1 -> auto___type_12 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1. intros A1.
  case (rem_4860 epsilon_m__type_13_p__type_12 X1 A1). clear  epsilon_m__type_13_p__type_12 A1. intros. apply trans___type_12_s_1;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1. tauto.
Defined.

Remark rem_4901 : forall X1:term, auto___type_13 (s X1) -> or_1
    (auto_testable_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4902 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___type_13 (s X1) -> auto___type_12 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1. intro H. intros.
  elim (rem_4901 X1 H);  intros.
  apply (rem_4900 epsilon_m__type_13_p__type_12 X1);  tauto.
Defined.

Remark rem_4903 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> auto___type_12 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12.  case (rem_4855 epsilon_m__type_13_p__type_12). clear  epsilon_m__type_13_p__type_12. intros. apply trans___type_12_i_1;  tauto.
 clear  epsilon_m__type_13_p__type_12. tauto.
Defined.

Remark rem_4904 : auto___type_13 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4905 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> auto___type_13 i -> auto___type_12 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intro H. intros.
  elim (rem_4904 H);  intros.
  apply (rem_4903 epsilon_m__type_13_p__type_12);  tauto.
Defined.

Remark rem_4906 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> auto___type_12 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12.  case (rem_4855 epsilon_m__type_13_p__type_12). clear  epsilon_m__type_13_p__type_12. intros. apply trans___type_12_nil_1;  tauto.
 clear  epsilon_m__type_13_p__type_12. tauto.
Defined.

Remark rem_4907 : auto___type_13 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4908 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> auto___type_13 nil -> auto___type_12 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intro H. intros.
  elim (rem_4907 H);  intros.
  apply (rem_4906 epsilon_m__type_13_p__type_12);  tauto.
Defined.

Remark rem_4909 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> auto___type_12 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12.  case (rem_4855 epsilon_m__type_13_p__type_12). clear  epsilon_m__type_13_p__type_12. intros. apply trans___type_12_server_1;  tauto.
 clear  epsilon_m__type_13_p__type_12. tauto.
Defined.

Remark rem_4910 : auto___type_13 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4911 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> auto___type_13 server -> auto___type_12 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intro H. intros.
  elim (rem_4910 H);  intros.
  apply (rem_4909 epsilon_m__type_13_p__type_12);  tauto.
Defined.

Remark rem_4912 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___def_60 X1 -> auto___def_60 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4913 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___def_60 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_60 X1 -> auto___def_60 X1). tauto. exact (rem_4912 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4914 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto___type_16 X2 -> auto___type_16 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4915 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___type_16 X2 -> auto___type_16 X2). tauto. exact (rem_4914 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4916 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> (auto___def_60 X1 /\ auto___type_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_60 X1). 2:apply (rem_4913 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto___type_16 X2). 2:apply (rem_4915 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4917 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4916 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_key_1;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4918 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___def_55 X1 -> auto___def_55 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4919 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_55 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_55 X1 -> auto___def_55 X1). tauto. exact (rem_4918 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4920 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto___def_4 X2 -> auto___def_4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4921 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_4 X2 -> auto___def_4 X2). tauto. exact (rem_4920 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4922 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> (auto___def_55 X1 /\ auto___def_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_55 X1). 2:apply (rem_4919 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto___def_4 X2). 2:apply (rem_4921 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4923 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4922 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_key_2;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4924 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4925 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4924 epsilon_m__type_13_p__type_12 X1).
Defined.

Remark rem_4926 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4927 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_4926 epsilon_m__type_13_p__type_12 X2).
Defined.

Remark rem_4928 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4925 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_4927 epsilon_m__type_13_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4929 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_4928 epsilon_m__type_13_p__type_12 X1 X2 A1 A2). clear  epsilon_m__type_13_p__type_12 A1 A2. intros. apply trans___type_12_key_3;  tauto.
 clear  epsilon_m__type_13_p__type_12 A1 A2. tauto.
Defined.

Remark rem_4930 : forall X1 X2:term, auto___type_13 (key X1 X2) -> or_3
    (auto___def_60 X1 /\ auto___type_16 X2)
    (auto___def_55 X1 /\ auto___def_4 X2)
    (auto___def_51 X1 /\ auto_agent 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_4931 : (forall X:term, auto___type_13 X -> auto___type_12 X)
    -> forall X1 X2:term, auto___type_13 (key X1 X2) -> auto___type_12 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_4930 X1 X2 H);  intros.
  apply (rem_4917 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4923 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
  apply (rem_4929 epsilon_m__type_13_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_4932 : forall X1 X2:term, auto___type_13 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4933 : forall X1 X2:term, auto___type_13 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4934 : forall X1 X2:term, auto___type_13 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4935 : forall X1 X2:term, auto___type_13 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4936 : forall X1 X2:term, auto___type_13 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4937 : auto___type_13 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4938 : forall X1 X2:term, auto___type_13 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4939 : forall X1 X2:term, auto___type_13 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4940 : auto___type_13 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4941 : forall X1 X2:term, auto___type_13 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4942 : auto___type_13 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4943 : forall X1 X2:term, auto___type_13 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4944 : forall X1 X2:term, auto___type_13 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4945 : forall X1:term, auto___type_13 X1 -> auto___type_12 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_13_p__type_12 1.
  intro X. case X.
  exact (rem_4866 epsilon_m__type_13_p__type_12 ).
  exact (rem_4858 epsilon_m__type_13_p__type_12 ).
  intros X1 X2;  exact (rem_4899 epsilon_m__type_13_p__type_12 X1 X2).
  intros X1 X2;  exact (rem_4854 epsilon_m__type_13_p__type_12 X1 X2).
  intros X1 X2;  exact (rem_4872 epsilon_m__type_13_p__type_12 X1 X2).
  intros X1 X2;  exact (rem_4893 epsilon_m__type_13_p__type_12 X1 X2).
  exact (rem_4905 epsilon_m__type_13_p__type_12 ).
  intros X1 X2;  exact (rem_4931 epsilon_m__type_13_p__type_12 X1 X2).
  exact (rem_4908 epsilon_m__type_13_p__type_12 ).
  intros X1 X2. intro H. elim (rem_4944 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4934 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4932 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4941 X1 X2 H).
  intros X1;  exact (rem_4863 epsilon_m__type_13_p__type_12 X1).
  intros X1 X2. intro H. elim (rem_4939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4938 X1 X2 H).
   intro H. elim (rem_4940  H).
   intro H. elim (rem_4937  H).
  intros X1 X2. intro H. elim (rem_4936 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4935 X1 X2 H).
  intros X1;  exact (rem_4902 epsilon_m__type_13_p__type_12 X1).
  exact (rem_4911 epsilon_m__type_13_p__type_12 ).
  intros X1 X2. intro H. elim (rem_4943 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4933 X1 X2 H).
   intro H. elim (rem_4942  H).
Qed.

Remark rem_4946 : forall X1 X2:term, auto___def_56 X2 -> auto___type_13 X1 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_13 X1 -> auto___type_12 X1). tauto. exact (rem_4945 X1).
Qed.

Remark rem_4947 : forall X1 X2:term, auto___def_56 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4948 : forall X1 X2:term, auto___def_56 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4949 : forall X1 X2:term, auto___def_56 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4950 : auto___def_56 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4951 : forall X1 X2:term, auto___def_56 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4952 : forall X1 X2:term, auto___def_56 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4953 : forall X1 X2:term, auto___def_56 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4954 : forall X1:term, auto___def_56 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4955 : auto___def_56 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4956 : forall X1 X2:term, auto___def_56 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4957 : forall X1 X2:term, auto___def_56 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4958 : auto___def_56 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4959 : auto___def_56 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4960 : forall X1 X2:term, auto___def_56 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4961 : forall X1 X2:term, auto___def_56 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4962 : forall X1 X2:term, auto___def_56 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4963 : forall X1 X2:term, auto___def_56 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4964 : forall X1:term, auto___def_56 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4965 : auto___def_56 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4966 : forall X1 X2:term, auto___def_56 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4967 : auto___def_56 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4968 : auto___def_56 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4969 : auto___def_56 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4970 : forall X1 X2:term, auto___def_56 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4971 : forall X1 X2:term, auto___def_56 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4972 : forall X2:term, auto___def_56 X2 -> auto___def_54 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_56_p__def_54 1.
  intro X. case X.
   intro H. elim (rem_4958  H).
   intro H. elim (rem_4950  H).
  intros X1 X2. intro H. elim (rem_4963 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4947 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4961 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4962 X1 X2 H).
   intro H. elim (rem_4967  H).
  intros X1 X2. intro H. elim (rem_4971 X1 X2 H).
   intro H. elim (rem_4968  H).
  intros X1 X2. intro H. elim (rem_4970 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4951 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4948 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4960 X1 X2 H).
  intros X1. intro H. elim (rem_4954 X1 H).
  intros X1 X2. intro H. elim (rem_4957 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4956 X1 X2 H).
   intro H. elim (rem_4959  H).
   intro H. elim (rem_4955  H).
  intros X1 X2. intro H. elim (rem_4953 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4952 X1 X2 H).
  intros X1. intro H. elim (rem_4964 X1 H).
   intro H. elim (rem_4969  H).
  intros X1 X2. intro H. elim (rem_4966 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4949 X1 X2 H).
   intro H. elim (rem_4965  H).
Qed.

Remark rem_4973 : forall X1 X2:term, auto___def_56 X2 -> auto___type_13 X1 -> auto___def_54 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_56 X2 -> auto___def_54 X2). tauto. exact (rem_4972 X2).
Qed.

Remark rem_4974 : forall X1 X2:term, auto___def_56 X2 -> auto___type_13 X1 -> (auto___type_12 X1 /\ auto___def_54 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_4946 X1 X2);  assumption.
  cut (auto___def_54 X2). 2:apply (rem_4973 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_4975 : forall X1 X2:term, auto___def_56 X2 -> auto___type_13 X1 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_4974 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_old_crypt_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4976 : (forall X:term, auto___def_72 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (passwd_current X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_72_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1073 X1 X2 H);  intros.
Defined.

Remark rem_4977 : (forall X:term, auto___def_72 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_72 (passwd_current X1 X2) -> auto_knows_current (passwd_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_72_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_2917 X1 X2 H);  intros.
  apply (rem_4976 epsilon_m__def_72_mknows_current X1 X2);  tauto.
Defined.

Remark rem_4978 : forall X1 X2:term, auto___def_72 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4979 : forall X1 X2:term, auto___def_72 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4980 : forall X1 X2:term, auto___def_72 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4981 : auto___def_72 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4982 : forall X1 X2:term, auto___def_72 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4983 : forall X1 X2:term, auto___def_72 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4984 : forall X1 X2:term, auto___def_72 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4985 : forall X1:term, auto___def_72 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4986 : auto___def_72 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4987 : forall X1 X2:term, auto___def_72 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4988 : auto___def_72 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4989 : auto___def_72 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4990 : forall X1 X2:term, auto___def_72 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4991 : forall X1 X2:term, auto___def_72 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4992 : forall X1 X2:term, auto___def_72 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4993 : forall X1 X2:term, auto___def_72 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4994 : forall X1:term, auto___def_72 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4995 : auto___def_72 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4996 : forall X1 X2:term, auto___def_72 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4997 : auto___def_72 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4998 : auto___def_72 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4999 : auto___def_72 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5000 : forall X1 X2:term, auto___def_72 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5001 : forall X1 X2:term, auto___def_72 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5002 : forall X1:term, auto___def_72 X1 -> auto_knows_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_72_mknows_current 1.
  intro X. case X.
   intro H. elim (rem_4988  H).
   intro H. elim (rem_4981  H).
  intros X1 X2. intro H. elim (rem_4993 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4978 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4991 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4992 X1 X2 H).
   intro H. elim (rem_4997  H).
  intros X1 X2. intro H. elim (rem_5001 X1 X2 H).
   intro H. elim (rem_4998  H).
  intros X1 X2. intro H. elim (rem_5000 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4982 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4979 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4990 X1 X2 H).
  intros X1. intro H. elim (rem_4985 X1 H).
  intros X1 X2;  exact (rem_4977 epsilon_m__def_72_mknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_4987 X1 X2 H).
   intro H. elim (rem_4989  H).
   intro H. elim (rem_4986  H).
  intros X1 X2. intro H. elim (rem_4984 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4983 X1 X2 H).
  intros X1. intro H. elim (rem_4994 X1 H).
   intro H. elim (rem_4999  H).
  intros X1 X2. intro H. elim (rem_4996 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4980 X1 X2 H).
   intro H. elim (rem_4995  H).
Qed.

Remark rem_5003 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5002 X2)). tauto.
Qed.

Remark rem_5004 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_5005 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_5004 X1 X2).
Qed.

Remark rem_5006 : forall X1 X2:term, auto___def_80 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5007 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (crypt X1 X2) -> auto___def_17 X1 -> auto___type_2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5006 X1 X2 H);  intros.
Defined.

Remark rem_5008 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5006 X1 X2 H);  intros.
Defined.

Remark rem_5009 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (crypt X1 X2) -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5006 X1 X2 H);  intros.
Defined.

Remark rem_5010 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5006 X1 X2 H);  intros.
Defined.

Remark rem_5011 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (crypt X1 X2) -> auto___type_22 X1 -> auto___def_104 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5006 X1 X2 H);  intros.
Defined.

Remark rem_5012 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (crypt X1 X2) -> auto___def_88 X1 -> auto___def_89 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5006 X1 X2 H);  intros.
Defined.

Remark rem_5013 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5006 X1 X2 H);  intros.
Defined.

Remark rem_5014 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5006 X1 X2 H);  intros.
Defined.

Remark rem_5015 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (crypt X1 X2) -> auto___def_84 X1 -> auto___def_85 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5006 X1 X2 H);  intros.
Defined.

Remark rem_5016 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_80 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_987 X1 X2 H);  intros.
  apply (rem_5007 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5008 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5009 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5010 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5011 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5012 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5013 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5014 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5015 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
Defined.

Remark rem_5017 : auto___def_80 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5018 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> auto___def_80 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intro H. intros.
  elim (rem_5017 H);  intros.
Defined.

Remark rem_5019 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> auto_knows_current bob -> auto___def_80 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intro H. intros.
  elim (rem_991 H);  intros.
  apply (rem_5018 epsilon_mknows_current_m__def_80);  tauto.
Defined.

Remark rem_5020 : forall X1 X2:term, auto___def_80 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5021 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5020 X1 X2 H);  intros.
Defined.

Remark rem_5022 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_old X1 X2) -> auto___def_80 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_994 X1 X2 H);  intros.
  apply (rem_5021 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
Defined.

Remark rem_5023 : forall X1:term, auto___def_80 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5024 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1:term, auto___def_80 (p X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1. intro H. intros.
  elim (rem_5023 X1 H);  intros.
Defined.

Remark rem_5025 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1:term, auto_knows_current (p X1) -> auto___def_80 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1. intro H. intros.
  elim (rem_998 X1 H);  intros.
  apply (rem_5024 epsilon_mknows_current_m__def_80 X1);  tauto.
Defined.

Remark rem_5026 : forall X1 X2:term, auto___def_80 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5027 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5026 X1 X2 H);  intros.
Defined.

Remark rem_5028 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto_knows_current (passwd_old X1 X2) -> auto___def_80 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_1001 X1 X2 H);  intros.
  apply (rem_5027 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
Defined.

Remark rem_5029 : auto___def_80 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5030 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> auto___def_80 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intro H. intros.
  elim (rem_5029 H);  intros.
Defined.

Remark rem_5031 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> auto_knows_current alice -> auto___def_80 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intro H. intros.
  elim (rem_1004 H);  intros.
  apply (rem_5030 epsilon_mknows_current_m__def_80);  tauto.
Defined.

Remark rem_5032 : forall X1 X2:term, auto___def_80 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5033 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5032 X1 X2 H);  intros.
Defined.

Remark rem_5034 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto_knows_current (nonceb_old X1 X2) -> auto___def_80 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_1007 X1 X2 H);  intros.
  apply (rem_5033 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
Defined.

Remark rem_5035 : forall X1 X2:term, auto___def_80 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5036 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (dec X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5035 X1 X2 H);  intros.
Defined.

Remark rem_5037 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto_knows_current (dec X1 X2) -> auto___def_80 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_1010 X1 X2 H);  intros.
  apply (rem_5036 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
Defined.

Remark rem_5038 : forall X1 X2:term, auto___def_80 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5039 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (enc X1 X2) -> auto___def_71 X1 -> auto___def_72 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5038 X1 X2 H);  intros.
Defined.

Remark rem_5040 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (enc X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5038 X1 X2 H);  intros.
Defined.

Remark rem_5041 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (enc X1 X2) -> auto___def_79 X1 -> auto___def_80 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5038 X1 X2 H);  intros.
Defined.

Remark rem_5042 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (enc X1 X2) -> auto___def_75 X1 -> auto___def_76 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5038 X1 X2 H);  intros.
Defined.

Remark rem_5043 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto_knows_current (enc X1 X2) -> auto___def_80 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_1031 X1 X2 H);  intros.
  apply (rem_5039 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5040 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5041 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5042 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
Defined.

Remark rem_5044 : forall X1 X2:term, auto___def_80 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5045 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (cons X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5044 X1 X2 H);  intros.
Defined.

Remark rem_5046 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___def_80 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_1034 X1 X2 H);  intros.
  apply (rem_5045 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
Defined.

Remark rem_5047 : forall X1:term, auto___def_80 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5048 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1:term, auto___def_80 (s X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1. intro H. intros.
  elim (rem_5047 X1 H);  intros.
Defined.

Remark rem_5049 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto___def_80 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1. intro H. intros.
  elim (rem_1037 X1 H);  intros.
  apply (rem_5048 epsilon_mknows_current_m__def_80 X1);  tauto.
Defined.

Remark rem_5050 : auto___def_80 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5051 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> auto___def_80 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intro H. intros.
  elim (rem_5050 H);  intros.
Defined.

Remark rem_5052 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> auto_knows_current i -> auto___def_80 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intro H. intros.
  elim (rem_1040 H);  intros.
  apply (rem_5051 epsilon_mknows_current_m__def_80);  tauto.
Defined.

Remark rem_5053 : auto___def_80 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5054 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> auto___def_80 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intro H. intros.
  elim (rem_5053 H);  intros.
Defined.

Remark rem_5055 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> auto_knows_current nil -> auto___def_80 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intro H. intros.
  elim (rem_1043 H);  intros.
  apply (rem_5054 epsilon_mknows_current_m__def_80);  tauto.
Defined.

Remark rem_5056 : auto___def_80 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5057 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> auto___def_80 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intro H. intros.
  elim (rem_5056 H);  intros.
Defined.

Remark rem_5058 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> auto_knows_current server -> auto___def_80 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intro H. intros.
  elim (rem_1046 H);  intros.
  apply (rem_5057 epsilon_mknows_current_m__def_80);  tauto.
Defined.

Remark rem_5059 : forall X1 X2:term, auto___def_80 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5060 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (key X1 X2) -> auto___def_61 X1 -> auto___def_62 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5059 X1 X2 H);  intros.
Defined.

Remark rem_5061 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5059 X1 X2 H);  intros.
Defined.

Remark rem_5062 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto___def_80 (key X1 X2) -> auto___def_12 X1 -> auto___def_13 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_5059 X1 X2 H);  intros.
Defined.

Remark rem_5063 : (forall X:term, auto_knows_current X -> auto___def_80 X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___def_80 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_80. intros X1 X2. intro H. intros.
  elim (rem_1066 X1 X2 H);  intros.
  apply (rem_5060 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5061 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
  apply (rem_5062 epsilon_mknows_current_m__def_80 X1 X2);  tauto.
Defined.

Remark rem_5064 : forall X1:term, auto_knows_current X1 -> auto___def_80 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_current_m__def_80 1.
  intro X. case X.
  exact (rem_5031 epsilon_mknows_current_m__def_80 ).
  exact (rem_5019 epsilon_mknows_current_m__def_80 ).
  intros X1 X2;  exact (rem_5046 epsilon_mknows_current_m__def_80 X1 X2).
  intros X1 X2;  exact (rem_5016 epsilon_mknows_current_m__def_80 X1 X2).
  intros X1 X2;  exact (rem_5037 epsilon_mknows_current_m__def_80 X1 X2).
  intros X1 X2;  exact (rem_5043 epsilon_mknows_current_m__def_80 X1 X2).
  exact (rem_5052 epsilon_mknows_current_m__def_80 ).
  intros X1 X2;  exact (rem_5063 epsilon_mknows_current_m__def_80 X1 X2).
  exact (rem_5055 epsilon_mknows_current_m__def_80 ).
  intros X1 X2. intro H. elim (rem_1077 X1 X2 H).
  intros X1 X2;  exact (rem_5022 epsilon_mknows_current_m__def_80 X1 X2).
  intros X1 X2. intro H. elim (rem_1068 X1 X2 H).
  intros X1 X2;  exact (rem_5034 epsilon_mknows_current_m__def_80 X1 X2).
  intros X1;  exact (rem_5025 epsilon_mknows_current_m__def_80 X1).
  intros X1 X2. intro H. elim (rem_1073 X1 X2 H).
  intros X1 X2;  exact (rem_5028 epsilon_mknows_current_m__def_80 X1 X2).
   intro H. elim (rem_1074  H).
   intro H. elim (rem_1072  H).
  intros X1 X2. intro H. elim (rem_1071 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1070 X1 X2 H).
  intros X1;  exact (rem_5049 epsilon_mknows_current_m__def_80 X1).
  exact (rem_5058 epsilon_mknows_current_m__def_80 ).
  intros X1 X2. intro H. elim (rem_1076 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1069 X1 X2 H).
   intro H. elim (rem_1075  H).
Qed.

Remark rem_5065 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5064 X2)). tauto.
Qed.

Remark rem_5066 : (forall X:term, auto___def_76 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (passwd_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_76_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1073 X1 X2 H);  intros.
Defined.

Remark rem_5067 : (forall X:term, auto___def_76 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_76 (passwd_current X1 X2) -> auto_knows_current (passwd_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_76_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_2940 X1 X2 H);  intros.
  apply (rem_5066 epsilon_m__def_76_mknows_current X1 X2);  tauto.
Defined.

Remark rem_5068 : forall X1 X2:term, auto___def_76 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5069 : forall X1 X2:term, auto___def_76 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5070 : forall X1 X2:term, auto___def_76 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5071 : auto___def_76 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5072 : forall X1 X2:term, auto___def_76 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5073 : forall X1 X2:term, auto___def_76 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5074 : forall X1 X2:term, auto___def_76 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5075 : forall X1:term, auto___def_76 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5076 : auto___def_76 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5077 : forall X1 X2:term, auto___def_76 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5078 : auto___def_76 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5079 : auto___def_76 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5080 : forall X1 X2:term, auto___def_76 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5081 : forall X1 X2:term, auto___def_76 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5082 : forall X1 X2:term, auto___def_76 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5083 : forall X1 X2:term, auto___def_76 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5084 : forall X1:term, auto___def_76 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5085 : auto___def_76 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5086 : forall X1 X2:term, auto___def_76 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5087 : auto___def_76 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5088 : auto___def_76 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5089 : auto___def_76 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5090 : forall X1 X2:term, auto___def_76 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5091 : forall X1 X2:term, auto___def_76 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5092 : forall X1:term, auto___def_76 X1 -> auto_knows_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_76_mknows_current 1.
  intro X. case X.
   intro H. elim (rem_5078  H).
   intro H. elim (rem_5071  H).
  intros X1 X2. intro H. elim (rem_5083 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5068 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5081 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5082 X1 X2 H).
   intro H. elim (rem_5087  H).
  intros X1 X2. intro H. elim (rem_5091 X1 X2 H).
   intro H. elim (rem_5088  H).
  intros X1 X2. intro H. elim (rem_5090 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5072 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5069 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5080 X1 X2 H).
  intros X1. intro H. elim (rem_5075 X1 H).
  intros X1 X2;  exact (rem_5067 epsilon_m__def_76_mknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_5077 X1 X2 H).
   intro H. elim (rem_5079  H).
   intro H. elim (rem_5076  H).
  intros X1 X2. intro H. elim (rem_5074 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5073 X1 X2 H).
  intros X1. intro H. elim (rem_5084 X1 H).
   intro H. elim (rem_5089  H).
  intros X1 X2. intro H. elim (rem_5086 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5070 X1 X2 H).
   intro H. elim (rem_5085  H).
Qed.

Remark rem_5093 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5092 X2)). tauto.
Qed.

Remark rem_5094 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current (enc X1 X2) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1031 X1 X2 H);  intros.
  apply (rem_5003 X1 X2);  tauto.
  apply (rem_5005 X1 X2);  tauto.
  apply (rem_5065 X1 X2);  tauto.
  apply (rem_5093 X1 X2);  tauto.
Qed.

Remark rem_5095 : forall X1 X2:term, auto_knows_current (enc X1 X2) -> auto_knows_current X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current (enc X1 X2) -> auto_knows_current X1). tauto. exact (rem_5094 X1 X2).
Qed.

Remark rem_5096 : (forall X:term, auto___def_108 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_108_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1071 X1 X2 H);  intros.
Defined.

Remark rem_5097 : forall X1 X2:term, auto___def_108 (r_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5098 : (forall X:term, auto___def_108 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_108 (r_current X1 X2) -> auto_knows_current (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_108_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_5097 X1 X2 H);  intros.
  apply (rem_5096 epsilon_m__def_108_mknows_current X1 X2);  tauto.
Defined.

Remark rem_5099 : forall X1 X2:term, auto___def_108 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5100 : forall X1 X2:term, auto___def_108 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5101 : forall X1 X2:term, auto___def_108 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5102 : auto___def_108 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5103 : forall X1 X2:term, auto___def_108 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5104 : forall X1 X2:term, auto___def_108 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5105 : forall X1:term, auto___def_108 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5106 : auto___def_108 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5107 : forall X1 X2:term, auto___def_108 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5108 : forall X1 X2:term, auto___def_108 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5109 : auto___def_108 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5110 : auto___def_108 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5111 : forall X1 X2:term, auto___def_108 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5112 : forall X1 X2:term, auto___def_108 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5113 : forall X1 X2:term, auto___def_108 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5114 : forall X1 X2:term, auto___def_108 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5115 : forall X1:term, auto___def_108 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5116 : auto___def_108 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5117 : forall X1 X2:term, auto___def_108 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5118 : auto___def_108 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5119 : auto___def_108 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5120 : auto___def_108 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5121 : forall X1 X2:term, auto___def_108 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5122 : forall X1 X2:term, auto___def_108 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5123 : forall X1:term, auto___def_108 X1 -> auto_knows_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_108_mknows_current 1.
  intro X. case X.
   intro H. elim (rem_5109  H).
   intro H. elim (rem_5102  H).
  intros X1 X2. intro H. elim (rem_5114 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5112 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5113 X1 X2 H).
   intro H. elim (rem_5118  H).
  intros X1 X2. intro H. elim (rem_5122 X1 X2 H).
   intro H. elim (rem_5119  H).
  intros X1 X2. intro H. elim (rem_5121 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5100 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5111 X1 X2 H).
  intros X1. intro H. elim (rem_5105 X1 H).
  intros X1 X2. intro H. elim (rem_5108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5107 X1 X2 H).
   intro H. elim (rem_5110  H).
   intro H. elim (rem_5106  H).
  intros X1 X2;  exact (rem_5098 epsilon_m__def_108_mknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_5104 X1 X2 H).
  intros X1. intro H. elim (rem_5115 X1 H).
   intro H. elim (rem_5120  H).
  intros X1 X2. intro H. elim (rem_5117 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5101 X1 X2 H).
   intro H. elim (rem_5116  H).
Qed.

Remark rem_5124 : forall X1:term, auto___def_108 X1 -> auto___type_24 bob -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_5123 X1)). tauto.
Qed.

Remark rem_5125 : forall X1:term, auto___type_24 bob -> auto___def_108 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto___def_108 X1 -> auto___type_24 bob -> auto_knows_current X1 -> False). tauto. exact (rem_5124 X1).
Qed.

Remark rem_5126 : forall X1 X2:term, auto_bob_key_current X1 X2 -> or_1
    (auto___type_24 X1 /\ auto___def_108 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5127 : forall X1:term, auto_bob_key_current bob X1 -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_5126 bob X1 H);  intros.
  apply (rem_5125 X1);  tauto.
Qed.

Remark rem_5128 : forall X1:term, auto_bob_key_current bob X1 -> auto_knows_current X1 -> auto___query__intruder_knows_session_key_as_seen_by_bob. (* Split. *)
Proof.
  intros X1.
  cut (auto_bob_key_current bob X1 -> auto_knows_current X1 -> False). tauto.
  exact (rem_5127 X1).
Qed.

Remark rem_5129 : forall X1:term, auto_testable_old X1 -> auto_testable_old X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5130 : forall X1:term, auto_testable_old X1 -> auto_testable_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  cut (auto_testable_old X1). 2:apply (rem_5129 X1);  assumption.
  tauto.
Qed.

Remark rem_5131 : forall X1:term, auto_testable_old X1 -> auto_testable_old (s X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_5130 X1 A1). clear  A1. intros. apply trans_testable_old_s_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_5132 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_5133 : forall X1 X2:term, auto_knows_old (cons X2 X1) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1263 X2 X1 H);  intros.
  apply (rem_5132 X1 X2);  tauto.
Qed.

Remark rem_5134 : forall X1:term, auto_testable_current X1 -> auto_testable_current X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5135 : forall X1:term, auto_testable_current X1 -> auto_testable_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  cut (auto_testable_current X1). 2:apply (rem_5134 X1);  assumption.
  tauto.
Qed.

Remark rem_5136 : forall X1 X2:term, auto_testable_current X1 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1.
  case (rem_5135 X1 A1). clear  A1. intros. apply trans_testable_current_cons_2;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_5137 : forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5138 : forall X1 X2:term, auto___def_104 X2 -> auto___type_22 X1 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_5137 X1).
Qed.

Remark rem_5139 : forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5140 : forall X1 X2:term, auto___def_104 X2 -> auto___type_22 X1 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_5139 X2).
Qed.

Remark rem_5141 : forall X1 X2:term, auto___def_104 X2 -> auto___type_22 X1 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_5138 X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_5140 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5142 : forall X1 X2:term, auto___def_104 X2 -> auto___type_22 X1 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5141 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5143 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_1258 X2).
Qed.

Remark rem_5144 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_5132 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_5143 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5145 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5144 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5146 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current X1 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_testable_current X1 -> auto_testable_current X1). tauto. exact (rem_5134 X1).
Qed.

Remark rem_5147 : forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_testable_current X1 -> auto_testable_current X1). tauto. exact (rem_5146 X1 X2).
Qed.

Remark rem_5148 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current (dec X1 X2) -> auto_testable_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_648 X1 X2 H);  intros.
  apply (rem_5147 X1 X2);  tauto.
Qed.

Remark rem_5149 : forall X1 X2:term, auto_testable_current (dec X1 X2) -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_testable_current (dec X1 X2) -> auto_testable_current X1). tauto. exact (rem_5148 X1 X2).
Qed.

Remark rem_5150 : forall X1 X2 X3 X4:term, auto___def_23 X2 X3 X1 -> auto___def_46 X2 X3 X4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2.
  tauto.
Qed.

Remark rem_5151 : forall X1 X2 X3 X4:term, auto___def_23 X2 X3 X1 -> auto___def_46 X2 X3 X4 X1 -> auto_alice_key_old X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2.
  case (rem_5150 X1 X2 X3 X4 A1 A2). clear  A1 A2. intros. apply trans_alice_key_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5152 : forall X1 X2 X3 X4:term, auto___def_46 X2 X3 X4 X1 -> auto___def_23 X2 X3 X1 -> auto_alice_key_old X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_23 X2 X3 X1 -> auto___def_46 X2 X3 X4 X1 -> auto_alice_key_old X1 X2). tauto. exact (rem_5151 X1 X2 X3 X4).
Qed.

Remark rem_5153 : forall X1 X2:term, auto___def_50 X2 -> auto___type_10 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  tauto.
Qed.

Remark rem_5154 : forall X1 X2:term, auto___def_50 X2 -> auto___type_10 X1 -> auto_bob_key_old X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5153 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_bob_key_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5155 : forall X1 X2:term, auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2.  case (rem_855). intros. apply trans_knows_current_noncea_old_1;  tauto.
 tauto.
Qed.

Remark rem_5156 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old X1 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_testable_old X1 -> auto_testable_old X1). tauto. exact (rem_5129 X1).
Qed.

Remark rem_5157 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old X1 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_1258 X2).
Qed.

Remark rem_5158 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old X1 -> (auto_testable_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto_testable_old X1). 2:apply (rem_5156 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_5157 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5159 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old X1 -> auto_testable_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5158 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_old_enc_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5160 : forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5161 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_5160 X1).
Qed.

Remark rem_5162 : forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5163 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_5162 X2).
Qed.

Remark rem_5164 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_5161 X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_5163 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5165 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto_knows_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5164 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_enc_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5166 : forall X1 X2:term, auto___def_76 X2 -> auto___def_75 X1 -> auto_knows_current (enc X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_76 X2 -> auto_knows_current (enc X1 X2)). tauto. exact (rem_5165 X1 X2).
Qed.

Remark rem_5167 : forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5168 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_5167 X1).
Qed.

Remark rem_5169 : forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5170 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_5169 X2).
Qed.

Remark rem_5171 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_5168 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_5170 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5172 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5171 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5173 : forall X1 X2:term, auto___def_37 X2 -> auto___def_36 X1 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_37 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_5172 X1 X2).
Qed.

Remark rem_5174 : forall X2:term, auto_testable_old X2 -> auto_testable_old X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5175 : forall X2:term, auto_testable_old X2 -> auto_testable_old X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X2. intros A1.
  cut (auto_testable_old X2). 2:apply (rem_5174 X2);  assumption.
  tauto.
Qed.

Remark rem_5176 : forall X1 X2:term, auto_testable_old X2 -> auto_testable_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1.
  case (rem_5175 X2 A1). clear  A1. intros. apply trans_testable_old_cons_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_5177 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_17 X1 -> auto___type_2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5178 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5179 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5180 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___type_26 X1 -> auto___def_111 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5181 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5182 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___type_22 X1 -> auto___def_104 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5183 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_88 X1 -> auto___def_89 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5184 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___type_27 X1 -> auto___def_113 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5185 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5186 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5187 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_84 X1 -> auto___def_85 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_5188 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_testable_current (crypt X1 X2) -> auto___def_71 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_616 X1 X2 H);  intros.
  apply (rem_5177 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5178 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5179 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5180 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5181 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5182 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5183 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5184 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5185 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5186 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5187 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5189 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> auto___def_71 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intro H. intros.
  elim (rem_806 H);  intros.
Defined.

Remark rem_5190 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> auto_testable_current bob -> auto___def_71 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intro H. intros.
  elim (rem_620 H);  intros.
  apply (rem_5189 epsilon_mtestable_current_m__def_71);  tauto.
Defined.

Remark rem_5191 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_807 X1 X2 H);  intros.
Defined.

Remark rem_5192 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_testable_current (noncea_old X1 X2) -> auto___def_71 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_623 X1 X2 H);  intros.
  apply (rem_5191 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5193 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (r_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_808 X1 X2 H);  intros.
Defined.

Remark rem_5194 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_testable_current (r_old X1 X2) -> auto___def_71 (r_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_628 X1 X2 H);  intros.
  apply (rem_5193 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5195 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_71 (p X1) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1. intro H. intros.
  elim (rem_810 X1 H);  intros.
Defined.

Remark rem_5196 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto_testable_current (p X1) -> auto___def_71 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1. intro H. intros.
  elim (rem_633 X1 H);  intros.
  apply (rem_5195 epsilon_mtestable_current_m__def_71 X1);  tauto.
Defined.

Remark rem_5197 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_812 X1 X2 H);  intros.
Defined.

Remark rem_5198 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_testable_current (passwd_old X1 X2) -> auto___def_71 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_636 X1 X2 H);  intros.
  apply (rem_5197 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5199 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> auto___def_71 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intro H. intros.
  elim (rem_814 H);  intros.
Defined.

Remark rem_5200 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> auto_testable_current alice -> auto___def_71 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intro H. intros.
  elim (rem_639 H);  intros.
  apply (rem_5199 epsilon_mtestable_current_m__def_71);  tauto.
Defined.

Remark rem_5201 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_816 X1 X2 H);  intros.
Defined.

Remark rem_5202 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_testable_current (nonceb_old X1 X2) -> auto___def_71 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_642 X1 X2 H);  intros.
  apply (rem_5201 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5203 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (dec X1 X2) -> auto_testable_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_817 X1 X2 H);  intros.
Defined.

Remark rem_5204 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_testable_current (dec X1 X2) -> auto___def_71 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_648 X1 X2 H);  intros.
  apply (rem_5203 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5205 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (enc X1 X2) -> auto___def_71 X1 -> auto___def_72 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_818 X1 X2 H);  intros.
Defined.

Remark rem_5206 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (enc X1 X2) -> auto_testable_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_818 X1 X2 H);  intros.
Defined.

Remark rem_5207 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (enc X1 X2) -> auto___def_79 X1 -> auto___def_80 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_818 X1 X2 H);  intros.
Defined.

Remark rem_5208 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (enc X1 X2) -> auto___def_75 X1 -> auto___def_76 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_818 X1 X2 H);  intros.
Defined.

Remark rem_5209 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_testable_current (enc X1 X2) -> auto___def_71 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_669 X1 X2 H);  intros.
  apply (rem_5205 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5206 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5207 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5208 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5210 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (cons X1 X2) -> auto_testable_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_819 X1 X2 H);  intros.
Defined.

Remark rem_5211 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (cons X1 X2) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_819 X1 X2 H);  intros.
Defined.

Remark rem_5212 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_testable_current (cons X1 X2) -> auto___def_71 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_675 X1 X2 H);  intros.
  apply (rem_5210 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5211 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5213 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_71 (s X1) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1. intro H. intros.
  elim (rem_820 X1 H);  intros.
Defined.

Remark rem_5214 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto_testable_current (s X1) -> auto___def_71 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1. intro H. intros.
  elim (rem_678 X1 H);  intros.
  apply (rem_5213 epsilon_mtestable_current_m__def_71 X1);  tauto.
Defined.

Remark rem_5215 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> auto___def_71 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intro H. intros.
  elim (rem_823 H);  intros.
Defined.

Remark rem_5216 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> auto_testable_current i -> auto___def_71 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intro H. intros.
  elim (rem_681 H);  intros.
  apply (rem_5215 epsilon_mtestable_current_m__def_71);  tauto.
Defined.

Remark rem_5217 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> auto___def_71 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intro H. intros.
  elim (rem_824 H);  intros.
Defined.

Remark rem_5218 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> auto_testable_current nil -> auto___def_71 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intro H. intros.
  elim (rem_684 H);  intros.
  apply (rem_5217 epsilon_mtestable_current_m__def_71);  tauto.
Defined.

Remark rem_5219 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> auto___def_71 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intro H. intros.
  elim (rem_825 H);  intros.
Defined.

Remark rem_5220 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> auto_testable_current server -> auto___def_71 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intro H. intros.
  elim (rem_687 H);  intros.
  apply (rem_5219 epsilon_mtestable_current_m__def_71);  tauto.
Defined.

Remark rem_5221 : (forall X:term, auto___def_119 X -> auto___def_12 X -> False)
    -> auto___def_12 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_119_m__def_12. intro H. intros.
  elim (rem_1315 H);  intros.
Defined.

Remark rem_5222 : auto___def_119 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5223 : (forall X:term, auto___def_119 X -> auto___def_12 X -> False)
    -> auto___def_119 sym -> auto___def_12 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_119_m__def_12. intro H. intros.
  elim (rem_5222 H);  intros.
  apply (rem_5221 epsilon_m__def_119_m__def_12);  tauto.
Defined.

Remark rem_5224 : forall X1 X2:term, auto___def_119 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5225 : forall X1 X2:term, auto___def_119 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5226 : forall X1 X2:term, auto___def_119 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5227 : auto___def_119 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5228 : forall X1 X2:term, auto___def_119 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5229 : forall X1 X2:term, auto___def_119 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5230 : forall X1 X2:term, auto___def_119 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5231 : forall X1:term, auto___def_119 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5232 : auto___def_119 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5233 : forall X1 X2:term, auto___def_119 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5234 : forall X1 X2:term, auto___def_119 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5235 : auto___def_119 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5236 : auto___def_119 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5237 : forall X1 X2:term, auto___def_119 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5238 : forall X1 X2:term, auto___def_119 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5239 : forall X1 X2:term, auto___def_119 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5240 : forall X1 X2:term, auto___def_119 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5241 : forall X1:term, auto___def_119 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5242 : forall X1 X2:term, auto___def_119 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5243 : auto___def_119 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5244 : auto___def_119 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5245 : auto___def_119 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5246 : forall X1 X2:term, auto___def_119 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5247 : forall X1 X2:term, auto___def_119 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5248 : forall X1:term, auto___def_119 X1 -> auto___def_12 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_119_m__def_12 1.
  intro X. case X.
   intro H. elim (rem_5235  H).
   intro H. elim (rem_5227  H).
  intros X1 X2. intro H. elim (rem_5240 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5224 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5238 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5239 X1 X2 H).
   intro H. elim (rem_5243  H).
  intros X1 X2. intro H. elim (rem_5247 X1 X2 H).
   intro H. elim (rem_5244  H).
  intros X1 X2. intro H. elim (rem_5246 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5228 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5225 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5237 X1 X2 H).
  intros X1. intro H. elim (rem_5231 X1 H).
  intros X1 X2. intro H. elim (rem_5234 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5233 X1 X2 H).
   intro H. elim (rem_5236  H).
   intro H. elim (rem_5232  H).
  intros X1 X2. intro H. elim (rem_5230 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5229 X1 X2 H).
  intros X1. intro H. elim (rem_5241 X1 H).
   intro H. elim (rem_5245  H).
  intros X1 X2. intro H. elim (rem_5242 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5226 X1 X2 H).
  exact (rem_5223 epsilon_m__def_119_m__def_12 ).
Qed.

Remark rem_5249 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_119 X1 -> auto___def_12 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_71. exact (rem_5248).
Defined.

Remark rem_5250 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___def_119 X1 -> auto___type_31 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2.
  cut (auto___def_119 X1 -> auto___def_12 X1 -> False). clear  epsilon_mtestable_current_m__def_71. tauto.
  exact (rem_5249 epsilon_mtestable_current_m__def_71 X1).
Defined.

Remark rem_5251 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (key X1 X2) -> auto___def_119 X1 -> auto___type_31 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_801 X1 X2 H);  intros.
  apply (rem_5250 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5252 : (forall X:term, auto___def_114 X -> auto___def_12 X -> False)
    -> auto___def_12 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_114_m__def_12. intro H. intros.
  elim (rem_2149 H);  intros.
Defined.

Remark rem_5253 : auto___def_114 prv -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5254 : (forall X:term, auto___def_114 X -> auto___def_12 X -> False)
    -> auto___def_114 prv -> auto___def_12 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_114_m__def_12. intro H. intros.
  elim (rem_5253 H);  intros.
  apply (rem_5252 epsilon_m__def_114_m__def_12);  tauto.
Defined.

Remark rem_5255 : forall X1 X2:term, auto___def_114 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5256 : forall X1 X2:term, auto___def_114 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5257 : forall X1 X2:term, auto___def_114 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5258 : auto___def_114 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5259 : forall X1 X2:term, auto___def_114 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5260 : forall X1 X2:term, auto___def_114 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5261 : forall X1 X2:term, auto___def_114 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5262 : forall X1:term, auto___def_114 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5263 : auto___def_114 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5264 : forall X1 X2:term, auto___def_114 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5265 : forall X1 X2:term, auto___def_114 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5266 : auto___def_114 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5267 : forall X1 X2:term, auto___def_114 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5268 : forall X1 X2:term, auto___def_114 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5269 : forall X1 X2:term, auto___def_114 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5270 : forall X1 X2:term, auto___def_114 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5271 : forall X1:term, auto___def_114 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5272 : auto___def_114 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5273 : forall X1 X2:term, auto___def_114 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5274 : auto___def_114 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5275 : auto___def_114 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5276 : auto___def_114 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5277 : forall X1 X2:term, auto___def_114 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5278 : forall X1 X2:term, auto___def_114 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5279 : forall X1:term, auto___def_114 X1 -> auto___def_12 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_114_m__def_12 1.
  intro X. case X.
   intro H. elim (rem_5266  H).
   intro H. elim (rem_5258  H).
  intros X1 X2. intro H. elim (rem_5270 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5255 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5268 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5269 X1 X2 H).
   intro H. elim (rem_5274  H).
  intros X1 X2. intro H. elim (rem_5278 X1 X2 H).
   intro H. elim (rem_5275  H).
  intros X1 X2. intro H. elim (rem_5277 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5259 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5256 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5267 X1 X2 H).
  intros X1. intro H. elim (rem_5262 X1 H).
  intros X1 X2. intro H. elim (rem_5265 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5264 X1 X2 H).
  exact (rem_5254 epsilon_m__def_114_m__def_12 ).
   intro H. elim (rem_5263  H).
  intros X1 X2. intro H. elim (rem_5261 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5260 X1 X2 H).
  intros X1. intro H. elim (rem_5271 X1 H).
   intro H. elim (rem_5276  H).
  intros X1 X2. intro H. elim (rem_5273 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5257 X1 X2 H).
   intro H. elim (rem_5272  H).
Qed.

Remark rem_5280 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_114 X1 -> auto___def_12 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_71. exact (rem_5279).
Defined.

Remark rem_5281 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_66 X2 -> auto___def_12 X1 -> auto___def_114 X1 -> auto___def_73 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2.
  cut (auto___def_114 X1 -> auto___def_12 X1 -> False). clear  epsilon_mtestable_current_m__def_71. tauto.
  exact (rem_5280 epsilon_mtestable_current_m__def_71 X1).
Defined.

Remark rem_5282 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (key X1 X2) -> auto___def_114 X1 -> auto___def_66 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_801 X1 X2 H);  intros.
  apply (rem_5281 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5283 : (forall X:term, auto___def_73 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto_agent (session_current X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_73_magent. intros X1 X2. intro H. intros.
  elim (rem_1111 X1 X2 H);  intros.
Defined.

Remark rem_5284 : (forall X:term, auto___def_73 X -> auto_agent X -> False)
    -> forall X1 X2:term, auto___def_73 (session_current X1 X2) -> auto_agent (session_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_73_magent. intros X1 X2. intro H. intros.
  elim (rem_3740 X1 X2 H);  intros.
  apply (rem_5283 epsilon_m__def_73_magent X1 X2);  tauto.
Defined.

Remark rem_5285 : forall X1 X2:term, auto___def_73 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5286 : forall X1 X2:term, auto___def_73 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5287 : forall X1 X2:term, auto___def_73 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5288 : auto___def_73 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5289 : forall X1 X2:term, auto___def_73 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5290 : forall X1 X2:term, auto___def_73 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5291 : forall X1 X2:term, auto___def_73 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5292 : forall X1:term, auto___def_73 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5293 : auto___def_73 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5294 : forall X1 X2:term, auto___def_73 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5295 : forall X1 X2:term, auto___def_73 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5296 : auto___def_73 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5297 : auto___def_73 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5298 : forall X1 X2:term, auto___def_73 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5299 : forall X1 X2:term, auto___def_73 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5300 : forall X1 X2:term, auto___def_73 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5301 : forall X1 X2:term, auto___def_73 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5302 : forall X1:term, auto___def_73 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5303 : auto___def_73 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5304 : auto___def_73 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5305 : auto___def_73 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5306 : auto___def_73 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5307 : forall X1 X2:term, auto___def_73 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5308 : forall X1 X2:term, auto___def_73 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5309 : forall X2:term, auto___def_73 X2 -> auto_agent X2 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_73_magent 1.
  intro X. case X.
   intro H. elim (rem_5296  H).
   intro H. elim (rem_5288  H).
  intros X1 X2. intro H. elim (rem_5301 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5285 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5299 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5300 X1 X2 H).
   intro H. elim (rem_5304  H).
  intros X1 X2. intro H. elim (rem_5308 X1 X2 H).
   intro H. elim (rem_5305  H).
  intros X1 X2. intro H. elim (rem_5307 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5289 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5286 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5298 X1 X2 H).
  intros X1. intro H. elim (rem_5292 X1 H).
  intros X1 X2. intro H. elim (rem_5295 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5294 X1 X2 H).
   intro H. elim (rem_5297  H).
   intro H. elim (rem_5293  H).
  intros X1 X2. intro H. elim (rem_5291 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5290 X1 X2 H).
  intros X1. intro H. elim (rem_5302 X1 H).
   intro H. elim (rem_5306  H).
  intros X1 X2;  exact (rem_5284 epsilon_m__def_73_magent X1 X2).
  intros X1 X2. intro H. elim (rem_5287 X1 X2 H).
   intro H. elim (rem_5303  H).
Qed.

Remark rem_5310 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X2:term, auto___def_73 X2 -> auto_agent X2 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_71. exact (rem_5309).
Defined.

Remark rem_5311 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___def_51 X1 -> auto_agent X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2.
  cut (auto___def_73 X2 -> auto_agent X2 -> False). clear  epsilon_mtestable_current_m__def_71. tauto.
  exact (rem_5310 epsilon_mtestable_current_m__def_71 X2).
Defined.

Remark rem_5312 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_801 X1 X2 H);  intros.
  apply (rem_5311 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5313 : (forall X:term, auto___def_73 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_13 (session_current X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_73_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_1781 X1 X2 H);  intros.
Defined.

Remark rem_5314 : (forall X:term, auto___def_73 X -> auto___def_13 X -> False)
    -> forall X1 X2:term, auto___def_73 (session_current X1 X2) -> auto___def_13 (session_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_73_m__def_13. intros X1 X2. intro H. intros.
  elim (rem_3740 X1 X2 H);  intros.
  apply (rem_5313 epsilon_m__def_73_m__def_13 X1 X2);  tauto.
Defined.

Remark rem_5315 : forall X2:term, auto___def_73 X2 -> auto___def_13 X2 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_73_m__def_13 1.
  intro X. case X.
   intro H. elim (rem_5296  H).
   intro H. elim (rem_5288  H).
  intros X1 X2. intro H. elim (rem_5301 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5285 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5299 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5300 X1 X2 H).
   intro H. elim (rem_5304  H).
  intros X1 X2. intro H. elim (rem_5308 X1 X2 H).
   intro H. elim (rem_5305  H).
  intros X1 X2. intro H. elim (rem_5307 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5289 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5286 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5298 X1 X2 H).
  intros X1. intro H. elim (rem_5292 X1 H).
  intros X1 X2. intro H. elim (rem_5295 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5294 X1 X2 H).
   intro H. elim (rem_5297  H).
   intro H. elim (rem_5293  H).
  intros X1 X2. intro H. elim (rem_5291 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5290 X1 X2 H).
  intros X1. intro H. elim (rem_5302 X1 H).
   intro H. elim (rem_5306  H).
  intros X1 X2;  exact (rem_5314 epsilon_m__def_73_m__def_13 X1 X2).
  intros X1 X2. intro H. elim (rem_5287 X1 X2 H).
   intro H. elim (rem_5303  H).
Qed.

Remark rem_5316 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X2:term, auto___def_73 X2 -> auto___def_13 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_71. exact (rem_5315).
Defined.

Remark rem_5317 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_73 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2.
  cut (auto___def_73 X2 -> auto___def_13 X2 -> False). clear  epsilon_mtestable_current_m__def_71. tauto.
  exact (rem_5316 epsilon_mtestable_current_m__def_71 X2).
Defined.

Remark rem_5318 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (key X1 X2) -> auto___def_12 X1 -> auto___def_13 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_801 X1 X2 H);  intros.
  apply (rem_5317 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5319 : (forall X:term, auto_testable_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_testable_current (key X1 X2) -> auto___def_71 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_713 X1 X2 H);  intros.
  apply (rem_5251 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5282 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5312 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
  apply (rem_5318 epsilon_mtestable_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5320 : forall X1:term, auto_testable_current X1 -> auto___def_71 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mtestable_current_m__def_71 1.
  intro X. case X.
  exact (rem_5200 epsilon_mtestable_current_m__def_71 ).
  exact (rem_5190 epsilon_mtestable_current_m__def_71 ).
  intros X1 X2;  exact (rem_5212 epsilon_mtestable_current_m__def_71 X1 X2).
  intros X1 X2;  exact (rem_5188 epsilon_mtestable_current_m__def_71 X1 X2).
  intros X1 X2;  exact (rem_5204 epsilon_mtestable_current_m__def_71 X1 X2).
  intros X1 X2;  exact (rem_5209 epsilon_mtestable_current_m__def_71 X1 X2).
  exact (rem_5216 epsilon_mtestable_current_m__def_71 ).
  intros X1 X2;  exact (rem_5319 epsilon_mtestable_current_m__def_71 X1 X2).
  exact (rem_5218 epsilon_mtestable_current_m__def_71 ).
  intros X1 X2. intro H. elim (rem_723 X1 X2 H).
  intros X1 X2;  exact (rem_5192 epsilon_mtestable_current_m__def_71 X1 X2).
  intros X1 X2. intro H. elim (rem_715 X1 X2 H).
  intros X1 X2;  exact (rem_5202 epsilon_mtestable_current_m__def_71 X1 X2).
  intros X1;  exact (rem_5196 epsilon_mtestable_current_m__def_71 X1).
  intros X1 X2. intro H. elim (rem_719 X1 X2 H).
  intros X1 X2;  exact (rem_5198 epsilon_mtestable_current_m__def_71 X1 X2).
   intro H. elim (rem_720  H).
   intro H. elim (rem_718  H).
  intros X1 X2. intro H. elim (rem_717 X1 X2 H).
  intros X1 X2;  exact (rem_5194 epsilon_mtestable_current_m__def_71 X1 X2).
  intros X1;  exact (rem_5214 epsilon_mtestable_current_m__def_71 X1).
  exact (rem_5220 epsilon_mtestable_current_m__def_71 ).
  intros X1 X2. intro H. elim (rem_722 X1 X2 H).
  intros X1 X2. intro H. elim (rem_716 X1 X2 H).
   intro H. elim (rem_721  H).
Qed.

Remark rem_5321 : forall X1 X2:term, auto___def_71 X2 -> auto___def_72 X1 -> auto_testable_current X2 -> auto_knows_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5320 X2)). tauto.
Qed.

Remark rem_5322 : forall X1 X2:term, auto_knows_current X1 -> auto_testable_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_5323 : forall X1 X2:term, auto_testable_current X2 -> auto_knows_current X1 -> auto_testable_current X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X1 -> auto_testable_current X2 -> auto_knows_current X1). tauto. exact (rem_5322 X1 X2).
Qed.

Remark rem_5324 : (forall X:term, auto___def_81 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1329 X1 X2 H);  intros.
Defined.

Remark rem_5325 : (forall X:term, auto___def_81 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_81 (r_current X1 X2) -> auto___def_17 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_2718 X1 X2 H);  intros.
  apply (rem_5324 epsilon_m__def_81_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_5326 : forall X1:term, auto___def_81 X1 -> auto___def_17 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_81_m__def_17 1.
  intro X. case X.
   intro H. elim (rem_2730  H).
   intro H. elim (rem_2723  H).
  intros X1 X2. intro H. elim (rem_2735 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2720 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2734 X1 X2 H).
   intro H. elim (rem_2739  H).
  intros X1 X2. intro H. elim (rem_2743 X1 X2 H).
   intro H. elim (rem_2740  H).
  intros X1 X2. intro H. elim (rem_2742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2724 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2721 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2732 X1 X2 H).
  intros X1. intro H. elim (rem_2726 X1 H).
  intros X1 X2. intro H. elim (rem_2729 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2728 X1 X2 H).
   intro H. elim (rem_2731  H).
   intro H. elim (rem_2727  H).
  intros X1 X2;  exact (rem_5325 epsilon_m__def_81_m__def_17 X1 X2).
  intros X1 X2. intro H. elim (rem_2725 X1 X2 H).
  intros X1. intro H. elim (rem_2736 X1 H).
   intro H. elim (rem_2741  H).
  intros X1 X2. intro H. elim (rem_2738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2722 X1 X2 H).
   intro H. elim (rem_2737  H).
Qed.

Remark rem_5327 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___def_17 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5326).
Defined.

Remark rem_5328 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___type_2 X2 -> auto___def_17 X1 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_17 X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5327 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5329 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_17 X1 -> auto___type_2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5328 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5330 : (forall X:term, auto___def_81 X -> auto___def_36 X -> False)
    -> forall X1 X2:term, auto___def_36 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_36. intros X1 X2. intro H. intros.
  elim (rem_2317 X1 X2 H);  intros.
Defined.

Remark rem_5331 : (forall X:term, auto___def_81 X -> auto___def_36 X -> False)
    -> forall X1 X2:term, auto___def_81 (r_current X1 X2) -> auto___def_36 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_36. intros X1 X2. intro H. intros.
  elim (rem_2718 X1 X2 H);  intros.
  apply (rem_5330 epsilon_m__def_81_m__def_36 X1 X2);  tauto.
Defined.

Remark rem_5332 : forall X1:term, auto___def_81 X1 -> auto___def_36 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_81_m__def_36 1.
  intro X. case X.
   intro H. elim (rem_2730  H).
   intro H. elim (rem_2723  H).
  intros X1 X2. intro H. elim (rem_2735 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2720 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2734 X1 X2 H).
   intro H. elim (rem_2739  H).
  intros X1 X2. intro H. elim (rem_2743 X1 X2 H).
   intro H. elim (rem_2740  H).
  intros X1 X2. intro H. elim (rem_2742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2724 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2721 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2732 X1 X2 H).
  intros X1. intro H. elim (rem_2726 X1 H).
  intros X1 X2. intro H. elim (rem_2729 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2728 X1 X2 H).
   intro H. elim (rem_2731  H).
   intro H. elim (rem_2727  H).
  intros X1 X2;  exact (rem_5331 epsilon_m__def_81_m__def_36 X1 X2).
  intros X1 X2. intro H. elim (rem_2725 X1 X2 H).
  intros X1. intro H. elim (rem_2736 X1 H).
   intro H. elim (rem_2741  H).
  intros X1 X2. intro H. elim (rem_2738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2722 X1 X2 H).
   intro H. elim (rem_2737  H).
Qed.

Remark rem_5333 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___def_36 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5332).
Defined.

Remark rem_5334 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_36 X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5333 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5335 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5334 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5336 : forall X1 X2:term, auto___def_21 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5337 : (forall X:term, auto___def_81 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_5336 X1 X2 H);  intros.
Defined.

Remark rem_5338 : (forall X:term, auto___def_81 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_81 (r_current X1 X2) -> auto___def_21 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2718 X1 X2 H);  intros.
  apply (rem_5337 epsilon_m__def_81_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_5339 : forall X1:term, auto___def_81 X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_81_m__def_21 1.
  intro X. case X.
   intro H. elim (rem_2730  H).
   intro H. elim (rem_2723  H).
  intros X1 X2. intro H. elim (rem_2735 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2720 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2734 X1 X2 H).
   intro H. elim (rem_2739  H).
  intros X1 X2. intro H. elim (rem_2743 X1 X2 H).
   intro H. elim (rem_2740  H).
  intros X1 X2. intro H. elim (rem_2742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2724 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2721 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2732 X1 X2 H).
  intros X1. intro H. elim (rem_2726 X1 H).
  intros X1 X2. intro H. elim (rem_2729 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2728 X1 X2 H).
   intro H. elim (rem_2731  H).
   intro H. elim (rem_2727  H).
  intros X1 X2;  exact (rem_5338 epsilon_m__def_81_m__def_21 X1 X2).
  intros X1 X2. intro H. elim (rem_2725 X1 X2 H).
  intros X1. intro H. elim (rem_2736 X1 H).
   intro H. elim (rem_2741  H).
  intros X1 X2. intro H. elim (rem_2738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2722 X1 X2 H).
   intro H. elim (rem_2737  H).
Qed.

Remark rem_5340 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5339).
Defined.

Remark rem_5341 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_82 X2 -> auto___def_22 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_21 X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5340 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5342 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5341 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5343 : forall X1 X2:term, auto___type_26 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5344 : (forall X:term, auto___def_81 X -> auto___type_26 X -> False)
    -> forall X1 X2:term, auto___type_26 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__type_26. intros X1 X2. intro H. intros.
  elim (rem_5343 X1 X2 H);  intros.
Defined.

Remark rem_5345 : (forall X:term, auto___def_81 X -> auto___type_26 X -> False)
    -> forall X1 X2:term, auto___def_81 (r_current X1 X2) -> auto___type_26 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__type_26. intros X1 X2. intro H. intros.
  elim (rem_2718 X1 X2 H);  intros.
  apply (rem_5344 epsilon_m__def_81_m__type_26 X1 X2);  tauto.
Defined.

Remark rem_5346 : forall X1:term, auto___def_81 X1 -> auto___type_26 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_81_m__type_26 1.
  intro X. case X.
   intro H. elim (rem_2730  H).
   intro H. elim (rem_2723  H).
  intros X1 X2. intro H. elim (rem_2735 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2720 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2734 X1 X2 H).
   intro H. elim (rem_2739  H).
  intros X1 X2. intro H. elim (rem_2743 X1 X2 H).
   intro H. elim (rem_2740  H).
  intros X1 X2. intro H. elim (rem_2742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2724 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2721 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2732 X1 X2 H).
  intros X1. intro H. elim (rem_2726 X1 H).
  intros X1 X2. intro H. elim (rem_2729 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2728 X1 X2 H).
   intro H. elim (rem_2731  H).
   intro H. elim (rem_2727  H).
  intros X1 X2;  exact (rem_5345 epsilon_m__def_81_m__type_26 X1 X2).
  intros X1 X2. intro H. elim (rem_2725 X1 X2 H).
  intros X1. intro H. elim (rem_2736 X1 H).
   intro H. elim (rem_2741  H).
  intros X1 X2. intro H. elim (rem_2738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2722 X1 X2 H).
   intro H. elim (rem_2737  H).
Qed.

Remark rem_5347 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___type_26 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5346).
Defined.

Remark rem_5348 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___def_81 X1 -> auto___type_26 X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5347 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5349 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___type_26 X1 -> auto___def_111 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5348 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5350 : (forall X:term, auto___def_81 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1071 X1 X2 H);  intros.
Defined.

Remark rem_5351 : (forall X:term, auto___def_81 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_81 (r_current X1 X2) -> auto_knows_current (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_2718 X1 X2 H);  intros.
  apply (rem_5350 epsilon_m__def_81_mknows_current X1 X2);  tauto.
Defined.

Remark rem_5352 : forall X1:term, auto___def_81 X1 -> auto_knows_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_81_mknows_current 1.
  intro X. case X.
   intro H. elim (rem_2730  H).
   intro H. elim (rem_2723  H).
  intros X1 X2. intro H. elim (rem_2735 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2720 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2734 X1 X2 H).
   intro H. elim (rem_2739  H).
  intros X1 X2. intro H. elim (rem_2743 X1 X2 H).
   intro H. elim (rem_2740  H).
  intros X1 X2. intro H. elim (rem_2742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2724 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2721 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2732 X1 X2 H).
  intros X1. intro H. elim (rem_2726 X1 H).
  intros X1 X2. intro H. elim (rem_2729 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2728 X1 X2 H).
   intro H. elim (rem_2731  H).
   intro H. elim (rem_2727  H).
  intros X1 X2;  exact (rem_5351 epsilon_m__def_81_mknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_2725 X1 X2 H).
  intros X1. intro H. elim (rem_2736 X1 H).
   intro H. elim (rem_2741  H).
  intros X1 X2. intro H. elim (rem_2738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2722 X1 X2 H).
   intro H. elim (rem_2737  H).
Qed.

Remark rem_5353 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto_knows_current X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5352).
Defined.

Remark rem_5354 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_knows_current X2 -> auto___def_82 X2 -> auto_knows_current X1 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___def_81 X1 -> auto_knows_current X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5353 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5355 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5354 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5356 : (forall X:term, auto___type_22 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (nonceb_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2721 X1 X2 H);  intros.
Defined.

Remark rem_5357 : (forall X:term, auto___type_22 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_22 (nonceb_current X1 X2) -> auto___def_81 (nonceb_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_1610 X1 X2 H);  intros.
  apply (rem_5356 epsilon_m__type_22_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5358 : forall X1:term, auto___type_22 X1 -> auto___def_81 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_22_m__def_81 1.
  intro X. case X.
   intro H. elim (rem_1622  H).
   intro H. elim (rem_1614  H).
  intros X1 X2. intro H. elim (rem_1627 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1612 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1625 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1626 X1 X2 H).
   intro H. elim (rem_1631  H).
  intros X1 X2. intro H. elim (rem_1635 X1 X2 H).
   intro H. elim (rem_1632  H).
  intros X1 X2. intro H. elim (rem_1634 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1615 X1 X2 H).
  intros X1 X2;  exact (rem_5357 epsilon_m__type_22_m__def_81 X1 X2).
  intros X1 X2. intro H. elim (rem_1624 X1 X2 H).
  intros X1. intro H. elim (rem_1618 X1 H).
  intros X1 X2. intro H. elim (rem_1621 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1620 X1 X2 H).
   intro H. elim (rem_1623  H).
   intro H. elim (rem_1619  H).
  intros X1 X2. intro H. elim (rem_1617 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1616 X1 X2 H).
  intros X1. intro H. elim (rem_1628 X1 H).
   intro H. elim (rem_1633  H).
  intros X1 X2. intro H. elim (rem_1630 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1613 X1 X2 H).
   intro H. elim (rem_1629  H).
Qed.

Remark rem_5359 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___type_22 X1 -> auto___def_81 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5358).
Defined.

Remark rem_5360 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___type_22 X1 -> auto___def_81 X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5359 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5361 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___type_22 X1 -> auto___def_104 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5360 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5362 : (forall X:term, auto___def_81 X -> auto___def_88 X -> False)
    -> forall X1 X2:term, auto___def_88 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_88. intros X1 X2. intro H. intros.
  elim (rem_2649 X1 X2 H);  intros.
Defined.

Remark rem_5363 : (forall X:term, auto___def_81 X -> auto___def_88 X -> False)
    -> forall X1 X2:term, auto___def_81 (r_current X1 X2) -> auto___def_88 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_88. intros X1 X2. intro H. intros.
  elim (rem_2718 X1 X2 H);  intros.
  apply (rem_5362 epsilon_m__def_81_m__def_88 X1 X2);  tauto.
Defined.

Remark rem_5364 : forall X1:term, auto___def_81 X1 -> auto___def_88 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_81_m__def_88 1.
  intro X. case X.
   intro H. elim (rem_2730  H).
   intro H. elim (rem_2723  H).
  intros X1 X2. intro H. elim (rem_2735 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2720 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2734 X1 X2 H).
   intro H. elim (rem_2739  H).
  intros X1 X2. intro H. elim (rem_2743 X1 X2 H).
   intro H. elim (rem_2740  H).
  intros X1 X2. intro H. elim (rem_2742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2724 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2721 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2732 X1 X2 H).
  intros X1. intro H. elim (rem_2726 X1 H).
  intros X1 X2. intro H. elim (rem_2729 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2728 X1 X2 H).
   intro H. elim (rem_2731  H).
   intro H. elim (rem_2727  H).
  intros X1 X2;  exact (rem_5363 epsilon_m__def_81_m__def_88 X1 X2).
  intros X1 X2. intro H. elim (rem_2725 X1 X2 H).
  intros X1. intro H. elim (rem_2736 X1 H).
   intro H. elim (rem_2741  H).
  intros X1 X2. intro H. elim (rem_2738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2722 X1 X2 H).
   intro H. elim (rem_2737  H).
Qed.

Remark rem_5365 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___def_88 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5364).
Defined.

Remark rem_5366 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_89 X2 -> auto___def_82 X2 -> auto___def_88 X1 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_88 X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5365 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5367 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_88 X1 -> auto___def_89 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5366 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5368 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_17 X1 -> auto___type_2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5369 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5370 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5371 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___type_26 X1 -> auto___def_111 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5372 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5373 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___type_22 X1 -> auto___def_104 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5374 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_88 X1 -> auto___def_89 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5375 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___type_27 X1 -> auto___def_113 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5376 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5377 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5378 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_84 X1 -> auto___def_85 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2720 X1 X2 H);  intros.
Defined.

Remark rem_5379 : forall X1 X2:term, auto___type_27 (crypt X1 X2) -> or_11
    (auto___def_17 X1 /\ auto___type_2 X2)
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___def_21 X1 /\ auto___def_22 X2)
    (auto___type_26 X1 /\ auto___def_111 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___type_22 X1 /\ auto___def_104 X2)
    (auto___def_88 X1 /\ auto___def_89 X2)
    (auto___type_27 X1 /\ auto___def_113 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto___def_84 X1 /\ auto___def_85 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_11_intro_1; tauto.
  intros. apply or_11_intro_2; tauto.
  intros. apply or_11_intro_3; tauto.
  intros. apply or_11_intro_4; tauto.
  intros. apply or_11_intro_5; tauto.
  intros. apply or_11_intro_6; tauto.
  intros. apply or_11_intro_7; tauto.
  intros. apply or_11_intro_8; tauto.
  intros. apply or_11_intro_9; tauto.
  intros. apply or_11_intro_10; tauto.
  intros. apply or_11_intro_11; tauto.
Qed.

Remark rem_5380 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_27 (crypt X1 X2) -> auto___def_81 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5379 X1 X2 H);  intros.
  apply (rem_5368 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5369 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5370 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5371 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5372 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5373 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5374 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5375 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5376 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5377 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5378 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5381 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> auto___def_81 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intro H. intros.
  elim (rem_2723 H);  intros.
Defined.

Remark rem_5382 : auto___type_27 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5383 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> auto___type_27 bob -> auto___def_81 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intro H. intros.
  elim (rem_5382 H);  intros.
  apply (rem_5381 epsilon_m__type_27_m__def_81);  tauto.
Defined.

Remark rem_5384 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2724 X1 X2 H);  intros.
Defined.

Remark rem_5385 : forall X1 X2:term, auto___type_27 (noncea_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5386 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_27 (noncea_old X1 X2) -> auto___def_81 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5385 X1 X2 H);  intros.
  apply (rem_5384 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5387 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (r_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2725 X1 X2 H);  intros.
Defined.

Remark rem_5388 : forall X1 X2:term, auto___type_27 (r_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5389 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_27 (r_old X1 X2) -> auto___def_81 (r_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5388 X1 X2 H);  intros.
  apply (rem_5387 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5390 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1:term, auto___def_81 (p X1) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1. intro H. intros.
  elim (rem_2726 X1 H);  intros.
Defined.

Remark rem_5391 : forall X1:term, auto___type_27 (p X1) -> or_1
    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5392 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1:term, auto___type_27 (p X1) -> auto___def_81 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1. intro H. intros.
  elim (rem_5391 X1 H);  intros.
  apply (rem_5390 epsilon_m__type_27_m__def_81 X1);  tauto.
Defined.

Remark rem_5393 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2728 X1 X2 H);  intros.
Defined.

Remark rem_5394 : forall X1 X2:term, auto___type_27 (passwd_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5395 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_27 (passwd_old X1 X2) -> auto___def_81 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5394 X1 X2 H);  intros.
  apply (rem_5393 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5396 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> auto___def_81 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intro H. intros.
  elim (rem_2730 H);  intros.
Defined.

Remark rem_5397 : auto___type_27 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5398 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> auto___type_27 alice -> auto___def_81 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intro H. intros.
  elim (rem_5397 H);  intros.
  apply (rem_5396 epsilon_m__type_27_m__def_81);  tauto.
Defined.

Remark rem_5399 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2732 X1 X2 H);  intros.
Defined.

Remark rem_5400 : forall X1 X2:term, auto___type_27 (nonceb_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5401 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_27 (nonceb_old X1 X2) -> auto___def_81 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5400 X1 X2 H);  intros.
  apply (rem_5399 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5402 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (dec X1 X2) -> auto_testable_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2733 X1 X2 H);  intros.
Defined.

Remark rem_5403 : forall X1 X2:term, auto___type_27 (dec X1 X2) -> or_1
    (auto_testable_current X1 /\ auto_knows_current X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5404 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_27 (dec X1 X2) -> auto___def_81 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5403 X1 X2 H);  intros.
  apply (rem_5402 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5405 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (enc X1 X2) -> auto___def_71 X1 -> auto___def_72 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2734 X1 X2 H);  intros.
Defined.

Remark rem_5406 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (enc X1 X2) -> auto_testable_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2734 X1 X2 H);  intros.
Defined.

Remark rem_5407 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (enc X1 X2) -> auto___def_79 X1 -> auto___def_80 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2734 X1 X2 H);  intros.
Defined.

Remark rem_5408 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (enc X1 X2) -> auto___def_75 X1 -> auto___def_76 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2734 X1 X2 H);  intros.
Defined.

Remark rem_5409 : forall X1 X2:term, auto___type_27 (enc X1 X2) -> or_4
    (auto___def_71 X1 /\ auto___def_72 X2)
    (auto_testable_current X1 /\ auto_knows_current X2)
    (auto___def_79 X1 /\ auto___def_80 X2)
    (auto___def_75 X1 /\ auto___def_76 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_5410 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_27 (enc X1 X2) -> auto___def_81 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5409 X1 X2 H);  intros.
  apply (rem_5405 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5406 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5407 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5408 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5411 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (cons X1 X2) -> auto_testable_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2735 X1 X2 H);  intros.
Defined.

Remark rem_5412 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (cons X1 X2) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2735 X1 X2 H);  intros.
Defined.

Remark rem_5413 : forall X1 X2:term, auto___type_27 (cons X1 X2) -> or_2
    (auto_testable_current X2)    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_5414 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_27 (cons X1 X2) -> auto___def_81 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5413 X1 X2 H);  intros.
  apply (rem_5411 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5412 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5415 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1:term, auto___def_81 (s X1) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1. intro H. intros.
  elim (rem_2736 X1 H);  intros.
Defined.

Remark rem_5416 : forall X1:term, auto___type_27 (s X1) -> or_1
    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5417 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1:term, auto___type_27 (s X1) -> auto___def_81 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1. intro H. intros.
  elim (rem_5416 X1 H);  intros.
  apply (rem_5415 epsilon_m__type_27_m__def_81 X1);  tauto.
Defined.

Remark rem_5418 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> auto___def_81 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intro H. intros.
  elim (rem_2739 H);  intros.
Defined.

Remark rem_5419 : auto___type_27 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5420 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> auto___type_27 i -> auto___def_81 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intro H. intros.
  elim (rem_5419 H);  intros.
  apply (rem_5418 epsilon_m__type_27_m__def_81);  tauto.
Defined.

Remark rem_5421 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> auto___def_81 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intro H. intros.
  elim (rem_2740 H);  intros.
Defined.

Remark rem_5422 : auto___type_27 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5423 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> auto___type_27 nil -> auto___def_81 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intro H. intros.
  elim (rem_5422 H);  intros.
  apply (rem_5421 epsilon_m__type_27_m__def_81);  tauto.
Defined.

Remark rem_5424 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> auto___def_81 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intro H. intros.
  elim (rem_2741 H);  intros.
Defined.

Remark rem_5425 : auto___type_27 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5426 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> auto___type_27 server -> auto___def_81 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intro H. intros.
  elim (rem_5425 H);  intros.
  apply (rem_5424 epsilon_m__type_27_m__def_81);  tauto.
Defined.

Remark rem_5427 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (key X1 X2) -> auto___def_119 X1 -> auto___type_31 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2743 X1 X2 H);  intros.
Defined.

Remark rem_5428 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (key X1 X2) -> auto___def_114 X1 -> auto___def_66 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2743 X1 X2 H);  intros.
Defined.

Remark rem_5429 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2743 X1 X2 H);  intros.
Defined.

Remark rem_5430 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (key X1 X2) -> auto___def_12 X1 -> auto___def_13 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2743 X1 X2 H);  intros.
Defined.

Remark rem_5431 : forall X1 X2:term, auto___type_27 (key X1 X2) -> or_4
    (auto___def_119 X1 /\ auto___type_31 X2)
    (auto___def_114 X1 /\ auto___def_66 X2)
    (auto___def_51 X1 /\ auto_agent X2)
    (auto___def_12 X1 /\ auto___def_13 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_5432 : (forall X:term, auto___type_27 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_27 (key X1 X2) -> auto___def_81 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5431 X1 X2 H);  intros.
  apply (rem_5427 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5428 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5429 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
  apply (rem_5430 epsilon_m__type_27_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5433 : forall X1 X2:term, auto___type_27 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5434 : forall X1 X2:term, auto___type_27 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5435 : forall X1 X2:term, auto___type_27 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5436 : auto___type_27 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5437 : forall X1 X2:term, auto___type_27 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5438 : auto___type_27 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5439 : auto___type_27 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5440 : forall X1 X2:term, auto___type_27 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5441 : forall X1 X2:term, auto___type_27 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5442 : forall X1:term, auto___type_27 X1 -> auto___def_81 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_27_m__def_81 1.
  intro X. case X.
  exact (rem_5398 epsilon_m__type_27_m__def_81 ).
  exact (rem_5383 epsilon_m__type_27_m__def_81 ).
  intros X1 X2;  exact (rem_5414 epsilon_m__type_27_m__def_81 X1 X2).
  intros X1 X2;  exact (rem_5380 epsilon_m__type_27_m__def_81 X1 X2).
  intros X1 X2;  exact (rem_5404 epsilon_m__type_27_m__def_81 X1 X2).
  intros X1 X2;  exact (rem_5410 epsilon_m__type_27_m__def_81 X1 X2).
  exact (rem_5420 epsilon_m__type_27_m__def_81 ).
  intros X1 X2;  exact (rem_5432 epsilon_m__type_27_m__def_81 X1 X2).
  exact (rem_5423 epsilon_m__type_27_m__def_81 ).
  intros X1 X2. intro H. elim (rem_5441 X1 X2 H).
  intros X1 X2;  exact (rem_5386 epsilon_m__type_27_m__def_81 X1 X2).
  intros X1 X2. intro H. elim (rem_5433 X1 X2 H).
  intros X1 X2;  exact (rem_5401 epsilon_m__type_27_m__def_81 X1 X2).
  intros X1;  exact (rem_5392 epsilon_m__type_27_m__def_81 X1).
  intros X1 X2. intro H. elim (rem_5437 X1 X2 H).
  intros X1 X2;  exact (rem_5395 epsilon_m__type_27_m__def_81 X1 X2).
   intro H. elim (rem_5438  H).
   intro H. elim (rem_5436  H).
  intros X1 X2. intro H. elim (rem_5435 X1 X2 H).
  intros X1 X2;  exact (rem_5389 epsilon_m__type_27_m__def_81 X1 X2).
  intros X1;  exact (rem_5417 epsilon_m__type_27_m__def_81 X1).
  exact (rem_5426 epsilon_m__type_27_m__def_81 ).
  intros X1 X2. intro H. elim (rem_5440 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5434 X1 X2 H).
   intro H. elim (rem_5439  H).
Qed.

Remark rem_5443 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___type_27 X1 -> auto___def_81 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5442).
Defined.

Remark rem_5444 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___type_27 X1 -> auto___def_81 X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5443 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5445 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___type_27 X1 -> auto___def_113 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5444 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5446 : (forall X:term, auto___def_81 X -> auto___def_24 X -> False)
    -> forall X1 X2:term, auto___def_24 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_24. intros X1 X2. intro H. intros.
  elim (rem_2014 X1 X2 H);  intros.
Defined.

Remark rem_5447 : (forall X:term, auto___def_81 X -> auto___def_24 X -> False)
    -> forall X1 X2:term, auto___def_81 (r_current X1 X2) -> auto___def_24 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_81_m__def_24. intros X1 X2. intro H. intros.
  elim (rem_2718 X1 X2 H);  intros.
  apply (rem_5446 epsilon_m__def_81_m__def_24 X1 X2);  tauto.
Defined.

Remark rem_5448 : forall X1:term, auto___def_81 X1 -> auto___def_24 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_81_m__def_24 1.
  intro X. case X.
   intro H. elim (rem_2730  H).
   intro H. elim (rem_2723  H).
  intros X1 X2. intro H. elim (rem_2735 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2720 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2734 X1 X2 H).
   intro H. elim (rem_2739  H).
  intros X1 X2. intro H. elim (rem_2743 X1 X2 H).
   intro H. elim (rem_2740  H).
  intros X1 X2. intro H. elim (rem_2742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2724 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2721 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2732 X1 X2 H).
  intros X1. intro H. elim (rem_2726 X1 H).
  intros X1 X2. intro H. elim (rem_2729 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2728 X1 X2 H).
   intro H. elim (rem_2731  H).
   intro H. elim (rem_2727  H).
  intros X1 X2;  exact (rem_5447 epsilon_m__def_81_m__def_24 X1 X2).
  intros X1 X2. intro H. elim (rem_2725 X1 X2 H).
  intros X1. intro H. elim (rem_2736 X1 H).
   intro H. elim (rem_2741  H).
  intros X1 X2. intro H. elim (rem_2738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2722 X1 X2 H).
   intro H. elim (rem_2737  H).
Qed.

Remark rem_5449 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___def_24 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5448).
Defined.

Remark rem_5450 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_25 X2 -> auto___def_24 X1 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_24 X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5449 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5451 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5450 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5452 : (forall X:term, auto___type_7 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (nonceb_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2732 X1 X2 H);  intros.
Defined.

Remark rem_5453 : (forall X:term, auto___type_7 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> auto___def_81 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2043 X1 X2 H);  intros.
  apply (rem_5452 epsilon_m__type_7_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5454 : forall X1:term, auto___type_7 X1 -> auto___def_81 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_7_m__def_81 1.
  intro X. case X.
   intro H. elim (rem_2056  H).
   intro H. elim (rem_2048  H).
  intros X1 X2. intro H. elim (rem_1939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2058 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2059 X1 X2 H).
   intro H. elim (rem_2063  H).
  intros X1 X2. intro H. elim (rem_2067 X1 X2 H).
   intro H. elim (rem_2064  H).
  intros X1 X2. intro H. elim (rem_2066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2046 X1 X2 H).
  intros X1 X2;  exact (rem_5453 epsilon_m__type_7_m__def_81 X1 X2).
  intros X1. intro H. elim (rem_2052 X1 H).
  intros X1 X2. intro H. elim (rem_2055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2054 X1 X2 H).
   intro H. elim (rem_2057  H).
   intro H. elim (rem_2053  H).
  intros X1 X2. intro H. elim (rem_2051 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2050 X1 X2 H).
  intros X1. intro H. elim (rem_2060 X1 H).
   intro H. elim (rem_2065  H).
  intros X1 X2. intro H. elim (rem_2062 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2047 X1 X2 H).
   intro H. elim (rem_2061  H).
Qed.

Remark rem_5455 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___type_7 X1 -> auto___def_81 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5454).
Defined.

Remark rem_5456 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_44 X2 -> auto___def_82 X2 -> auto___type_7 X1 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___type_7 X1 -> auto___def_81 X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5455 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5457 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5456 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5458 : (forall X:term, auto___def_84 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (noncea_current X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_2742 X1 X2 H);  intros.
Defined.

Remark rem_5459 : (forall X:term, auto___def_84 X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_84 (noncea_current X1 X2) -> auto___def_81 (noncea_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_1680 X1 X2 H);  intros.
  apply (rem_5458 epsilon_m__def_84_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5460 : forall X1:term, auto___def_84 X1 -> auto___def_81 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_84_m__def_81 1.
  intro X. case X.
   intro H. elim (rem_1693  H).
   intro H. elim (rem_1685  H).
  intros X1 X2. intro H. elim (rem_1698 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1682 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1696 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1697 X1 X2 H).
   intro H. elim (rem_1702  H).
  intros X1 X2. intro H. elim (rem_1705 X1 X2 H).
   intro H. elim (rem_1703  H).
  intros X1 X2;  exact (rem_5459 epsilon_m__def_84_m__def_81 X1 X2).
  intros X1 X2. intro H. elim (rem_1686 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1683 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1695 X1 X2 H).
  intros X1. intro H. elim (rem_1689 X1 H).
  intros X1 X2. intro H. elim (rem_1692 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1691 X1 X2 H).
   intro H. elim (rem_1694  H).
   intro H. elim (rem_1690  H).
  intros X1 X2. intro H. elim (rem_1688 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1687 X1 X2 H).
  intros X1. intro H. elim (rem_1699 X1 H).
   intro H. elim (rem_1704  H).
  intros X1 X2. intro H. elim (rem_1701 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1684 X1 X2 H).
   intro H. elim (rem_1700  H).
Qed.

Remark rem_5461 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_84 X1 -> auto___def_81 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_current_m__def_79. exact (rem_5460).
Defined.

Remark rem_5462 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_81 X1 -> False). clear  epsilon_mtestable_current_m__def_79. tauto.
  exact (rem_5461 epsilon_mtestable_current_m__def_79 X1).
Defined.

Remark rem_5463 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_84 X1 -> auto___def_85 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_5462 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5464 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_testable_current (crypt X1 X2) -> auto___def_79 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_616 X1 X2 H);  intros.
  apply (rem_5329 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5335 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5342 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5349 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5355 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5361 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5367 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5445 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5451 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5457 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5463 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5465 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> auto___def_79 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intro H. intros.
  elim (rem_770 H);  intros.
Defined.

Remark rem_5466 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> auto_testable_current bob -> auto___def_79 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intro H. intros.
  elim (rem_620 H);  intros.
  apply (rem_5465 epsilon_mtestable_current_m__def_79);  tauto.
Defined.

Remark rem_5467 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_771 X1 X2 H);  intros.
Defined.

Remark rem_5468 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_testable_current (noncea_old X1 X2) -> auto___def_79 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_623 X1 X2 H);  intros.
  apply (rem_5467 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5469 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (r_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_772 X1 X2 H);  intros.
Defined.

Remark rem_5470 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_testable_current (r_old X1 X2) -> auto___def_79 (r_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_628 X1 X2 H);  intros.
  apply (rem_5469 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5471 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_79 (p X1) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1. intro H. intros.
  elim (rem_774 X1 H);  intros.
Defined.

Remark rem_5472 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto_testable_current (p X1) -> auto___def_79 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1. intro H. intros.
  elim (rem_633 X1 H);  intros.
  apply (rem_5471 epsilon_mtestable_current_m__def_79 X1);  tauto.
Defined.

Remark rem_5473 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_776 X1 X2 H);  intros.
Defined.

Remark rem_5474 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_testable_current (passwd_old X1 X2) -> auto___def_79 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_636 X1 X2 H);  intros.
  apply (rem_5473 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5475 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> auto___def_79 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intro H. intros.
  elim (rem_778 H);  intros.
Defined.

Remark rem_5476 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> auto_testable_current alice -> auto___def_79 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intro H. intros.
  elim (rem_639 H);  intros.
  apply (rem_5475 epsilon_mtestable_current_m__def_79);  tauto.
Defined.

Remark rem_5477 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_780 X1 X2 H);  intros.
Defined.

Remark rem_5478 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_testable_current (nonceb_old X1 X2) -> auto___def_79 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_642 X1 X2 H);  intros.
  apply (rem_5477 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5479 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (dec X1 X2) -> auto_testable_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_781 X1 X2 H);  intros.
Defined.

Remark rem_5480 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_testable_current (dec X1 X2) -> auto___def_79 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_648 X1 X2 H);  intros.
  apply (rem_5479 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5481 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (enc X1 X2) -> auto___def_71 X1 -> auto___def_72 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_782 X1 X2 H);  intros.
Defined.

Remark rem_5482 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (enc X1 X2) -> auto_testable_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_782 X1 X2 H);  intros.
Defined.

Remark rem_5483 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (enc X1 X2) -> auto___def_79 X1 -> auto___def_80 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_782 X1 X2 H);  intros.
Defined.

Remark rem_5484 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (enc X1 X2) -> auto___def_75 X1 -> auto___def_76 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_782 X1 X2 H);  intros.
Defined.

Remark rem_5485 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_testable_current (enc X1 X2) -> auto___def_79 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_669 X1 X2 H);  intros.
  apply (rem_5481 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5482 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5483 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5484 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5486 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (cons X1 X2) -> auto_testable_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_783 X1 X2 H);  intros.
Defined.

Remark rem_5487 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (cons X1 X2) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_783 X1 X2 H);  intros.
Defined.

Remark rem_5488 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_testable_current (cons X1 X2) -> auto___def_79 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_675 X1 X2 H);  intros.
  apply (rem_5486 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5487 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5489 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_79 (s X1) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1. intro H. intros.
  elim (rem_784 X1 H);  intros.
Defined.

Remark rem_5490 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto_testable_current (s X1) -> auto___def_79 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1. intro H. intros.
  elim (rem_678 X1 H);  intros.
  apply (rem_5489 epsilon_mtestable_current_m__def_79 X1);  tauto.
Defined.

Remark rem_5491 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> auto___def_79 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intro H. intros.
  elim (rem_787 H);  intros.
Defined.

Remark rem_5492 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> auto_testable_current i -> auto___def_79 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intro H. intros.
  elim (rem_681 H);  intros.
  apply (rem_5491 epsilon_mtestable_current_m__def_79);  tauto.
Defined.

Remark rem_5493 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> auto___def_79 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intro H. intros.
  elim (rem_788 H);  intros.
Defined.

Remark rem_5494 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> auto_testable_current nil -> auto___def_79 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intro H. intros.
  elim (rem_684 H);  intros.
  apply (rem_5493 epsilon_mtestable_current_m__def_79);  tauto.
Defined.

Remark rem_5495 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> auto___def_79 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intro H. intros.
  elim (rem_789 H);  intros.
Defined.

Remark rem_5496 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> auto_testable_current server -> auto___def_79 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intro H. intros.
  elim (rem_687 H);  intros.
  apply (rem_5495 epsilon_mtestable_current_m__def_79);  tauto.
Defined.

Remark rem_5497 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (key X1 X2) -> auto___def_119 X1 -> auto___type_31 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_791 X1 X2 H);  intros.
Defined.

Remark rem_5498 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (key X1 X2) -> auto___def_114 X1 -> auto___def_66 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_791 X1 X2 H);  intros.
Defined.

Remark rem_5499 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_791 X1 X2 H);  intros.
Defined.

Remark rem_5500 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (key X1 X2) -> auto___def_12 X1 -> auto___def_13 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_791 X1 X2 H);  intros.
Defined.

Remark rem_5501 : (forall X:term, auto_testable_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_testable_current (key X1 X2) -> auto___def_79 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_713 X1 X2 H);  intros.
  apply (rem_5497 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5498 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5499 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
  apply (rem_5500 epsilon_mtestable_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5502 : forall X1:term, auto_testable_current X1 -> auto___def_79 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mtestable_current_m__def_79 1.
  intro X. case X.
  exact (rem_5476 epsilon_mtestable_current_m__def_79 ).
  exact (rem_5466 epsilon_mtestable_current_m__def_79 ).
  intros X1 X2;  exact (rem_5488 epsilon_mtestable_current_m__def_79 X1 X2).
  intros X1 X2;  exact (rem_5464 epsilon_mtestable_current_m__def_79 X1 X2).
  intros X1 X2;  exact (rem_5480 epsilon_mtestable_current_m__def_79 X1 X2).
  intros X1 X2;  exact (rem_5485 epsilon_mtestable_current_m__def_79 X1 X2).
  exact (rem_5492 epsilon_mtestable_current_m__def_79 ).
  intros X1 X2;  exact (rem_5501 epsilon_mtestable_current_m__def_79 X1 X2).
  exact (rem_5494 epsilon_mtestable_current_m__def_79 ).
  intros X1 X2. intro H. elim (rem_723 X1 X2 H).
  intros X1 X2;  exact (rem_5468 epsilon_mtestable_current_m__def_79 X1 X2).
  intros X1 X2. intro H. elim (rem_715 X1 X2 H).
  intros X1 X2;  exact (rem_5478 epsilon_mtestable_current_m__def_79 X1 X2).
  intros X1;  exact (rem_5472 epsilon_mtestable_current_m__def_79 X1).
  intros X1 X2. intro H. elim (rem_719 X1 X2 H).
  intros X1 X2;  exact (rem_5474 epsilon_mtestable_current_m__def_79 X1 X2).
   intro H. elim (rem_720  H).
   intro H. elim (rem_718  H).
  intros X1 X2. intro H. elim (rem_717 X1 X2 H).
  intros X1 X2;  exact (rem_5470 epsilon_mtestable_current_m__def_79 X1 X2).
  intros X1;  exact (rem_5490 epsilon_mtestable_current_m__def_79 X1).
  exact (rem_5496 epsilon_mtestable_current_m__def_79 ).
  intros X1 X2. intro H. elim (rem_722 X1 X2 H).
  intros X1 X2. intro H. elim (rem_716 X1 X2 H).
   intro H. elim (rem_721  H).
Qed.

Remark rem_5503 : forall X1 X2:term, auto___def_79 X2 -> auto___def_80 X1 -> auto_testable_current X2 -> auto_knows_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5502 X2)). tauto.
Qed.

Remark rem_5504 : (forall X:term, auto___def_77 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1329 X1 X2 H);  intros.
Defined.

Remark rem_5505 : (forall X:term, auto___def_77 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___def_17 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_5504 epsilon_m__def_77_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_5506 : forall X1:term, auto___def_77 X1 -> auto___def_17 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_m__def_17 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_5505 epsilon_m__def_77_m__def_17 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_5507 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_17 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5506).
Defined.

Remark rem_5508 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___type_2 X2 -> auto___def_17 X1 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_17 X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5507 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5509 : (forall X:term, auto___def_77 X -> auto___def_36 X -> False)
    -> forall X1 X2:term, auto___def_36 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_36. intros X1 X2. intro H. intros.
  elim (rem_2317 X1 X2 H);  intros.
Defined.

Remark rem_5510 : (forall X:term, auto___def_77 X -> auto___def_36 X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___def_36 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_36. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_5509 epsilon_m__def_77_m__def_36 X1 X2);  tauto.
Defined.

Remark rem_5511 : forall X1:term, auto___def_77 X1 -> auto___def_36 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_m__def_36 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_5510 epsilon_m__def_77_m__def_36 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_5512 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_36 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5511).
Defined.

Remark rem_5513 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_36 X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5512 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5514 : (forall X:term, auto___def_77 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_5336 X1 X2 H);  intros.
Defined.

Remark rem_5515 : (forall X:term, auto___def_77 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___def_21 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_5514 epsilon_m__def_77_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_5516 : forall X1:term, auto___def_77 X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_m__def_21 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_5515 epsilon_m__def_77_m__def_21 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_5517 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5516).
Defined.

Remark rem_5518 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_21 X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5517 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5519 : (forall X:term, auto___def_77 X -> auto___type_26 X -> False)
    -> forall X1 X2:term, auto___type_26 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__type_26. intros X1 X2. intro H. intros.
  elim (rem_5343 X1 X2 H);  intros.
Defined.

Remark rem_5520 : (forall X:term, auto___def_77 X -> auto___type_26 X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___type_26 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__type_26. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_5519 epsilon_m__def_77_m__type_26 X1 X2);  tauto.
Defined.

Remark rem_5521 : forall X1:term, auto___def_77 X1 -> auto___type_26 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_m__type_26 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_5520 epsilon_m__def_77_m__type_26 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_5522 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___type_26 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5521).
Defined.

Remark rem_5523 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___type_26 X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5522 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5524 : (forall X:term, auto___def_77 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1071 X1 X2 H);  intros.
Defined.

Remark rem_5525 : (forall X:term, auto___def_77 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto_knows_current (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_5524 epsilon_m__def_77_mknows_current X1 X2);  tauto.
Defined.

Remark rem_5526 : forall X1:term, auto___def_77 X1 -> auto_knows_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_mknows_current 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_5525 epsilon_m__def_77_mknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_5527 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto_knows_current X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5526).
Defined.

Remark rem_5528 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto_knows_current X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5527 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5529 : (forall X:term, auto___type_22 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (nonceb_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_15 X1 X2 H);  intros.
Defined.

Remark rem_5530 : (forall X:term, auto___type_22 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_22 (nonceb_current X1 X2) -> auto___def_77 (nonceb_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_22_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_1610 X1 X2 H);  intros.
  apply (rem_5529 epsilon_m__type_22_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5531 : forall X1:term, auto___type_22 X1 -> auto___def_77 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_22_m__def_77 1.
  intro X. case X.
   intro H. elim (rem_1622  H).
   intro H. elim (rem_1614  H).
  intros X1 X2. intro H. elim (rem_1627 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1612 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1625 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1626 X1 X2 H).
   intro H. elim (rem_1631  H).
  intros X1 X2. intro H. elim (rem_1635 X1 X2 H).
   intro H. elim (rem_1632  H).
  intros X1 X2. intro H. elim (rem_1634 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1615 X1 X2 H).
  intros X1 X2;  exact (rem_5530 epsilon_m__type_22_m__def_77 X1 X2).
  intros X1 X2. intro H. elim (rem_1624 X1 X2 H).
  intros X1. intro H. elim (rem_1618 X1 H).
  intros X1 X2. intro H. elim (rem_1621 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1620 X1 X2 H).
   intro H. elim (rem_1623  H).
   intro H. elim (rem_1619  H).
  intros X1 X2. intro H. elim (rem_1617 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1616 X1 X2 H).
  intros X1. intro H. elim (rem_1628 X1 H).
   intro H. elim (rem_1633  H).
  intros X1 X2. intro H. elim (rem_1630 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1613 X1 X2 H).
   intro H. elim (rem_1629  H).
Qed.

Remark rem_5532 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___type_22 X1 -> auto___def_77 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5531).
Defined.

Remark rem_5533 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___type_22 X1 -> auto___def_77 X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5532 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5534 : (forall X:term, auto___def_77 X -> auto___def_88 X -> False)
    -> forall X1 X2:term, auto___def_88 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_88. intros X1 X2. intro H. intros.
  elim (rem_2649 X1 X2 H);  intros.
Defined.

Remark rem_5535 : (forall X:term, auto___def_77 X -> auto___def_88 X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___def_88 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_88. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_5534 epsilon_m__def_77_m__def_88 X1 X2);  tauto.
Defined.

Remark rem_5536 : forall X1:term, auto___def_77 X1 -> auto___def_88 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_m__def_88 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_5535 epsilon_m__def_77_m__def_88 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_5537 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_88 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5536).
Defined.

Remark rem_5538 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___def_89 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> auto___def_88 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_88 X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5537 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5539 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto___def_17 X1 -> auto___type_2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5540 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5541 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5542 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto___type_26 X1 -> auto___def_111 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5543 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5544 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto___type_22 X1 -> auto___def_104 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5545 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto___def_88 X1 -> auto___def_89 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5546 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto___type_27 X1 -> auto___def_113 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5547 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5548 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5549 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (crypt X1 X2) -> auto___def_84 X1 -> auto___def_85 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_14 X1 X2 H);  intros.
Defined.

Remark rem_5550 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_27 (crypt X1 X2) -> auto___def_77 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_5379 X1 X2 H);  intros.
  apply (rem_5539 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5540 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5541 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5542 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5543 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5544 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5545 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5546 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5547 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5548 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5549 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5551 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> auto___def_77 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intro H. intros.
  elim (rem_17 H);  intros.
Defined.

Remark rem_5552 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> auto___type_27 bob -> auto___def_77 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intro H. intros.
  elim (rem_5382 H);  intros.
  apply (rem_5551 epsilon_m__type_27_m__def_77);  tauto.
Defined.

Remark rem_5553 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_18 X1 X2 H);  intros.
Defined.

Remark rem_5554 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_27 (noncea_old X1 X2) -> auto___def_77 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_5385 X1 X2 H);  intros.
  apply (rem_5553 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5555 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (r_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_19 X1 X2 H);  intros.
Defined.

Remark rem_5556 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_27 (r_old X1 X2) -> auto___def_77 (r_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_5388 X1 X2 H);  intros.
  apply (rem_5555 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5557 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1:term, auto___def_77 (p X1) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1. intro H. intros.
  elim (rem_20 X1 H);  intros.
Defined.

Remark rem_5558 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1:term, auto___type_27 (p X1) -> auto___def_77 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1. intro H. intros.
  elim (rem_5391 X1 H);  intros.
  apply (rem_5557 epsilon_m__type_27_m__def_77 X1);  tauto.
Defined.

Remark rem_5559 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_22 X1 X2 H);  intros.
Defined.

Remark rem_5560 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_27 (passwd_old X1 X2) -> auto___def_77 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_5394 X1 X2 H);  intros.
  apply (rem_5559 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5561 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> auto___def_77 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intro H. intros.
  elim (rem_24 H);  intros.
Defined.

Remark rem_5562 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> auto___type_27 alice -> auto___def_77 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intro H. intros.
  elim (rem_5397 H);  intros.
  apply (rem_5561 epsilon_m__type_27_m__def_77);  tauto.
Defined.

Remark rem_5563 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_26 X1 X2 H);  intros.
Defined.

Remark rem_5564 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_27 (nonceb_old X1 X2) -> auto___def_77 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_5400 X1 X2 H);  intros.
  apply (rem_5563 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5565 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (dec X1 X2) -> auto_testable_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_27 X1 X2 H);  intros.
Defined.

Remark rem_5566 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_27 (dec X1 X2) -> auto___def_77 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_5403 X1 X2 H);  intros.
  apply (rem_5565 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5567 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (enc X1 X2) -> auto___def_71 X1 -> auto___def_72 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_28 X1 X2 H);  intros.
Defined.

Remark rem_5568 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (enc X1 X2) -> auto_testable_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_28 X1 X2 H);  intros.
Defined.

Remark rem_5569 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (enc X1 X2) -> auto___def_79 X1 -> auto___def_80 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_28 X1 X2 H);  intros.
Defined.

Remark rem_5570 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (enc X1 X2) -> auto___def_75 X1 -> auto___def_76 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_28 X1 X2 H);  intros.
Defined.

Remark rem_5571 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_27 (enc X1 X2) -> auto___def_77 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_5409 X1 X2 H);  intros.
  apply (rem_5567 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5568 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5569 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5570 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5572 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (cons X1 X2) -> auto_testable_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_29 X1 X2 H);  intros.
Defined.

Remark rem_5573 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (cons X1 X2) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_29 X1 X2 H);  intros.
Defined.

Remark rem_5574 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_27 (cons X1 X2) -> auto___def_77 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_5413 X1 X2 H);  intros.
  apply (rem_5572 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5573 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5575 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1:term, auto___def_77 (s X1) -> auto_testable_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1. intro H. intros.
  elim (rem_30 X1 H);  intros.
Defined.

Remark rem_5576 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1:term, auto___type_27 (s X1) -> auto___def_77 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1. intro H. intros.
  elim (rem_5416 X1 H);  intros.
  apply (rem_5575 epsilon_m__type_27_m__def_77 X1);  tauto.
Defined.

Remark rem_5577 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> auto___def_77 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intro H. intros.
  elim (rem_33 H);  intros.
Defined.

Remark rem_5578 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> auto___type_27 i -> auto___def_77 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intro H. intros.
  elim (rem_5419 H);  intros.
  apply (rem_5577 epsilon_m__type_27_m__def_77);  tauto.
Defined.

Remark rem_5579 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> auto___def_77 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intro H. intros.
  elim (rem_34 H);  intros.
Defined.

Remark rem_5580 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> auto___type_27 nil -> auto___def_77 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intro H. intros.
  elim (rem_5422 H);  intros.
  apply (rem_5579 epsilon_m__type_27_m__def_77);  tauto.
Defined.

Remark rem_5581 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> auto___def_77 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intro H. intros.
  elim (rem_35 H);  intros.
Defined.

Remark rem_5582 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> auto___type_27 server -> auto___def_77 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intro H. intros.
  elim (rem_5425 H);  intros.
  apply (rem_5581 epsilon_m__type_27_m__def_77);  tauto.
Defined.

Remark rem_5583 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (key X1 X2) -> auto___def_119 X1 -> auto___type_31 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_37 X1 X2 H);  intros.
Defined.

Remark rem_5584 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (key X1 X2) -> auto___def_114 X1 -> auto___def_66 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_37 X1 X2 H);  intros.
Defined.

Remark rem_5585 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_37 X1 X2 H);  intros.
Defined.

Remark rem_5586 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (key X1 X2) -> auto___def_12 X1 -> auto___def_13 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_37 X1 X2 H);  intros.
Defined.

Remark rem_5587 : (forall X:term, auto___type_27 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_27 (key X1 X2) -> auto___def_77 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_5431 X1 X2 H);  intros.
  apply (rem_5583 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5584 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5585 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
  apply (rem_5586 epsilon_m__type_27_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5588 : forall X1:term, auto___type_27 X1 -> auto___def_77 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_27_m__def_77 1.
  intro X. case X.
  exact (rem_5562 epsilon_m__type_27_m__def_77 ).
  exact (rem_5552 epsilon_m__type_27_m__def_77 ).
  intros X1 X2;  exact (rem_5574 epsilon_m__type_27_m__def_77 X1 X2).
  intros X1 X2;  exact (rem_5550 epsilon_m__type_27_m__def_77 X1 X2).
  intros X1 X2;  exact (rem_5566 epsilon_m__type_27_m__def_77 X1 X2).
  intros X1 X2;  exact (rem_5571 epsilon_m__type_27_m__def_77 X1 X2).
  exact (rem_5578 epsilon_m__type_27_m__def_77 ).
  intros X1 X2;  exact (rem_5587 epsilon_m__type_27_m__def_77 X1 X2).
  exact (rem_5580 epsilon_m__type_27_m__def_77 ).
  intros X1 X2. intro H. elim (rem_5441 X1 X2 H).
  intros X1 X2;  exact (rem_5554 epsilon_m__type_27_m__def_77 X1 X2).
  intros X1 X2. intro H. elim (rem_5433 X1 X2 H).
  intros X1 X2;  exact (rem_5564 epsilon_m__type_27_m__def_77 X1 X2).
  intros X1;  exact (rem_5558 epsilon_m__type_27_m__def_77 X1).
  intros X1 X2. intro H. elim (rem_5437 X1 X2 H).
  intros X1 X2;  exact (rem_5560 epsilon_m__type_27_m__def_77 X1 X2).
   intro H. elim (rem_5438  H).
   intro H. elim (rem_5436  H).
  intros X1 X2. intro H. elim (rem_5435 X1 X2 H).
  intros X1 X2;  exact (rem_5556 epsilon_m__type_27_m__def_77 X1 X2).
  intros X1;  exact (rem_5576 epsilon_m__type_27_m__def_77 X1).
  exact (rem_5582 epsilon_m__type_27_m__def_77 ).
  intros X1 X2. intro H. elim (rem_5440 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5434 X1 X2 H).
   intro H. elim (rem_5439  H).
Qed.

Remark rem_5589 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___type_27 X1 -> auto___def_77 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5588).
Defined.

Remark rem_5590 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___type_27 X1 -> auto___def_77 X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5589 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5591 : (forall X:term, auto___def_77 X -> auto___def_24 X -> False)
    -> forall X1 X2:term, auto___def_24 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_24. intros X1 X2. intro H. intros.
  elim (rem_2014 X1 X2 H);  intros.
Defined.

Remark rem_5592 : (forall X:term, auto___def_77 X -> auto___def_24 X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___def_24 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_24. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_5591 epsilon_m__def_77_m__def_24 X1 X2);  tauto.
Defined.

Remark rem_5593 : forall X1:term, auto___def_77 X1 -> auto___def_24 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_m__def_24 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_5592 epsilon_m__def_77_m__def_24 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_5594 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_24 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5593).
Defined.

Remark rem_5595 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___def_25 X2 -> auto___def_24 X1 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_24 X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5594 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5596 : (forall X:term, auto___type_7 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___def_77 (nonceb_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_26 X1 X2 H);  intros.
Defined.

Remark rem_5597 : (forall X:term, auto___type_7 X -> auto___def_77 X -> False)
    -> forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> auto___def_77 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_77. intros X1 X2. intro H. intros.
  elim (rem_2043 X1 X2 H);  intros.
  apply (rem_5596 epsilon_m__type_7_m__def_77 X1 X2);  tauto.
Defined.

Remark rem_5598 : forall X1:term, auto___type_7 X1 -> auto___def_77 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_7_m__def_77 1.
  intro X. case X.
   intro H. elim (rem_2056  H).
   intro H. elim (rem_2048  H).
  intros X1 X2. intro H. elim (rem_1939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2058 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2059 X1 X2 H).
   intro H. elim (rem_2063  H).
  intros X1 X2. intro H. elim (rem_2067 X1 X2 H).
   intro H. elim (rem_2064  H).
  intros X1 X2. intro H. elim (rem_2066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2046 X1 X2 H).
  intros X1 X2;  exact (rem_5597 epsilon_m__type_7_m__def_77 X1 X2).
  intros X1. intro H. elim (rem_2052 X1 H).
  intros X1 X2. intro H. elim (rem_2055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2054 X1 X2 H).
   intro H. elim (rem_2057  H).
   intro H. elim (rem_2053  H).
  intros X1 X2. intro H. elim (rem_2051 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2050 X1 X2 H).
  intros X1. intro H. elim (rem_2060 X1 H).
   intro H. elim (rem_2065  H).
  intros X1 X2. intro H. elim (rem_2062 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2047 X1 X2 H).
   intro H. elim (rem_2061  H).
Qed.

Remark rem_5599 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___type_7 X1 -> auto___def_77 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5598).
Defined.

Remark rem_5600 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___def_44 X2 -> auto___type_17 X2 -> auto___type_7 X1 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___type_7 X1 -> auto___def_77 X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5599 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5601 : (forall X:term, auto___def_77 X -> auto___def_84 X -> False)
    -> forall X1 X2:term, auto___def_84 (r_current X1 X2) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_84. intros X1 X2. intro H. intros.
  elim (rem_1688 X1 X2 H);  intros.
Defined.

Remark rem_5602 : (forall X:term, auto___def_77 X -> auto___def_84 X -> False)
    -> forall X1 X2:term, auto___def_77 (r_current X1 X2) -> auto___def_84 (r_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_m__def_84. intros X1 X2. intro H. intros.
  elim (rem_12 X1 X2 H);  intros.
  apply (rem_5601 epsilon_m__def_77_m__def_84 X1 X2);  tauto.
Defined.

Remark rem_5603 : forall X1:term, auto___def_77 X1 -> auto___def_84 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_77_m__def_84 1.
  intro X. case X.
   intro H. elim (rem_24  H).
   intro H. elim (rem_17  H).
  intros X1 X2. intro H. elim (rem_29 X1 X2 H).
  intros X1 X2. intro H. elim (rem_14 X1 X2 H).
  intros X1 X2. intro H. elim (rem_27 X1 X2 H).
  intros X1 X2. intro H. elim (rem_28 X1 X2 H).
   intro H. elim (rem_33  H).
  intros X1 X2. intro H. elim (rem_37 X1 X2 H).
   intro H. elim (rem_34  H).
  intros X1 X2. intro H. elim (rem_36 X1 X2 H).
  intros X1 X2. intro H. elim (rem_18 X1 X2 H).
  intros X1 X2. intro H. elim (rem_15 X1 X2 H).
  intros X1 X2. intro H. elim (rem_26 X1 X2 H).
  intros X1. intro H. elim (rem_20 X1 H).
  intros X1 X2. intro H. elim (rem_23 X1 X2 H).
  intros X1 X2. intro H. elim (rem_22 X1 X2 H).
   intro H. elim (rem_25  H).
   intro H. elim (rem_21  H).
  intros X1 X2;  exact (rem_5602 epsilon_m__def_77_m__def_84 X1 X2).
  intros X1 X2. intro H. elim (rem_19 X1 X2 H).
  intros X1. intro H. elim (rem_30 X1 H).
   intro H. elim (rem_35  H).
  intros X1 X2. intro H. elim (rem_32 X1 X2 H).
  intros X1 X2. intro H. elim (rem_16 X1 X2 H).
   intro H. elim (rem_31  H).
Qed.

Remark rem_5604 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_84 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mtestable_current. exact (rem_5603).
Defined.

Remark rem_5605 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_84 X1 -> False). clear  epsilon_m__def_75_mtestable_current. tauto.
  exact (rem_5604 epsilon_m__def_75_mtestable_current X1).
Defined.

Remark rem_5606 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto_testable_current (crypt X1 X2) -> auto___def_77 X1 -> auto___type_17 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2. intro H. intros.
  elim (rem_616 X1 X2 H);  intros.
  apply (rem_5508 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
  apply (rem_5513 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
  apply (rem_5518 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
  apply (rem_5523 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
  apply (rem_5528 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
  apply (rem_5533 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
  apply (rem_5538 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
  apply (rem_5590 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
  apply (rem_5595 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
  apply (rem_5600 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
  apply (rem_5605 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
Defined.

Remark rem_5607 : (forall X:term, auto___def_75 X -> auto_testable_current X -> False)
    -> forall X1 X2:term, auto___def_75 (crypt X1 X2) -> auto_testable_current (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_75_mtestable_current. intros X1 X2. intro H. intros.
  elim (rem_731 X1 X2 H);  intros.
  apply (rem_5606 epsilon_m__def_75_mtestable_current X1 X2);  tauto.
Defined.

Remark rem_5608 : forall X1:term, auto___def_75 X1 -> auto_testable_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_75_mtestable_current 1.
  intro X. case X.
   intro H. elim (rem_743  H).
   intro H. elim (rem_735  H).
  intros X1 X2. intro H. elim (rem_748 X1 X2 H).
  intros X1 X2;  exact (rem_5607 epsilon_m__def_75_mtestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_746 X1 X2 H).
  intros X1 X2. intro H. elim (rem_747 X1 X2 H).
   intro H. elim (rem_752  H).
  intros X1 X2. intro H. elim (rem_756 X1 X2 H).
   intro H. elim (rem_753  H).
  intros X1 X2. intro H. elim (rem_755 X1 X2 H).
  intros X1 X2. intro H. elim (rem_736 X1 X2 H).
  intros X1 X2. intro H. elim (rem_733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_745 X1 X2 H).
  intros X1. intro H. elim (rem_739 X1 H).
  intros X1 X2. intro H. elim (rem_742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_741 X1 X2 H).
   intro H. elim (rem_744  H).
   intro H. elim (rem_740  H).
  intros X1 X2. intro H. elim (rem_738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_737 X1 X2 H).
  intros X1. intro H. elim (rem_749 X1 H).
   intro H. elim (rem_754  H).
  intros X1 X2. intro H. elim (rem_751 X1 X2 H).
  intros X1 X2. intro H. elim (rem_734 X1 X2 H).
   intro H. elim (rem_750  H).
Qed.

Remark rem_5609 : forall X1 X2:term, auto___def_75 X2 -> auto___def_76 X1 -> auto_testable_current X2 -> auto_knows_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5608 X2)). tauto.
Qed.

Remark rem_5610 : forall X1 X2:term, auto_testable_current X2 -> auto_testable_current (enc X2 X1) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_669 X2 X1 H);  intros.
  apply (rem_5321 X1 X2);  tauto.
  apply (rem_5323 X1 X2);  tauto.
  apply (rem_5503 X1 X2);  tauto.
  apply (rem_5609 X1 X2);  tauto.
Qed.

Remark rem_5611 : forall X1 X2:term, auto_testable_current (enc X2 X1) -> auto_testable_current X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_testable_current X2 -> auto_testable_current (enc X2 X1) -> auto_knows_current X1). tauto. exact (rem_5610 X1 X2).
Qed.

Remark rem_5612 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5613 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_5612 epsilon_m__type_2_ptestable_current X1).
Defined.

Remark rem_5614 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5615 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_5614 epsilon_m__type_2_ptestable_current X2).
Defined.

Remark rem_5616 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_5613 epsilon_m__type_2_ptestable_current X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_5615 epsilon_m__type_2_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5617 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5616 epsilon_m__type_2_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_2_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_1;  tauto.
 clear  epsilon_m__type_2_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5618 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5619 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_5618 epsilon_m__type_2_ptestable_current X1).
Defined.

Remark rem_5620 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5621 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_5620 epsilon_m__type_2_ptestable_current X2).
Defined.

Remark rem_5622 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_5619 epsilon_m__type_2_ptestable_current X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_5621 epsilon_m__type_2_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5623 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5622 epsilon_m__type_2_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_2_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_3;  tauto.
 clear  epsilon_m__type_2_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5624 : forall X1 X2:term, auto___type_2 (crypt X1 X2) -> or_2
    (auto___def_17 X1 /\ auto___type_2 X2)
    (auto___def_21 X1 /\ auto___def_22 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_5625 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_2 (crypt X1 X2) -> auto_testable_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5624 X1 X2 H);  intros.
  apply (rem_5617 epsilon_m__type_2_ptestable_current X1 X2);  tauto.
  apply (rem_5623 epsilon_m__type_2_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_5626 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5627 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_5626 epsilon_m__type_2_ptestable_current X1).
Defined.

Remark rem_5628 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5629 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_5628 epsilon_m__type_2_ptestable_current X2).
Defined.

Remark rem_5630 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_5627 epsilon_m__type_2_ptestable_current X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_5629 epsilon_m__type_2_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5631 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5630 epsilon_m__type_2_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_2_ptestable_current A1 A2. intros. apply trans_testable_current_key_4;  tauto.
 clear  epsilon_m__type_2_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5632 : (forall X:term, auto___type_2 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_2 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1399 X1 X2 H);  intros.
  apply (rem_5631 epsilon_m__type_2_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_5633 : forall X1 X2:term, auto___type_2 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5634 : forall X1 X2:term, auto___type_2 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5635 : auto___type_2 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5636 : forall X1 X2:term, auto___type_2 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5637 : forall X1 X2:term, auto___type_2 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5638 : forall X1 X2:term, auto___type_2 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5639 : forall X1:term, auto___type_2 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5640 : auto___type_2 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5641 : forall X1 X2:term, auto___type_2 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5642 : forall X1 X2:term, auto___type_2 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5643 : auto___type_2 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5644 : auto___type_2 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5645 : forall X1 X2:term, auto___type_2 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5646 : forall X1 X2:term, auto___type_2 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5647 : forall X1 X2:term, auto___type_2 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5648 : forall X1 X2:term, auto___type_2 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5649 : forall X1:term, auto___type_2 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5650 : auto___type_2 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5651 : forall X1 X2:term, auto___type_2 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5652 : auto___type_2 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5653 : auto___type_2 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5654 : auto___type_2 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5655 : forall X1 X2:term, auto___type_2 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5656 : forall X1:term, auto___type_2 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_2_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_5643  H).
   intro H. elim (rem_5635  H).
  intros X1 X2. intro H. elim (rem_5648 X1 X2 H).
  intros X1 X2;  exact (rem_5625 epsilon_m__type_2_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_5646 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5647 X1 X2 H).
   intro H. elim (rem_5652  H).
  intros X1 X2;  exact (rem_5632 epsilon_m__type_2_ptestable_current X1 X2).
   intro H. elim (rem_5653  H).
  intros X1 X2. intro H. elim (rem_5655 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5636 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5633 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5645 X1 X2 H).
  intros X1. intro H. elim (rem_5639 X1 H).
  intros X1 X2. intro H. elim (rem_5642 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5641 X1 X2 H).
   intro H. elim (rem_5644  H).
   intro H. elim (rem_5640  H).
  intros X1 X2. intro H. elim (rem_5638 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5637 X1 X2 H).
  intros X1. intro H. elim (rem_5649 X1 H).
   intro H. elim (rem_5654  H).
  intros X1 X2. intro H. elim (rem_5651 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5634 X1 X2 H).
   intro H. elim (rem_5650  H).
Qed.

Remark rem_5657 : forall X1 X2:term, auto___def_17 X2 -> auto___type_2 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_2 X1 -> auto_testable_current X1). tauto. exact (rem_5656 X1).
Qed.

Remark rem_5658 : (forall X:term, auto___def_41 X -> auto___def_119 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_41_p__def_119.  tauto.
Defined.

Remark rem_5659 : (forall X:term, auto___def_41 X -> auto___def_119 X)
    -> auto___def_119 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_41_p__def_119.  case (rem_5658 epsilon_m__def_41_p__def_119). clear  epsilon_m__def_41_p__def_119. intros. apply trans___def_119_sym_1;  tauto.
 clear  epsilon_m__def_41_p__def_119. tauto.
Defined.

Remark rem_5660 : auto___def_41 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5661 : (forall X:term, auto___def_41 X -> auto___def_119 X)
    -> auto___def_41 sym -> auto___def_119 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_41_p__def_119. intro H. intros.
  elim (rem_5660 H);  intros.
  apply (rem_5659 epsilon_m__def_41_p__def_119);  tauto.
Defined.

Remark rem_5662 : forall X1 X2:term, auto___def_41 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5663 : forall X1 X2:term, auto___def_41 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5664 : forall X1 X2:term, auto___def_41 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5665 : auto___def_41 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5666 : forall X1 X2:term, auto___def_41 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5667 : forall X1 X2:term, auto___def_41 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5668 : forall X1 X2:term, auto___def_41 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5669 : forall X1:term, auto___def_41 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5670 : forall X1 X2:term, auto___def_41 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5671 : forall X1 X2:term, auto___def_41 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5672 : auto___def_41 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5673 : forall X1 X2:term, auto___def_41 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5674 : forall X1 X2:term, auto___def_41 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5675 : forall X1 X2:term, auto___def_41 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5676 : forall X1 X2:term, auto___def_41 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5677 : forall X1:term, auto___def_41 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5678 : forall X1 X2:term, auto___def_41 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5679 : auto___def_41 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5680 : auto___def_41 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5681 : auto___def_41 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5682 : forall X1 X2:term, auto___def_41 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5683 : forall X1 X2:term, auto___def_41 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5684 : forall X1:term, auto___def_41 X1 -> auto___def_119 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_41_p__def_119 1.
  intro X. case X.
   intro H. elim (rem_5672  H).
   intro H. elim (rem_5665  H).
  intros X1 X2. intro H. elim (rem_5676 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5662 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5674 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5675 X1 X2 H).
   intro H. elim (rem_5679  H).
  intros X1 X2. intro H. elim (rem_5683 X1 X2 H).
   intro H. elim (rem_5680  H).
  intros X1 X2. intro H. elim (rem_5682 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5666 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5663 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5673 X1 X2 H).
  intros X1. intro H. elim (rem_5669 X1 H).
  intros X1 X2. intro H. elim (rem_5671 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5670 X1 X2 H).
   intro H. elim (rem_2153  H).
   intro H. elim (rem_1401  H).
  intros X1 X2. intro H. elim (rem_5668 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5667 X1 X2 H).
  intros X1. intro H. elim (rem_5677 X1 H).
   intro H. elim (rem_5681  H).
  intros X1 X2. intro H. elim (rem_5678 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5664 X1 X2 H).
  exact (rem_5661 epsilon_m__def_41_p__def_119 ).
Qed.

Remark rem_5685 : (forall X:term, auto___def_37 X -> auto_testable_current X)
    -> forall X1:term, auto___def_41 X1 -> auto___def_119 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_37_ptestable_current. exact (rem_5684).
Defined.

Remark rem_5686 : (forall X:term, auto___def_37 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_37_ptestable_current. intros X1 X2.
  cut (auto___def_41 X1 -> auto___def_119 X1). tauto. exact (rem_5685 epsilon_m__def_37_ptestable_current X1).
Defined.

Remark rem_5687 : forall X2:term, auto___def_42 X2 -> auto___type_31 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_42_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_404  H).
   intro H. elim (rem_397  H).
  intros X1 X2. intro H. elim (rem_409 X1 X2 H).
  intros X1 X2. intro H. elim (rem_394 X1 X2 H).
  intros X1 X2. intro H. elim (rem_407 X1 X2 H).
  intros X1 X2. intro H. elim (rem_408 X1 X2 H).
   intro H. elim (rem_413  H).
  intros X1 X2. intro H. elim (rem_417 X1 X2 H).
   intro H. elim (rem_414  H).
  intros X1 X2. intro H. elim (rem_416 X1 X2 H).
  intros X1 X2. intro H. elim (rem_398 X1 X2 H).
  intros X1 X2. intro H. elim (rem_395 X1 X2 H).
  intros X1 X2. intro H. elim (rem_406 X1 X2 H).
  intros X1. intro H. elim (rem_400 X1 H).
  intros X1 X2. intro H. elim (rem_403 X1 X2 H).
  intros X1 X2. intro H. elim (rem_402 X1 X2 H).
   intro H. elim (rem_405  H).
   intro H. elim (rem_401  H).
  intros X1 X2. intro H. elim (rem_399 X1 X2 H).
  intros X1 X2;  exact (rem_393 epsilon_m__def_42_p__type_31 X1 X2).
  intros X1. intro H. elim (rem_410 X1 H).
   intro H. elim (rem_415  H).
  intros X1 X2. intro H. elim (rem_412 X1 X2 H).
  intros X1 X2. intro H. elim (rem_396 X1 X2 H).
   intro H. elim (rem_411  H).
Qed.

Remark rem_5688 : (forall X:term, auto___def_37 X -> auto_testable_current X)
    -> forall X2:term, auto___def_42 X2 -> auto___type_31 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_37_ptestable_current. exact (rem_5687).
Defined.

Remark rem_5689 : (forall X:term, auto___def_37 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_37_ptestable_current. intros X1 X2.
  cut (auto___def_42 X2 -> auto___type_31 X2). tauto. exact (rem_5688 epsilon_m__def_37_ptestable_current X2).
Defined.

Remark rem_5690 : (forall X:term, auto___def_37 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_37_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_5686 epsilon_m__def_37_ptestable_current X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_5689 epsilon_m__def_37_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5691 : (forall X:term, auto___def_37 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_37_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5690 epsilon_m__def_37_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_37_ptestable_current A1 A2. intros. apply trans_testable_current_key_1;  tauto.
 clear  epsilon_m__def_37_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5692 : (forall X:term, auto___def_37 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_37 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_37_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1405 X1 X2 H);  intros.
  apply (rem_5691 epsilon_m__def_37_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_5693 : forall X1 X2:term, auto___def_37 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5694 : forall X1 X2:term, auto___def_37 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5695 : forall X1 X2:term, auto___def_37 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5696 : auto___def_37 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5697 : forall X1 X2:term, auto___def_37 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5698 : forall X1 X2:term, auto___def_37 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5699 : forall X1 X2:term, auto___def_37 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5700 : forall X1:term, auto___def_37 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5701 : auto___def_37 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5702 : forall X1 X2:term, auto___def_37 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5703 : forall X1 X2:term, auto___def_37 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5704 : auto___def_37 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5705 : auto___def_37 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5706 : forall X1 X2:term, auto___def_37 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5707 : forall X1 X2:term, auto___def_37 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5708 : forall X1 X2:term, auto___def_37 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5709 : forall X1 X2:term, auto___def_37 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5710 : forall X1:term, auto___def_37 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5711 : auto___def_37 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5712 : forall X1 X2:term, auto___def_37 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5713 : auto___def_37 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5714 : auto___def_37 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5715 : auto___def_37 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5716 : forall X1 X2:term, auto___def_37 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5717 : forall X1:term, auto___def_37 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_37_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_5704  H).
   intro H. elim (rem_5696  H).
  intros X1 X2. intro H. elim (rem_5709 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5693 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5707 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5708 X1 X2 H).
   intro H. elim (rem_5713  H).
  intros X1 X2;  exact (rem_5692 epsilon_m__def_37_ptestable_current X1 X2).
   intro H. elim (rem_5714  H).
  intros X1 X2. intro H. elim (rem_5716 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5697 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5694 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5706 X1 X2 H).
  intros X1. intro H. elim (rem_5700 X1 H).
  intros X1 X2. intro H. elim (rem_5703 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5702 X1 X2 H).
   intro H. elim (rem_5705  H).
   intro H. elim (rem_5701  H).
  intros X1 X2. intro H. elim (rem_5699 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5698 X1 X2 H).
  intros X1. intro H. elim (rem_5710 X1 H).
   intro H. elim (rem_5715  H).
  intros X1 X2. intro H. elim (rem_5712 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5695 X1 X2 H).
   intro H. elim (rem_5711  H).
Qed.

Remark rem_5718 : forall X1 X2:term, auto___def_36 X2 -> auto___def_37 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_37 X1 -> auto_testable_current X1). tauto. exact (rem_5717 X1).
Qed.

Remark rem_5719 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5720 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_5719 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5721 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5722 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_5721 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_5723 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_5720 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_5722 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5724 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5723 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_2;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5725 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5726 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_5725 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5727 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5728 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_5727 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_5729 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_5726 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_5728 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5730 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5729 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_9;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5731 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5732 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_5731 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5733 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5734 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_5733 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_5735 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_5732 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_5734 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5736 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5735 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_10;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5737 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5738 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_5737 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_5739 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5740 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_5739 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_5741 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_5738 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_5740 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5742 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5741 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5743 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5744 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_5743 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_5745 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5746 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_5745 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_5747 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_5744 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_5746 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5748 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5747 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_7;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5749 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5750 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_5749 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_5751 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5752 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_5751 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_5753 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_5750 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_5752 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5754 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5753 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_8;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5755 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_5756 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_5755 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_5757 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intros X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_5758 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_5757 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_5759 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5756 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5758 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5760 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5759 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5761 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1860 X1 X2 H);  intros.
  apply (rem_5742 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_5748 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_5754 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_5760 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5762 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  tauto.
Defined.

Remark rem_5763 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_5762 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_5764 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_2438 H);  intros.
  apply (rem_5763 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_5765 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_5755 epsilon_mknows_old_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_5766 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intros A1.
  case (rem_5765 epsilon_mknows_old_pknows_current X1 A1). clear  epsilon_mknows_old_pknows_current A1. intros. apply trans_knows_current_p_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1. tauto.
Defined.

Remark rem_5767 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old (p X1) -> auto_knows_current (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intro H. intros.
  elim (rem_2442 X1 H);  intros.
  apply (rem_5766 epsilon_mknows_old_pknows_current X1);  tauto.
Defined.

Remark rem_5768 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_5762 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_5769 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_2445 H);  intros.
  apply (rem_5768 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_5770 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_current (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5759 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_dec_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5771 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old (dec X1 X2) -> auto_knows_current (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_2448 X1 X2 H);  intros.
  apply (rem_5770 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5772 : (forall X:term, auto___def_10 X -> auto_knows_current X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5773 : (forall X:term, auto___def_10 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_10_pknows_current. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_5772 epsilon_m__def_10_pknows_current X1).
Defined.

Remark rem_5774 : (forall X:term, auto___def_10 X -> auto_knows_current X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5775 : (forall X:term, auto___def_10 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_10_pknows_current. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_5774 epsilon_m__def_10_pknows_current X2).
Defined.

Remark rem_5776 : (forall X:term, auto___def_10 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_10_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_5773 epsilon_m__def_10_pknows_current X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_5775 epsilon_m__def_10_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5777 : (forall X:term, auto___def_10 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_10_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5776 epsilon_m__def_10_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_10_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_m__def_10_pknows_current A1 A2. tauto.
Defined.

Remark rem_5778 : (forall X:term, auto___def_10 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_10 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_10_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_3175 X1 X2 H);  intros.
  apply (rem_5777 epsilon_m__def_10_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5779 : forall X1:term, auto___def_10 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_10_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_3187  H).
   intro H. elim (rem_3179  H).
  intros X1 X2. intro H. elim (rem_3192 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1818 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3190 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3191 X1 X2 H).
   intro H. elim (rem_3196  H).
  intros X1 X2;  exact (rem_5778 epsilon_m__def_10_pknows_current X1 X2).
   intro H. elim (rem_3197  H).
  intros X1 X2. intro H. elim (rem_3199 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3180 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3177 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3189 X1 X2 H).
  intros X1. intro H. elim (rem_3183 X1 H).
  intros X1 X2. intro H. elim (rem_3186 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3185 X1 X2 H).
   intro H. elim (rem_3188  H).
   intro H. elim (rem_3184  H).
  intros X1 X2. intro H. elim (rem_3182 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3181 X1 X2 H).
  intros X1. intro H. elim (rem_3193 X1 H).
   intro H. elim (rem_3198  H).
  intros X1 X2. intro H. elim (rem_3195 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3178 X1 X2 H).
   intro H. elim (rem_3194  H).
Qed.

Remark rem_5780 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_10 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current. exact (rem_5779).
Defined.

Remark rem_5781 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_10 X1 -> auto_knows_current X1). tauto. exact (rem_5780 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_5782 : (forall X:term, auto___def_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_11_pknows_current. intros X1 X2. intros A1 A2.
  tauto.
Defined.

Remark rem_5783 : (forall X:term, auto___def_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_knows_current (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5782 epsilon_m__def_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_11_pknows_current A1 A2. intros. apply trans_knows_current_passwd_old_1;  tauto.
 clear  epsilon_m__def_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_5784 : (forall X:term, auto___def_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_11 (passwd_old X1 X2) -> auto_knows_current (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_11_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1274 X1 X2 H);  intros.
  apply (rem_5783 epsilon_m__def_11_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5785 : forall X1 X2:term, auto___def_11 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5786 : forall X1 X2:term, auto___def_11 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5787 : forall X1 X2:term, auto___def_11 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5788 : auto___def_11 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5789 : forall X1 X2:term, auto___def_11 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5790 : forall X1 X2:term, auto___def_11 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5791 : forall X1 X2:term, auto___def_11 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5792 : forall X1:term, auto___def_11 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5793 : auto___def_11 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5794 : forall X1 X2:term, auto___def_11 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5795 : auto___def_11 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5796 : auto___def_11 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5797 : forall X1 X2:term, auto___def_11 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5798 : forall X1 X2:term, auto___def_11 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5799 : forall X1 X2:term, auto___def_11 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5800 : forall X1 X2:term, auto___def_11 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5801 : forall X1:term, auto___def_11 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5802 : auto___def_11 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5803 : forall X1 X2:term, auto___def_11 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5804 : auto___def_11 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5805 : auto___def_11 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5806 : auto___def_11 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5807 : forall X1 X2:term, auto___def_11 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5808 : forall X1 X2:term, auto___def_11 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5809 : forall X2:term, auto___def_11 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_11_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_5795  H).
   intro H. elim (rem_5788  H).
  intros X1 X2. intro H. elim (rem_5800 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5785 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5798 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5799 X1 X2 H).
   intro H. elim (rem_5804  H).
  intros X1 X2. intro H. elim (rem_5808 X1 X2 H).
   intro H. elim (rem_5805  H).
  intros X1 X2. intro H. elim (rem_5807 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5789 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5786 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5797 X1 X2 H).
  intros X1. intro H. elim (rem_5792 X1 H).
  intros X1 X2. intro H. elim (rem_5794 X1 X2 H).
  intros X1 X2;  exact (rem_5784 epsilon_m__def_11_pknows_current X1 X2).
   intro H. elim (rem_5796  H).
   intro H. elim (rem_5793  H).
  intros X1 X2. intro H. elim (rem_5791 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5790 X1 X2 H).
  intros X1. intro H. elim (rem_5801 X1 H).
   intro H. elim (rem_5806  H).
  intros X1 X2. intro H. elim (rem_5803 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5787 X1 X2 H).
   intro H. elim (rem_5802  H).
Qed.

Remark rem_5810 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_11 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current. exact (rem_5809).
Defined.

Remark rem_5811 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_11 X2 -> auto_knows_current X2). tauto. exact (rem_5810 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_5812 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5781 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5811 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5813 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_knows_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5812 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_enc_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5814 : (forall X:term, auto___def_15 X -> auto_knows_current X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5815 : (forall X:term, auto___def_15 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_15_pknows_current. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_5814 epsilon_m__def_15_pknows_current X1).
Defined.

Remark rem_5816 : (forall X:term, auto___def_15 X -> auto_knows_current X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5817 : (forall X:term, auto___def_15 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_15_pknows_current. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_5816 epsilon_m__def_15_pknows_current X2).
Defined.

Remark rem_5818 : (forall X:term, auto___def_15 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_15_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_5815 epsilon_m__def_15_pknows_current X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_5817 epsilon_m__def_15_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5819 : (forall X:term, auto___def_15 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_15_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5818 epsilon_m__def_15_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_15_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_m__def_15_pknows_current A1 A2. tauto.
Defined.

Remark rem_5820 : (forall X:term, auto___def_15 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_15_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_5819 epsilon_m__def_15_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5821 : forall X1:term, auto___def_15 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_15_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_3220  H).
   intro H. elim (rem_3212  H).
  intros X1 X2. intro H. elim (rem_3225 X1 X2 H).
  intros X1 X2;  exact (rem_5820 epsilon_m__def_15_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_3223 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3224 X1 X2 H).
   intro H. elim (rem_3229  H).
  intros X1 X2. intro H. elim (rem_3233 X1 X2 H).
   intro H. elim (rem_3230  H).
  intros X1 X2. intro H. elim (rem_3232 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3213 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3210 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3222 X1 X2 H).
  intros X1. intro H. elim (rem_3216 X1 H).
  intros X1 X2. intro H. elim (rem_3219 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3218 X1 X2 H).
   intro H. elim (rem_3221  H).
   intro H. elim (rem_3217  H).
  intros X1 X2. intro H. elim (rem_3215 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3214 X1 X2 H).
  intros X1. intro H. elim (rem_3226 X1 H).
   intro H. elim (rem_3231  H).
  intros X1 X2. intro H. elim (rem_3228 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3211 X1 X2 H).
   intro H. elim (rem_3227  H).
Qed.

Remark rem_5822 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_15 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current. exact (rem_5821).
Defined.

Remark rem_5823 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_15 X1 -> auto_knows_current X1). tauto. exact (rem_5822 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_5824 : (forall X:term, auto___def_16 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_16_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_5825 : (forall X:term, auto___def_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_current (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_16_pknows_current. intros X1 X2. intros A1.
  case (rem_5824 epsilon_m__def_16_pknows_current X1 A1). clear  epsilon_m__def_16_pknows_current A1. intros. apply trans_knows_current_passwd_old_1;  tauto.
 clear  epsilon_m__def_16_pknows_current A1. tauto.
Defined.

Remark rem_5826 : (forall X:term, auto___def_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 (passwd_old X1 X2) -> auto_knows_current (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_16_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1830 X1 X2 H);  intros.
  apply (rem_5825 epsilon_m__def_16_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5827 : forall X1 X2:term, auto___def_16 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5828 : forall X1 X2:term, auto___def_16 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5829 : forall X1 X2:term, auto___def_16 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5830 : auto___def_16 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5831 : forall X1 X2:term, auto___def_16 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5832 : forall X1 X2:term, auto___def_16 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5833 : forall X1 X2:term, auto___def_16 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5834 : forall X1:term, auto___def_16 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5835 : auto___def_16 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5836 : forall X1 X2:term, auto___def_16 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5837 : auto___def_16 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5838 : auto___def_16 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5839 : forall X1 X2:term, auto___def_16 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5840 : forall X1 X2:term, auto___def_16 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5841 : forall X1 X2:term, auto___def_16 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5842 : forall X1 X2:term, auto___def_16 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5843 : forall X1:term, auto___def_16 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5844 : auto___def_16 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5845 : forall X1 X2:term, auto___def_16 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5846 : auto___def_16 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5847 : auto___def_16 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5848 : auto___def_16 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5849 : forall X1 X2:term, auto___def_16 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5850 : forall X1 X2:term, auto___def_16 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5851 : forall X2:term, auto___def_16 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_16_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_5837  H).
   intro H. elim (rem_5830  H).
  intros X1 X2. intro H. elim (rem_5842 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5827 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5840 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5841 X1 X2 H).
   intro H. elim (rem_5846  H).
  intros X1 X2. intro H. elim (rem_5850 X1 X2 H).
   intro H. elim (rem_5847  H).
  intros X1 X2. intro H. elim (rem_5849 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5831 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5828 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5839 X1 X2 H).
  intros X1. intro H. elim (rem_5834 X1 H).
  intros X1 X2. intro H. elim (rem_5836 X1 X2 H).
  intros X1 X2;  exact (rem_5826 epsilon_m__def_16_pknows_current X1 X2).
   intro H. elim (rem_5838  H).
   intro H. elim (rem_5835  H).
  intros X1 X2. intro H. elim (rem_5833 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5832 X1 X2 H).
  intros X1. intro H. elim (rem_5843 X1 H).
   intro H. elim (rem_5848  H).
  intros X1 X2. intro H. elim (rem_5845 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5829 X1 X2 H).
   intro H. elim (rem_5844  H).
Qed.

Remark rem_5852 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_16 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current. exact (rem_5851).
Defined.

Remark rem_5853 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_16 X2 -> auto_knows_current X2). tauto. exact (rem_5852 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_5854 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5823 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5853 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5855 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_knows_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5854 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_enc_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5856 : (forall X:term, auto___def_19 X -> auto_knows_current X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5857 : (forall X:term, auto___def_19 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_19_pknows_current. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_5856 epsilon_m__def_19_pknows_current X1).
Defined.

Remark rem_5858 : (forall X:term, auto___def_19 X -> auto_knows_current X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5859 : (forall X:term, auto___def_19 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_19_pknows_current. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_5858 epsilon_m__def_19_pknows_current X2).
Defined.

Remark rem_5860 : (forall X:term, auto___def_19 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_19_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_5857 epsilon_m__def_19_pknows_current X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_5859 epsilon_m__def_19_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5861 : (forall X:term, auto___def_19 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_19_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5860 epsilon_m__def_19_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_19_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__def_19_pknows_current A1 A2. tauto.
Defined.

Remark rem_5862 : (forall X:term, auto___def_19 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_19 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_19_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1840 X1 X2 H);  intros.
  apply (rem_5861 epsilon_m__def_19_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5863 : forall X1:term, auto___def_19 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_19_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_3152  H).
   intro H. elim (rem_3144  H).
  intros X1 X2. intro H. elim (rem_3157 X1 X2 H).
  intros X1 X2;  exact (rem_5862 epsilon_m__def_19_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_3155 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3156 X1 X2 H).
   intro H. elim (rem_3161  H).
  intros X1 X2. intro H. elim (rem_3165 X1 X2 H).
   intro H. elim (rem_3162  H).
  intros X1 X2. intro H. elim (rem_3164 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3145 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3142 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3154 X1 X2 H).
  intros X1. intro H. elim (rem_3148 X1 H).
  intros X1 X2. intro H. elim (rem_3151 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3150 X1 X2 H).
   intro H. elim (rem_3153  H).
   intro H. elim (rem_3149  H).
  intros X1 X2. intro H. elim (rem_3147 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3146 X1 X2 H).
  intros X1. intro H. elim (rem_3158 X1 H).
   intro H. elim (rem_3163  H).
  intros X1 X2. intro H. elim (rem_3160 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3143 X1 X2 H).
   intro H. elim (rem_3159  H).
Qed.

Remark rem_5864 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_19 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current. exact (rem_5863).
Defined.

Remark rem_5865 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_19 X1 -> auto_knows_current X1). tauto. exact (rem_5864 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_5866 : (forall X:term, auto___def_20 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_20_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_5867 : (forall X:term, auto___def_20 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_current (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_20_pknows_current. intros X1 X2. intros A1.
  case (rem_5866 epsilon_m__def_20_pknows_current X1 A1). clear  epsilon_m__def_20_pknows_current A1. intros. apply trans_knows_current_passwd_old_1;  tauto.
 clear  epsilon_m__def_20_pknows_current A1. tauto.
Defined.

Remark rem_5868 : (forall X:term, auto___def_20 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_20 (passwd_old X1 X2) -> auto_knows_current (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_20_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1837 X1 X2 H);  intros.
  apply (rem_5867 epsilon_m__def_20_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5869 : forall X1 X2:term, auto___def_20 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5870 : forall X1 X2:term, auto___def_20 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5871 : forall X1 X2:term, auto___def_20 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5872 : auto___def_20 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5873 : forall X1 X2:term, auto___def_20 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5874 : forall X1 X2:term, auto___def_20 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5875 : forall X1 X2:term, auto___def_20 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5876 : forall X1:term, auto___def_20 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5877 : auto___def_20 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5878 : forall X1 X2:term, auto___def_20 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5879 : auto___def_20 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5880 : auto___def_20 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5881 : forall X1 X2:term, auto___def_20 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5882 : forall X1 X2:term, auto___def_20 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5883 : forall X1 X2:term, auto___def_20 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5884 : forall X1 X2:term, auto___def_20 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5885 : forall X1:term, auto___def_20 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5886 : auto___def_20 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5887 : forall X1 X2:term, auto___def_20 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5888 : auto___def_20 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5889 : auto___def_20 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5890 : auto___def_20 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5891 : forall X1 X2:term, auto___def_20 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5892 : forall X1 X2:term, auto___def_20 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5893 : forall X2:term, auto___def_20 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_20_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_5879  H).
   intro H. elim (rem_5872  H).
  intros X1 X2. intro H. elim (rem_5884 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5869 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5882 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5883 X1 X2 H).
   intro H. elim (rem_5888  H).
  intros X1 X2. intro H. elim (rem_5892 X1 X2 H).
   intro H. elim (rem_5889  H).
  intros X1 X2. intro H. elim (rem_5891 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5873 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5870 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5881 X1 X2 H).
  intros X1. intro H. elim (rem_5876 X1 H).
  intros X1 X2. intro H. elim (rem_5878 X1 X2 H).
  intros X1 X2;  exact (rem_5868 epsilon_m__def_20_pknows_current X1 X2).
   intro H. elim (rem_5880  H).
   intro H. elim (rem_5877  H).
  intros X1 X2. intro H. elim (rem_5875 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5874 X1 X2 H).
  intros X1. intro H. elim (rem_5885 X1 H).
   intro H. elim (rem_5890  H).
  intros X1 X2. intro H. elim (rem_5887 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5871 X1 X2 H).
   intro H. elim (rem_5886  H).
Qed.

Remark rem_5894 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_20 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current. exact (rem_5893).
Defined.

Remark rem_5895 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_20 X2 -> auto_knows_current X2). tauto. exact (rem_5894 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_5896 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5865 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5895 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5897 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_knows_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5896 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_enc_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5898 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5759 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_enc_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5899 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old (enc X1 X2) -> auto_knows_current (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1290 X1 X2 H);  intros.
  apply (rem_5813 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_5855 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_5897 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_5898 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5900 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5759 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5901 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1263 X1 X2 H);  intros.
  apply (rem_5900 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5902 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intros A1.
  case (rem_5765 epsilon_mknows_old_pknows_current X1 A1). clear  epsilon_mknows_old_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1. tauto.
Defined.

Remark rem_5903 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intro H. intros.
  elim (rem_2473 X1 H);  intros.
  apply (rem_5902 epsilon_mknows_old_pknows_current X1);  tauto.
Defined.

Remark rem_5904 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_5762 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_5905 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_2476 H);  intros.
  apply (rem_5904 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_5906 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_5762 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_5907 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_2479 H);  intros.
  apply (rem_5906 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_5908 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current.  case (rem_5762 epsilon_mknows_old_pknows_current). clear  epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_5909 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_old server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_2482 H);  intros.
  apply (rem_5908 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_5910 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_61 X1 -> auto___def_61 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5911 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_61 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_61 X1). tauto. exact (rem_5910 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_5912 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_62 X2 -> auto___def_62 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5913 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_62 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_62 X2). tauto. exact (rem_5912 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_5914 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_61 X1 /\ auto___def_62 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_61 X1). 2:apply (rem_5911 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_62 X2). 2:apply (rem_5913 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5915 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5914 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5916 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5917 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_5916 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_5918 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5919 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_5918 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_5920 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_5917 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_5919 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5921 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5920 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_5922 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1361 X1 X2 H);  intros.
  apply (rem_5915 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_5921 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5923 : forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_mknows_old_pknows_current 1.
  intro X. case X.
  exact (rem_5769 epsilon_mknows_old_pknows_current ).
  exact (rem_5764 epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_5901 epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_5761 epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_5771 epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_5899 epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_5905 epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_5922 epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_5907 epsilon_mknows_old_pknows_current ).
  intros X1 X2. intro H. elim (rem_2508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2505 X1 X2 H).
  intros X1;  exact (rem_5767 epsilon_mknows_old_pknows_current X1).
  intros X1 X2. intro H. elim (rem_2503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1287 X1 X2 H).
   intro H. elim (rem_2504  H).
   intro H. elim (rem_2502  H).
  intros X1 X2. intro H. elim (rem_2501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2500 X1 X2 H).
  intros X1;  exact (rem_5903 epsilon_mknows_old_pknows_current X1).
  exact (rem_5909 epsilon_mknows_old_pknows_current ).
  intros X1 X2. intro H. elim (rem_2507 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2498 X1 X2 H).
   intro H. elim (rem_2506  H).
Qed.

Remark rem_5924 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5923).
Defined.

Remark rem_5925 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_5924 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5926 : forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_mknows_old_pknows_current 1.
  intro X. case X.
  exact (rem_5769 epsilon_mknows_old_pknows_current ).
  exact (rem_5764 epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_5901 epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_5761 epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_5771 epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_5899 epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_5905 epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_5922 epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_5907 epsilon_mknows_old_pknows_current ).
  intros X1 X2. intro H. elim (rem_2508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2505 X1 X2 H).
  intros X1;  exact (rem_5767 epsilon_mknows_old_pknows_current X1).
  intros X1 X2. intro H. elim (rem_2503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1287 X1 X2 H).
   intro H. elim (rem_2504  H).
   intro H. elim (rem_2502  H).
  intros X1 X2. intro H. elim (rem_2501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2500 X1 X2 H).
  intros X1;  exact (rem_5903 epsilon_mknows_old_pknows_current X1).
  exact (rem_5909 epsilon_mknows_old_pknows_current ).
  intros X1 X2. intro H. elim (rem_2507 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2498 X1 X2 H).
   intro H. elim (rem_2506  H).
Qed.

Remark rem_5927 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5926).
Defined.

Remark rem_5928 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_5927 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_5929 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5925 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5928 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5930 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5929 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_5;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5931 : forall X1 X2:term, auto___type_3 (crypt X1 X2) -> or_4
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_5932 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_3 (crypt X1 X2) -> auto_testable_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5931 X1 X2 H);  intros.
  apply (rem_5724 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_5730 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_5736 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_5930 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_5933 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  tauto.
Defined.

Remark rem_5934 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_testable_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  case (rem_5933 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros. apply trans_testable_current_bob_1;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. tauto.
Defined.

Remark rem_5935 : auto___type_3 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5936 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto___type_3 bob -> auto_testable_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intro H. intros.
  elim (rem_5935 H);  intros.
  apply (rem_5934 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current);  tauto.
Defined.

Remark rem_5937 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5938 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_5937 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5939 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5940 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_5939 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_5941 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_5938 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_5940 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5942 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5941 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_2;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5943 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5944 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_5943 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5945 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5946 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_5945 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_5947 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_5944 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_5946 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5948 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5947 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_9;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5949 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5950 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_5949 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5951 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_5952 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_5951 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_5953 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_5950 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_5952 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5954 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5953 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_10;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5955 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5924 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current).
Defined.

Remark rem_5956 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_5955 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5957 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5927 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current).
Defined.

Remark rem_5958 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_5957 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_5959 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5956 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5958 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5960 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5959 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_5;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5961 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto_testable_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1860 X1 X2 H);  intros.
  apply (rem_5942 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_5948 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_5954 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_5960 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_5962 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  tauto.
Defined.

Remark rem_5963 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_testable_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  case (rem_5962 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros. apply trans_testable_current_bob_1;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. tauto.
Defined.

Remark rem_5964 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_knows_old bob -> auto_testable_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intro H. intros.
  elim (rem_2438 H);  intros.
  apply (rem_5963 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current);  tauto.
Defined.

Remark rem_5965 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_current X1. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intro H. clear H. intro H. clear H. intros X1.
  cut (auto_knows_old X1 -> auto_testable_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_5966 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1. intros A1.
  cut (auto_testable_current X1). 2:apply (rem_5965 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1);  assumption.
  tauto.
Defined.

Remark rem_5967 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_current (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1. intros A1.
  case (rem_5966 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 A1). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1. intros. apply trans_testable_current_p_1;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1. tauto.
Defined.

Remark rem_5968 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old (p X1) -> auto_testable_current (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1. intro H. intros.
  elim (rem_2442 X1 H);  intros.
  apply (rem_5967 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1);  tauto.
Defined.

Remark rem_5969 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_testable_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  case (rem_5962 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros. apply trans_testable_current_alice_1;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. tauto.
Defined.

Remark rem_5970 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_knows_old alice -> auto_testable_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intro H. intros.
  elim (rem_2445 H);  intros.
  apply (rem_5969 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current);  tauto.
Defined.

Remark rem_5971 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_testable_current X1). tauto. exact (rem_5965 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5972 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_5971 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5958 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5973 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5972 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_dec_1;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5974 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old (dec X1 X2) -> auto_testable_current (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_2448 X1 X2 H);  intros.
  apply (rem_5973 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_5975 : (forall X:term, auto___def_10 X -> auto_testable_current X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5976 : (forall X:term, auto___def_10 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_10_ptestable_current. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_5975 epsilon_m__def_10_ptestable_current X1).
Defined.

Remark rem_5977 : (forall X:term, auto___def_10 X -> auto_testable_current X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5978 : (forall X:term, auto___def_10 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_10_ptestable_current. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_5977 epsilon_m__def_10_ptestable_current X2).
Defined.

Remark rem_5979 : (forall X:term, auto___def_10 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_10_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_5976 epsilon_m__def_10_ptestable_current X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_5978 epsilon_m__def_10_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5980 : (forall X:term, auto___def_10 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_10_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5979 epsilon_m__def_10_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_10_ptestable_current A1 A2. intros. apply trans_testable_current_key_4;  tauto.
 clear  epsilon_m__def_10_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5981 : (forall X:term, auto___def_10 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_10 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_10_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_3175 X1 X2 H);  intros.
  apply (rem_5980 epsilon_m__def_10_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_5982 : forall X1:term, auto___def_10 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_10_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_3187  H).
   intro H. elim (rem_3179  H).
  intros X1 X2. intro H. elim (rem_3192 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1818 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3190 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3191 X1 X2 H).
   intro H. elim (rem_3196  H).
  intros X1 X2;  exact (rem_5981 epsilon_m__def_10_ptestable_current X1 X2).
   intro H. elim (rem_3197  H).
  intros X1 X2. intro H. elim (rem_3199 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3180 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3177 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3189 X1 X2 H).
  intros X1. intro H. elim (rem_3183 X1 H).
  intros X1 X2. intro H. elim (rem_3186 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3185 X1 X2 H).
   intro H. elim (rem_3188  H).
   intro H. elim (rem_3184  H).
  intros X1 X2. intro H. elim (rem_3182 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3181 X1 X2 H).
  intros X1. intro H. elim (rem_3193 X1 H).
   intro H. elim (rem_3198  H).
  intros X1 X2. intro H. elim (rem_3195 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3178 X1 X2 H).
   intro H. elim (rem_3194  H).
Qed.

Remark rem_5983 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_10 X1 -> auto_testable_current X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5982).
Defined.

Remark rem_5984 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_10 X1 -> auto_testable_current X1). tauto. exact (rem_5983 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5985 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_11 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5809).
Defined.

Remark rem_5986 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_11 X2 -> auto_knows_current X2). tauto. exact (rem_5985 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_5987 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_5984 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5986 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5988 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5987 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5989 : (forall X:term, auto___def_15 X -> auto_testable_current X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5990 : (forall X:term, auto___def_15 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_15_ptestable_current. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_5989 epsilon_m__def_15_ptestable_current X1).
Defined.

Remark rem_5991 : (forall X:term, auto___def_15 X -> auto_testable_current X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5992 : (forall X:term, auto___def_15 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_15_ptestable_current. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_5991 epsilon_m__def_15_ptestable_current X2).
Defined.

Remark rem_5993 : (forall X:term, auto___def_15 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_15_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_5990 epsilon_m__def_15_ptestable_current X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_5992 epsilon_m__def_15_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5994 : (forall X:term, auto___def_15 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_15_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5993 epsilon_m__def_15_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_15_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_1;  tauto.
 clear  epsilon_m__def_15_ptestable_current A1 A2. tauto.
Defined.

Remark rem_5995 : (forall X:term, auto___def_15 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto_testable_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_15_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_5994 epsilon_m__def_15_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_5996 : forall X1:term, auto___def_15 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_15_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_3220  H).
   intro H. elim (rem_3212  H).
  intros X1 X2. intro H. elim (rem_3225 X1 X2 H).
  intros X1 X2;  exact (rem_5995 epsilon_m__def_15_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_3223 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3224 X1 X2 H).
   intro H. elim (rem_3229  H).
  intros X1 X2. intro H. elim (rem_3233 X1 X2 H).
   intro H. elim (rem_3230  H).
  intros X1 X2. intro H. elim (rem_3232 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3213 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3210 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3222 X1 X2 H).
  intros X1. intro H. elim (rem_3216 X1 H).
  intros X1 X2. intro H. elim (rem_3219 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3218 X1 X2 H).
   intro H. elim (rem_3221  H).
   intro H. elim (rem_3217  H).
  intros X1 X2. intro H. elim (rem_3215 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3214 X1 X2 H).
  intros X1. intro H. elim (rem_3226 X1 H).
   intro H. elim (rem_3231  H).
  intros X1 X2. intro H. elim (rem_3228 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3211 X1 X2 H).
   intro H. elim (rem_3227  H).
Qed.

Remark rem_5997 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_15 X1 -> auto_testable_current X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5996).
Defined.

Remark rem_5998 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_15 X1 -> auto_testable_current X1). tauto. exact (rem_5997 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_5999 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_16 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5851).
Defined.

Remark rem_6000 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_16 X2 -> auto_knows_current X2). tauto. exact (rem_5999 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6001 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_5998 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6000 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6002 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6001 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6003 : (forall X:term, auto___def_19 X -> auto_testable_current X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6004 : (forall X:term, auto___def_19 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_19_ptestable_current. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_6003 epsilon_m__def_19_ptestable_current X1).
Defined.

Remark rem_6005 : (forall X:term, auto___def_19 X -> auto_testable_current X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6006 : (forall X:term, auto___def_19 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_19_ptestable_current. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_6005 epsilon_m__def_19_ptestable_current X2).
Defined.

Remark rem_6007 : (forall X:term, auto___def_19 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_19_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_6004 epsilon_m__def_19_ptestable_current X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_6006 epsilon_m__def_19_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6008 : (forall X:term, auto___def_19 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_19_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6007 epsilon_m__def_19_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_19_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_3;  tauto.
 clear  epsilon_m__def_19_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6009 : (forall X:term, auto___def_19 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_19 (crypt X1 X2) -> auto_testable_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_19_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1840 X1 X2 H);  intros.
  apply (rem_6008 epsilon_m__def_19_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6010 : forall X1:term, auto___def_19 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_19_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_3152  H).
   intro H. elim (rem_3144  H).
  intros X1 X2. intro H. elim (rem_3157 X1 X2 H).
  intros X1 X2;  exact (rem_6009 epsilon_m__def_19_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_3155 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3156 X1 X2 H).
   intro H. elim (rem_3161  H).
  intros X1 X2. intro H. elim (rem_3165 X1 X2 H).
   intro H. elim (rem_3162  H).
  intros X1 X2. intro H. elim (rem_3164 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3145 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3142 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3154 X1 X2 H).
  intros X1. intro H. elim (rem_3148 X1 H).
  intros X1 X2. intro H. elim (rem_3151 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3150 X1 X2 H).
   intro H. elim (rem_3153  H).
   intro H. elim (rem_3149  H).
  intros X1 X2. intro H. elim (rem_3147 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3146 X1 X2 H).
  intros X1. intro H. elim (rem_3158 X1 H).
   intro H. elim (rem_3163  H).
  intros X1 X2. intro H. elim (rem_3160 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3143 X1 X2 H).
   intro H. elim (rem_3159  H).
Qed.

Remark rem_6011 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_19 X1 -> auto_testable_current X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_6010).
Defined.

Remark rem_6012 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_19 X1 -> auto_testable_current X1). tauto. exact (rem_6011 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_6013 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_20 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5893).
Defined.

Remark rem_6014 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_20 X2 -> auto_knows_current X2). tauto. exact (rem_6013 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6015 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_6012 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6014 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6016 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6015 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6017 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_5972 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6018 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old (enc X1 X2) -> auto_testable_current (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1290 X1 X2 H);  intros.
  apply (rem_5988 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_6002 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_6016 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_6017 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6019 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_testable_current X2. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intro H. clear H. intro H. clear H. intros X2.
  cut (auto_knows_old X2 -> auto_testable_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_6020 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_testable_current X2). tauto. exact (rem_6019 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6021 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X2). 2:apply (rem_6020 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6022 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6021 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_cons_1;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6023 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto_testable_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1263 X1 X2 H);  intros.
  apply (rem_6022 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6024 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1. intros A1.
  case (rem_5966 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 A1). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1. intros. apply trans_testable_current_s_1;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1. tauto.
Defined.

Remark rem_6025 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old (s X1) -> auto_testable_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1. intro H. intros.
  elim (rem_2473 X1 H);  intros.
  apply (rem_6024 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1);  tauto.
Defined.

Remark rem_6026 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_testable_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  case (rem_5962 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros. apply trans_testable_current_i_1;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. tauto.
Defined.

Remark rem_6027 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_knows_old i -> auto_testable_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intro H. intros.
  elim (rem_2476 H);  intros.
  apply (rem_6026 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current);  tauto.
Defined.

Remark rem_6028 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_testable_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  case (rem_5962 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros. apply trans_testable_current_nil_1;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. tauto.
Defined.

Remark rem_6029 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_knows_old nil -> auto_testable_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intro H. intros.
  elim (rem_2479 H);  intros.
  apply (rem_6028 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current);  tauto.
Defined.

Remark rem_6030 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_testable_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  case (rem_5962 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros. apply trans_testable_current_server_1;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. tauto.
Defined.

Remark rem_6031 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_knows_old server -> auto_testable_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intro H. intros.
  elim (rem_2482 H);  intros.
  apply (rem_6030 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current);  tauto.
Defined.

Remark rem_6032 : (forall X:term, auto___def_61 X -> auto___def_114 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_61_p__def_114.  tauto.
Defined.

Remark rem_6033 : (forall X:term, auto___def_61 X -> auto___def_114 X)
    -> auto___def_114 prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_61_p__def_114.  case (rem_6032 epsilon_m__def_61_p__def_114). clear  epsilon_m__def_61_p__def_114. intros. apply trans___def_114_prv_1;  tauto.
 clear  epsilon_m__def_61_p__def_114. tauto.
Defined.

Remark rem_6034 : (forall X:term, auto___def_61 X -> auto___def_114 X)
    -> auto___def_61 prv -> auto___def_114 prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_p__def_114. intro H. intros.
  elim (rem_4469 H);  intros.
  apply (rem_6033 epsilon_m__def_61_p__def_114);  tauto.
Defined.

Remark rem_6035 : forall X1:term, auto___def_61 X1 -> auto___def_114 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_61_p__def_114 1.
  intro X. case X.
   intro H. elim (rem_4482  H).
   intro H. elim (rem_4474  H).
  intros X1 X2. intro H. elim (rem_4486 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4484 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4485 X1 X2 H).
   intro H. elim (rem_4489  H).
  intros X1 X2. intro H. elim (rem_4493 X1 X2 H).
   intro H. elim (rem_4490  H).
  intros X1 X2. intro H. elim (rem_4492 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4475 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4472 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4483 X1 X2 H).
  intros X1. intro H. elim (rem_4478 X1 H).
  intros X1 X2. intro H. elim (rem_4481 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4480 X1 X2 H).
  exact (rem_6034 epsilon_m__def_61_p__def_114 ).
   intro H. elim (rem_4479  H).
  intros X1 X2. intro H. elim (rem_4477 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4476 X1 X2 H).
  intros X1. intro H. elim (rem_4487 X1 H).
   intro H. elim (rem_4491  H).
  intros X1 X2. intro H. elim (rem_4488 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4473 X1 X2 H).
   intro H. elim (rem_1309  H).
Qed.

Remark rem_6036 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_61 X1 -> auto___def_114 X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_6035).
Defined.

Remark rem_6037 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_114 X1). tauto. exact (rem_6036 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_6038 : forall X2:term, auto___def_62 X2 -> auto___def_66 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_62_p__def_66 1.
  intro X. case X.
   intro H. elim (rem_325  H).
   intro H. elim (rem_317  H).
  intros X1 X2. intro H. elim (rem_330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_314 X1 X2 H).
  intros X1 X2. intro H. elim (rem_328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_329 X1 X2 H).
  exact (rem_1741 epsilon_m__def_62_p__def_66 ).
  intros X1 X2. intro H. elim (rem_337 X1 X2 H).
   intro H. elim (rem_334  H).
  intros X1 X2. intro H. elim (rem_336 X1 X2 H).
  intros X1 X2. intro H. elim (rem_318 X1 X2 H).
  intros X1 X2. intro H. elim (rem_315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_327 X1 X2 H).
  intros X1. intro H. elim (rem_321 X1 H).
  intros X1 X2. intro H. elim (rem_324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_323 X1 X2 H).
   intro H. elim (rem_326  H).
   intro H. elim (rem_322  H).
  intros X1 X2. intro H. elim (rem_320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_319 X1 X2 H).
  intros X1. intro H. elim (rem_331 X1 H).
   intro H. elim (rem_335  H).
  intros X1 X2. intro H. elim (rem_333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_316 X1 X2 H).
   intro H. elim (rem_332  H).
Qed.

Remark rem_6039 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_62 X2 -> auto___def_66 X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_6038).
Defined.

Remark rem_6040 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_66 X2). tauto. exact (rem_6039 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6041 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_6037 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_6040 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6042 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6041 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_key_2;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6043 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_6044 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_6043 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_6045 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_6046 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_6045 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6047 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_6044 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_6046 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6048 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6047 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_key_3;  tauto.
 clear  epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6049 : (forall X:term, auto_knows_old X -> auto_testable_current X)
    -> (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1361 X1 X2 H);  intros.
  apply (rem_6042 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_6048 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6050 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. fix epsilon_mknows_old_ptestable_current 1.
  intro X. case X.
  exact (rem_5970 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  exact (rem_5964 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2;  exact (rem_6023 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_5961 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_5974 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_6018 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  exact (rem_6027 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2;  exact (rem_6049 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  exact (rem_6029 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2. intro H. elim (rem_2508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2505 X1 X2 H).
  intros X1;  exact (rem_5968 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
  intros X1 X2. intro H. elim (rem_2503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1287 X1 X2 H).
   intro H. elim (rem_2504  H).
   intro H. elim (rem_2502  H).
  intros X1 X2. intro H. elim (rem_2501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2500 X1 X2 H).
  intros X1;  exact (rem_6025 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
  exact (rem_6031 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2. intro H. elim (rem_2507 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2498 X1 X2 H).
   intro H. elim (rem_2506  H).
Defined.

Remark rem_6051 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1. intros A1.
  cut (auto_testable_current X1). 2:apply (rem_6050 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1);  assumption.
  tauto.
Defined.

Remark rem_6052 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_current (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1. intros A1.
  case (rem_6051 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 A1). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1. intros. apply trans_testable_current_p_1;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1. tauto.
Defined.

Remark rem_6053 : forall X1:term, auto___type_3 (p X1) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6054 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___type_3 (p X1) -> auto_testable_current (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1. intro H. intros.
  elim (rem_6053 X1 H);  intros.
  apply (rem_6052 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1);  tauto.
Defined.

Remark rem_6055 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_testable_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  case (rem_5933 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros. apply trans_testable_current_alice_1;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. tauto.
Defined.

Remark rem_6056 : auto___type_3 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6057 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto___type_3 alice -> auto_testable_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intro H. intros.
  elim (rem_6056 H);  intros.
  apply (rem_6055 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current);  tauto.
Defined.

Remark rem_6058 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_testable_current X1). tauto. exact (rem_6050 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_6059 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_6058 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5928 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6060 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6059 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_dec_1;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6061 : forall X1 X2:term, auto___type_3 (dec X1 X2) -> or_1
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6062 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_3 (dec X1 X2) -> auto_testable_current (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_6061 X1 X2 H);  intros.
  apply (rem_6060 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6063 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_10 X1 -> auto_testable_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5982).
Defined.

Remark rem_6064 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_10 X1 -> auto_testable_current X1). tauto. exact (rem_6063 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_6065 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_11 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5809).
Defined.

Remark rem_6066 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_11 X2 -> auto_knows_current X2). tauto. exact (rem_6065 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6067 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_6064 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6066 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6068 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6067 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6069 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_15 X1 -> auto_testable_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5996).
Defined.

Remark rem_6070 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_15 X1 -> auto_testable_current X1). tauto. exact (rem_6069 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_6071 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_16 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5851).
Defined.

Remark rem_6072 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_16 X2 -> auto_knows_current X2). tauto. exact (rem_6071 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6073 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_6070 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6072 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6074 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6073 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6075 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_19 X1 -> auto_testable_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_6010).
Defined.

Remark rem_6076 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_19 X1 -> auto_testable_current X1). tauto. exact (rem_6075 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_6077 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_20 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_5893).
Defined.

Remark rem_6078 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_20 X2 -> auto_knows_current X2). tauto. exact (rem_6077 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6079 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_6076 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6078 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6080 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6079 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6081 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6059 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6082 : forall X1 X2:term, auto___type_3 (enc X1 X2) -> or_4
    (auto___def_10 X1 /\ auto___def_11 X2)
    (auto___def_15 X1 /\ auto___def_16 X2)
    (auto___def_19 X1 /\ auto___def_20 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_6083 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_3 (enc X1 X2) -> auto_testable_current (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_6082 X1 X2 H);  intros.
  apply (rem_6068 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_6074 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_6080 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_6081 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6084 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_testable_current X2. (* Induct. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. fix epsilon_mknows_old_ptestable_current 1.
  intro X. case X.
  exact (rem_5970 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  exact (rem_5964 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2;  exact (rem_6023 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_5961 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_5974 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_6018 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  exact (rem_6027 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2;  exact (rem_6049 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  exact (rem_6029 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2. intro H. elim (rem_2508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2505 X1 X2 H).
  intros X1;  exact (rem_5968 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
  intros X1 X2. intro H. elim (rem_2503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1287 X1 X2 H).
   intro H. elim (rem_2504  H).
   intro H. elim (rem_2502  H).
  intros X1 X2. intro H. elim (rem_2501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2500 X1 X2 H).
  intros X1;  exact (rem_6025 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
  exact (rem_6031 epsilon_mknows_old_ptestable_current epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2. intro H. elim (rem_2507 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2498 X1 X2 H).
   intro H. elim (rem_2506  H).
Defined.

Remark rem_6085 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_testable_current X2). tauto. exact (rem_6084 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6086 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X2). 2:apply (rem_6085 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6087 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6086 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_cons_1;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6088 : forall X1 X2:term, auto___type_3 (cons X1 X2) -> or_1
    (auto_knows_old X1 /\ auto_knows_old X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6089 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_3 (cons X1 X2) -> auto_testable_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_6088 X1 X2 H);  intros.
  apply (rem_6087 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6090 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_testable_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1. intros A1.
  case (rem_6051 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 A1). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1. intros. apply trans_testable_current_s_1;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1. tauto.
Defined.

Remark rem_6091 : forall X1:term, auto___type_3 (s X1) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6092 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___type_3 (s X1) -> auto_testable_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1. intro H. intros.
  elim (rem_6091 X1 H);  intros.
  apply (rem_6090 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1);  tauto.
Defined.

Remark rem_6093 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_testable_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  case (rem_5933 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros. apply trans_testable_current_i_1;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. tauto.
Defined.

Remark rem_6094 : auto___type_3 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6095 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto___type_3 i -> auto_testable_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intro H. intros.
  elim (rem_6094 H);  intros.
  apply (rem_6093 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current);  tauto.
Defined.

Remark rem_6096 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_testable_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  case (rem_5933 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros. apply trans_testable_current_nil_1;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. tauto.
Defined.

Remark rem_6097 : auto___type_3 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6098 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto___type_3 nil -> auto_testable_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intro H. intros.
  elim (rem_6097 H);  intros.
  apply (rem_6096 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current);  tauto.
Defined.

Remark rem_6099 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto_testable_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current.  case (rem_5933 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros. apply trans_testable_current_server_1;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. tauto.
Defined.

Remark rem_6100 : auto___type_3 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6101 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> auto___type_3 server -> auto_testable_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intro H. intros.
  elim (rem_6100 H);  intros.
  apply (rem_6099 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current);  tauto.
Defined.

Remark rem_6102 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_61 X1 -> auto___def_114 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_6035).
Defined.

Remark rem_6103 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_114 X1). tauto. exact (rem_6102 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_6104 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto___def_62 X2 -> auto___def_66 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. exact (rem_6038).
Defined.

Remark rem_6105 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_66 X2). tauto. exact (rem_6104 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6106 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_6103 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_6105 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6107 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6106 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_key_2;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6108 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_6109 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_6108 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
Defined.

Remark rem_6110 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_6111 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_6110 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X2).
Defined.

Remark rem_6112 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_6109 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_6111 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6113 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6112 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. intros. apply trans_testable_current_key_3;  tauto.
 clear  epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6114 : forall X1 X2:term, auto___type_3 (key X1 X2) -> or_2
    (auto___def_61 X1 /\ auto___def_62 X2)
    (auto___def_51 X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_6115 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> (forall X:term, auto___type_3 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_3 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_6114 X1 X2 H);  intros.
  apply (rem_6107 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
  apply (rem_6113 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6116 : forall X1 X2:term, auto___type_3 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6117 : forall X1 X2:term, auto___type_3 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6118 : forall X1 X2:term, auto___type_3 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6119 : forall X1 X2:term, auto___type_3 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6120 : forall X1 X2:term, auto___type_3 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6121 : auto___type_3 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6122 : forall X1 X2:term, auto___type_3 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6123 : forall X1 X2:term, auto___type_3 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6124 : auto___type_3 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6125 : forall X1 X2:term, auto___type_3 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6126 : auto___type_3 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6127 : forall X1 X2:term, auto___type_3 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6128 : forall X1 X2:term, auto___type_3 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6129 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> forall X1:term, auto___type_3 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  intros epsilon_m__def_22_ptestable_current. fix epsilon_m__type_3_ptestable_current 1.
  intro X. case X.
  exact (rem_6057 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  exact (rem_5936 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2;  exact (rem_6089 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_5932 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_6062 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_6083 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  exact (rem_6095 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2;  exact (rem_6115 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1 X2).
  exact (rem_6098 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2. intro H. elim (rem_6128 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6118 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6116 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6125 X1 X2 H).
  intros X1;  exact (rem_6054 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
  intros X1 X2. intro H. elim (rem_6123 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6122 X1 X2 H).
   intro H. elim (rem_6124  H).
   intro H. elim (rem_6121  H).
  intros X1 X2. intro H. elim (rem_6120 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6119 X1 X2 H).
  intros X1;  exact (rem_6092 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current X1).
  exact (rem_6101 epsilon_m__def_22_ptestable_current epsilon_m__type_3_ptestable_current ).
  intros X1 X2. intro H. elim (rem_6127 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6117 X1 X2 H).
   intro H. elim (rem_6126  H).
Defined.

Remark rem_6130 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_20 X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current. intros X1 X2.
  cut (auto___type_3 X1 -> auto_testable_current X1). tauto. exact (rem_6129 epsilon_m__def_22_ptestable_current X1).
Defined.

Remark rem_6131 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> forall X2:term, auto___def_20 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_22_ptestable_current. exact (rem_5893).
Defined.

Remark rem_6132 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_20 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_22_ptestable_current. intros X1 X2.
  cut (auto___def_20 X2 -> auto_knows_current X2). tauto. exact (rem_6131 epsilon_m__def_22_ptestable_current X2).
Defined.

Remark rem_6133 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_20 X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_22_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_6130 epsilon_m__def_22_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6132 epsilon_m__def_22_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6134 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_20 X2 -> auto_testable_current (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6133 epsilon_m__def_22_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_22_ptestable_current A1 A2. intros. apply trans_testable_current_dec_1;  tauto.
 clear  epsilon_m__def_22_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6135 : forall X1 X2:term, auto___def_22 (dec X1 X2) -> or_1
    (auto___type_3 X1 /\ auto___def_20 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6136 : (forall X:term, auto___def_22 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_22 (dec X1 X2) -> auto_testable_current (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_22_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_6135 X1 X2 H);  intros.
  apply (rem_6134 epsilon_m__def_22_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6137 : forall X1 X2:term, auto___def_22 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6138 : forall X1 X2:term, auto___def_22 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6139 : forall X1 X2:term, auto___def_22 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6140 : auto___def_22 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6141 : forall X1 X2:term, auto___def_22 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6142 : forall X1 X2:term, auto___def_22 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6143 : forall X1 X2:term, auto___def_22 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6144 : forall X1:term, auto___def_22 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6145 : auto___def_22 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6146 : forall X1 X2:term, auto___def_22 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6147 : forall X1 X2:term, auto___def_22 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6148 : auto___def_22 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6149 : auto___def_22 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6150 : forall X1 X2:term, auto___def_22 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6151 : forall X1 X2:term, auto___def_22 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6152 : forall X1 X2:term, auto___def_22 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6153 : forall X1:term, auto___def_22 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6154 : auto___def_22 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6155 : forall X1 X2:term, auto___def_22 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6156 : auto___def_22 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6157 : auto___def_22 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6158 : auto___def_22 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6159 : forall X1 X2:term, auto___def_22 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6160 : forall X1:term, auto___def_22 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_22_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_6148  H).
   intro H. elim (rem_6140  H).
  intros X1 X2. intro H. elim (rem_6152 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6137 X1 X2 H).
  intros X1 X2;  exact (rem_6136 epsilon_m__def_22_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_6151 X1 X2 H).
   intro H. elim (rem_6156  H).
  intros X1 X2. intro H. elim (rem_1407 X1 X2 H).
   intro H. elim (rem_6157  H).
  intros X1 X2. intro H. elim (rem_6159 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6141 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6138 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6150 X1 X2 H).
  intros X1. intro H. elim (rem_6144 X1 H).
  intros X1 X2. intro H. elim (rem_6147 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6146 X1 X2 H).
   intro H. elim (rem_6149  H).
   intro H. elim (rem_6145  H).
  intros X1 X2. intro H. elim (rem_6143 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6142 X1 X2 H).
  intros X1. intro H. elim (rem_6153 X1 H).
   intro H. elim (rem_6158  H).
  intros X1 X2. intro H. elim (rem_6155 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6139 X1 X2 H).
   intro H. elim (rem_6154  H).
Qed.

Remark rem_6161 : forall X1 X2:term, auto___def_21 X2 -> auto___def_22 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_22 X1 -> auto_testable_current X1). tauto. exact (rem_6160 X1).
Qed.

Remark rem_6162 : (forall X:term, auto___def_112 X -> auto___def_51 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_112_p__def_51.  tauto.
Defined.

Remark rem_6163 : (forall X:term, auto___def_112 X -> auto___def_51 X)
    -> auto___def_51 pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_112_p__def_51.  case (rem_6162 epsilon_m__def_112_p__def_51). clear  epsilon_m__def_112_p__def_51. intros. apply trans___def_51_pub_1;  tauto.
 clear  epsilon_m__def_112_p__def_51. tauto.
Defined.

Remark rem_6164 : auto___def_112 pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6165 : (forall X:term, auto___def_112 X -> auto___def_51 X)
    -> auto___def_112 pub -> auto___def_51 pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_112_p__def_51. intro H. intros.
  elim (rem_6164 H);  intros.
  apply (rem_6163 epsilon_m__def_112_p__def_51);  tauto.
Defined.

Remark rem_6166 : forall X1 X2:term, auto___def_112 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6167 : forall X1 X2:term, auto___def_112 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6168 : forall X1 X2:term, auto___def_112 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6169 : auto___def_112 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6170 : forall X1 X2:term, auto___def_112 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6171 : forall X1 X2:term, auto___def_112 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6172 : forall X1 X2:term, auto___def_112 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6173 : forall X1:term, auto___def_112 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6174 : forall X1 X2:term, auto___def_112 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6175 : forall X1 X2:term, auto___def_112 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6176 : auto___def_112 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6177 : auto___def_112 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6178 : forall X1 X2:term, auto___def_112 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6179 : forall X1 X2:term, auto___def_112 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6180 : forall X1 X2:term, auto___def_112 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6181 : forall X1 X2:term, auto___def_112 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6182 : forall X1:term, auto___def_112 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6183 : auto___def_112 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6184 : forall X1 X2:term, auto___def_112 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6185 : auto___def_112 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6186 : auto___def_112 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6187 : auto___def_112 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6188 : forall X1 X2:term, auto___def_112 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6189 : forall X1 X2:term, auto___def_112 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6190 : forall X1:term, auto___def_112 X1 -> auto___def_51 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_112_p__def_51 1.
  intro X. case X.
   intro H. elim (rem_6176  H).
   intro H. elim (rem_6169  H).
  intros X1 X2. intro H. elim (rem_6181 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6166 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6179 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6180 X1 X2 H).
   intro H. elim (rem_6185  H).
  intros X1 X2. intro H. elim (rem_6189 X1 X2 H).
   intro H. elim (rem_6186  H).
  intros X1 X2. intro H. elim (rem_6188 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6170 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6167 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6178 X1 X2 H).
  intros X1. intro H. elim (rem_6173 X1 H).
  intros X1 X2. intro H. elim (rem_6175 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6174 X1 X2 H).
   intro H. elim (rem_6177  H).
  exact (rem_6165 epsilon_m__def_112_p__def_51 ).
  intros X1 X2. intro H. elim (rem_6172 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6171 X1 X2 H).
  intros X1. intro H. elim (rem_6182 X1 H).
   intro H. elim (rem_6187  H).
  intros X1 X2. intro H. elim (rem_6184 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6168 X1 X2 H).
   intro H. elim (rem_6183  H).
Qed.

Remark rem_6191 : (forall X:term, auto___def_111 X -> auto_testable_current X)
    -> forall X1:term, auto___def_112 X1 -> auto___def_51 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_111_ptestable_current. exact (rem_6190).
Defined.

Remark rem_6192 : (forall X:term, auto___def_111 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_112 X1 -> auto___def_64 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_111_ptestable_current. intros X1 X2.
  cut (auto___def_112 X1 -> auto___def_51 X1). tauto. exact (rem_6191 epsilon_m__def_111_ptestable_current X1).
Defined.

Remark rem_6193 : (forall X:term, auto___def_64 X -> auto_agent X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_64_pagent.  tauto.
Defined.

Remark rem_6194 : (forall X:term, auto___def_64 X -> auto_agent X)
    -> auto_agent i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_64_pagent.  case (rem_6193 epsilon_m__def_64_pagent). clear  epsilon_m__def_64_pagent. intros. apply trans_agent_i_1;  tauto.
 clear  epsilon_m__def_64_pagent. tauto.
Defined.

Remark rem_6195 : auto___def_64 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6196 : (forall X:term, auto___def_64 X -> auto_agent X)
    -> auto___def_64 i -> auto_agent i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_64_pagent. intro H. intros.
  elim (rem_6195 H);  intros.
  apply (rem_6194 epsilon_m__def_64_pagent);  tauto.
Defined.

Remark rem_6197 : forall X1 X2:term, auto___def_64 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6198 : forall X1 X2:term, auto___def_64 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6199 : forall X1 X2:term, auto___def_64 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6200 : auto___def_64 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6201 : forall X1 X2:term, auto___def_64 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6202 : forall X1 X2:term, auto___def_64 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6203 : forall X1 X2:term, auto___def_64 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6204 : forall X1:term, auto___def_64 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6205 : auto___def_64 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6206 : forall X1 X2:term, auto___def_64 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6207 : forall X1 X2:term, auto___def_64 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6208 : auto___def_64 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6209 : auto___def_64 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6210 : forall X1 X2:term, auto___def_64 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6211 : forall X1 X2:term, auto___def_64 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6212 : forall X1 X2:term, auto___def_64 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6213 : forall X1 X2:term, auto___def_64 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6214 : forall X1:term, auto___def_64 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6215 : auto___def_64 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6216 : forall X1 X2:term, auto___def_64 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6217 : auto___def_64 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6218 : auto___def_64 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6219 : forall X1 X2:term, auto___def_64 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6220 : forall X1 X2:term, auto___def_64 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6221 : forall X2:term, auto___def_64 X2 -> auto_agent X2. (* Induct. *)
Proof.
  fix epsilon_m__def_64_pagent 1.
  intro X. case X.
   intro H. elim (rem_6208  H).
   intro H. elim (rem_6200  H).
  intros X1 X2. intro H. elim (rem_6213 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6197 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6211 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6212 X1 X2 H).
  exact (rem_6196 epsilon_m__def_64_pagent ).
  intros X1 X2. intro H. elim (rem_6220 X1 X2 H).
   intro H. elim (rem_6217  H).
  intros X1 X2. intro H. elim (rem_6219 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6201 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6198 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6210 X1 X2 H).
  intros X1. intro H. elim (rem_6204 X1 H).
  intros X1 X2. intro H. elim (rem_6207 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6206 X1 X2 H).
   intro H. elim (rem_6209  H).
   intro H. elim (rem_6205  H).
  intros X1 X2. intro H. elim (rem_6203 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6202 X1 X2 H).
  intros X1. intro H. elim (rem_6214 X1 H).
   intro H. elim (rem_6218  H).
  intros X1 X2. intro H. elim (rem_6216 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6199 X1 X2 H).
   intro H. elim (rem_6215  H).
Qed.

Remark rem_6222 : (forall X:term, auto___def_111 X -> auto_testable_current X)
    -> forall X2:term, auto___def_64 X2 -> auto_agent X2. (* Cut history. *)
Proof.  intros epsilon_m__def_111_ptestable_current. exact (rem_6221).
Defined.

Remark rem_6223 : (forall X:term, auto___def_111 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_112 X1 -> auto___def_64 X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_111_ptestable_current. intros X1 X2.
  cut (auto___def_64 X2 -> auto_agent X2). tauto. exact (rem_6222 epsilon_m__def_111_ptestable_current X2).
Defined.

Remark rem_6224 : (forall X:term, auto___def_111 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_112 X1 -> auto___def_64 X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_111_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_6192 epsilon_m__def_111_ptestable_current X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_6223 epsilon_m__def_111_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6225 : (forall X:term, auto___def_111 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_112 X1 -> auto___def_64 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_111_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6224 epsilon_m__def_111_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_111_ptestable_current A1 A2. intros. apply trans_testable_current_key_3;  tauto.
 clear  epsilon_m__def_111_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6226 : forall X1 X2:term, auto___def_111 (key X1 X2) -> or_1
    (auto___def_112 X1 /\ auto___def_64 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6227 : (forall X:term, auto___def_111 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_111 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_111_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_6226 X1 X2 H);  intros.
  apply (rem_6225 epsilon_m__def_111_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6228 : forall X1 X2:term, auto___def_111 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6229 : forall X1 X2:term, auto___def_111 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6230 : forall X1 X2:term, auto___def_111 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6231 : auto___def_111 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6232 : forall X1 X2:term, auto___def_111 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6233 : forall X1 X2:term, auto___def_111 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6234 : forall X1 X2:term, auto___def_111 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6235 : forall X1:term, auto___def_111 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6236 : auto___def_111 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6237 : forall X1 X2:term, auto___def_111 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6238 : forall X1 X2:term, auto___def_111 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6239 : auto___def_111 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6240 : auto___def_111 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6241 : forall X1 X2:term, auto___def_111 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6242 : forall X1 X2:term, auto___def_111 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6243 : forall X1 X2:term, auto___def_111 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6244 : forall X1 X2:term, auto___def_111 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6245 : forall X1:term, auto___def_111 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6246 : auto___def_111 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6247 : forall X1 X2:term, auto___def_111 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6248 : auto___def_111 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6249 : auto___def_111 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6250 : auto___def_111 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6251 : forall X1 X2:term, auto___def_111 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6252 : forall X1:term, auto___def_111 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_111_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_6239  H).
   intro H. elim (rem_6231  H).
  intros X1 X2. intro H. elim (rem_6244 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6228 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6242 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6243 X1 X2 H).
   intro H. elim (rem_6248  H).
  intros X1 X2;  exact (rem_6227 epsilon_m__def_111_ptestable_current X1 X2).
   intro H. elim (rem_6249  H).
  intros X1 X2. intro H. elim (rem_6251 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6232 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6229 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6241 X1 X2 H).
  intros X1. intro H. elim (rem_6235 X1 H).
  intros X1 X2. intro H. elim (rem_6238 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6237 X1 X2 H).
   intro H. elim (rem_6240  H).
   intro H. elim (rem_6236  H).
  intros X1 X2. intro H. elim (rem_6234 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6233 X1 X2 H).
  intros X1. intro H. elim (rem_6245 X1 H).
   intro H. elim (rem_6250  H).
  intros X1 X2. intro H. elim (rem_6247 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6230 X1 X2 H).
   intro H. elim (rem_6246  H).
Qed.

Remark rem_6253 : forall X1 X2:term, auto___def_111 X1 -> auto___type_26 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_111 X1 -> auto_testable_current X1). tauto. exact (rem_6252 X1).
Qed.

Remark rem_6254 : forall X1 X2:term, auto___type_26 X2 -> auto___def_111 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_111 X1 -> auto___type_26 X2 -> auto_knows_current X2 -> auto_testable_current X1). tauto. exact (rem_6253 X1 X2).
Qed.

Remark rem_6255 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6256 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_6255 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6257 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6258 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_6257 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6259 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_6256 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_6258 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6260 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6259 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6261 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6262 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_6261 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6263 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6264 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_6263 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6265 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_6262 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_6264 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6266 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6265 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_2;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6267 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6268 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_6267 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6269 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6270 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_6269 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6271 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_6268 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_6270 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6272 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6271 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_3;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6273 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6274 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_6273 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6275 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6276 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_6275 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6277 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_6274 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6276 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6278 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6277 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_5;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6279 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6280 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_6279 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6281 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6282 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_6281 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6283 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_6280 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_6282 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6284 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6283 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_6;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6285 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6286 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_6285 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6287 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6288 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_6287 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6289 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_6286 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_6288 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6290 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6289 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_7;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6291 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6292 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_6291 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6293 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6294 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_6293 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6295 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_6292 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_6294 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6296 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6295 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_9;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6297 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6298 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_6297 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6299 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6300 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_6299 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6301 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_6298 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_6300 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6302 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6301 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_10;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6303 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6304 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_6303 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6305 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6306 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_6305 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6307 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_6304 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_6306 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6308 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6307 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_11;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6309 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto_testable_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_987 X1 X2 H);  intros.
  apply (rem_6260 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6266 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6272 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6278 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6284 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6290 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6296 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6302 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6308 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6310 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current.  tauto.
Defined.

Remark rem_6311 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> auto_testable_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current.  case (rem_6310 epsilon_mknows_current_ptestable_current). clear  epsilon_mknows_current_ptestable_current. intros. apply trans_testable_current_bob_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current. tauto.
Defined.

Remark rem_6312 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> auto_knows_current bob -> auto_testable_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intro H. intros.
  elim (rem_991 H);  intros.
  apply (rem_6311 epsilon_mknows_current_ptestable_current);  tauto.
Defined.

Remark rem_6313 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.  case (rem_6310 epsilon_mknows_current_ptestable_current). clear  epsilon_mknows_current_ptestable_current. intros. apply trans_testable_current_noncea_old_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current. tauto.
Defined.

Remark rem_6314 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current (noncea_old X1 X2) -> auto_testable_current (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_994 X1 X2 H);  intros.
  apply (rem_6313 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6315 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_testable_current X1. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intros X1.
  cut (auto_knows_current X1 -> auto_testable_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_6316 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_testable_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1. intros A1.
  cut (auto_testable_current X1). 2:apply (rem_6315 epsilon_mknows_current_ptestable_current X1);  assumption.
  tauto.
Defined.

Remark rem_6317 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_testable_current (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1. intros A1.
  case (rem_6316 epsilon_mknows_current_ptestable_current X1 A1). clear  epsilon_mknows_current_ptestable_current A1. intros. apply trans_testable_current_p_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1. tauto.
Defined.

Remark rem_6318 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto_knows_current (p X1) -> auto_testable_current (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1. intro H. intros.
  elim (rem_998 X1 H);  intros.
  apply (rem_6317 epsilon_mknows_current_ptestable_current X1);  tauto.
Defined.

Remark rem_6319 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.  case (rem_6310 epsilon_mknows_current_ptestable_current). clear  epsilon_mknows_current_ptestable_current. intros. apply trans_testable_current_passwd_old_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current. tauto.
Defined.

Remark rem_6320 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current (passwd_old X1 X2) -> auto_testable_current (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1001 X1 X2 H);  intros.
  apply (rem_6319 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6321 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> auto_testable_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current.  case (rem_6310 epsilon_mknows_current_ptestable_current). clear  epsilon_mknows_current_ptestable_current. intros. apply trans_testable_current_alice_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current. tauto.
Defined.

Remark rem_6322 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> auto_knows_current alice -> auto_testable_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intro H. intros.
  elim (rem_1004 H);  intros.
  apply (rem_6321 epsilon_mknows_current_ptestable_current);  tauto.
Defined.

Remark rem_6323 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.  case (rem_6310 epsilon_mknows_current_ptestable_current). clear  epsilon_mknows_current_ptestable_current. intros. apply trans_testable_current_nonceb_old_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current. tauto.
Defined.

Remark rem_6324 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current (nonceb_old X1 X2) -> auto_testable_current (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1007 X1 X2 H);  intros.
  apply (rem_6323 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6325 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_testable_current X1). tauto. exact (rem_6315 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6326 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_6325 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6276 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6327 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6326 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_dec_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6328 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current (dec X1 X2) -> auto_testable_current (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1010 X1 X2 H);  intros.
  apply (rem_6327 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6329 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6330 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_6329 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6331 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6332 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_6331 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6333 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_6330 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_6332 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6334 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6333 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_enc_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6335 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6326 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6336 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6337 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_6336 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6338 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6339 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_6338 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6340 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_6337 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_6339 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6341 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6340 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_enc_3;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6342 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6343 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_6342 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6344 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6345 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_6344 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6346 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_6343 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_6345 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6347 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6346 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_enc_4;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6348 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current (enc X1 X2) -> auto_testable_current (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1031 X1 X2 H);  intros.
  apply (rem_6334 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6335 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6341 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6347 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6349 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto_knows_current X2 -> auto_testable_current X2. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intros X2.
  cut (auto_knows_current X2 -> auto_testable_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_6350 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_testable_current X2). tauto. exact (rem_6349 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6351 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X2). 2:apply (rem_6350 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6352 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6351 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_cons_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6353 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto_testable_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1034 X1 X2 H);  intros.
  apply (rem_6352 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6354 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_testable_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1. intros A1.
  case (rem_6316 epsilon_mknows_current_ptestable_current X1 A1). clear  epsilon_mknows_current_ptestable_current A1. intros. apply trans_testable_current_s_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1. tauto.
Defined.

Remark rem_6355 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto_knows_current (s X1) -> auto_testable_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1. intro H. intros.
  elim (rem_1037 X1 H);  intros.
  apply (rem_6354 epsilon_mknows_current_ptestable_current X1);  tauto.
Defined.

Remark rem_6356 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> auto_testable_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current.  case (rem_6310 epsilon_mknows_current_ptestable_current). clear  epsilon_mknows_current_ptestable_current. intros. apply trans_testable_current_i_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current. tauto.
Defined.

Remark rem_6357 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> auto_knows_current i -> auto_testable_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intro H. intros.
  elim (rem_1040 H);  intros.
  apply (rem_6356 epsilon_mknows_current_ptestable_current);  tauto.
Defined.

Remark rem_6358 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> auto_testable_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current.  case (rem_6310 epsilon_mknows_current_ptestable_current). clear  epsilon_mknows_current_ptestable_current. intros. apply trans_testable_current_nil_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current. tauto.
Defined.

Remark rem_6359 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> auto_knows_current nil -> auto_testable_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intro H. intros.
  elim (rem_1043 H);  intros.
  apply (rem_6358 epsilon_mknows_current_ptestable_current);  tauto.
Defined.

Remark rem_6360 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> auto_testable_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current.  case (rem_6310 epsilon_mknows_current_ptestable_current). clear  epsilon_mknows_current_ptestable_current. intros. apply trans_testable_current_server_1;  tauto.
 clear  epsilon_mknows_current_ptestable_current. tauto.
Defined.

Remark rem_6361 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> auto_knows_current server -> auto_testable_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intro H. intros.
  elim (rem_1046 H);  intros.
  apply (rem_6360 epsilon_mknows_current_ptestable_current);  tauto.
Defined.

Remark rem_6362 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_61 X1 -> auto___def_114 X1. (* Cut history. *)
Proof.  intros epsilon_mknows_current_ptestable_current. exact (rem_6035).
Defined.

Remark rem_6363 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_114 X1). tauto. exact (rem_6362 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6364 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_62 X2 -> auto___def_66 X2. (* Cut history. *)
Proof.  intros epsilon_mknows_current_ptestable_current. exact (rem_6038).
Defined.

Remark rem_6365 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_66 X2). tauto. exact (rem_6364 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6366 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_6363 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_6365 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6367 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6366 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_key_2;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6368 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6369 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_6368 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6370 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6371 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_6370 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6372 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_6369 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_6371 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6373 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6372 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_key_3;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6374 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6375 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_6374 epsilon_mknows_current_ptestable_current X1).
Defined.

Remark rem_6376 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6377 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_6376 epsilon_mknows_current_ptestable_current X2).
Defined.

Remark rem_6378 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_6375 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_6377 epsilon_mknows_current_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6379 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6378 epsilon_mknows_current_ptestable_current X1 X2 A1 A2). clear  epsilon_mknows_current_ptestable_current A1 A2. intros. apply trans_testable_current_key_4;  tauto.
 clear  epsilon_mknows_current_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6380 : (forall X:term, auto_knows_current X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1066 X1 X2 H);  intros.
  apply (rem_6367 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6373 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
  apply (rem_6379 epsilon_mknows_current_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6381 : forall X1:term, auto_knows_current X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_mknows_current_ptestable_current 1.
  intro X. case X.
  exact (rem_6322 epsilon_mknows_current_ptestable_current ).
  exact (rem_6312 epsilon_mknows_current_ptestable_current ).
  intros X1 X2;  exact (rem_6353 epsilon_mknows_current_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_6309 epsilon_mknows_current_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_6328 epsilon_mknows_current_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_6348 epsilon_mknows_current_ptestable_current X1 X2).
  exact (rem_6357 epsilon_mknows_current_ptestable_current ).
  intros X1 X2;  exact (rem_6380 epsilon_mknows_current_ptestable_current X1 X2).
  exact (rem_6359 epsilon_mknows_current_ptestable_current ).
  intros X1 X2. intro H. elim (rem_1077 X1 X2 H).
  intros X1 X2;  exact (rem_6314 epsilon_mknows_current_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_1068 X1 X2 H).
  intros X1 X2;  exact (rem_6324 epsilon_mknows_current_ptestable_current X1 X2).
  intros X1;  exact (rem_6318 epsilon_mknows_current_ptestable_current X1).
  intros X1 X2. intro H. elim (rem_1073 X1 X2 H).
  intros X1 X2;  exact (rem_6320 epsilon_mknows_current_ptestable_current X1 X2).
   intro H. elim (rem_1074  H).
   intro H. elim (rem_1072  H).
  intros X1 X2. intro H. elim (rem_1071 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1070 X1 X2 H).
  intros X1;  exact (rem_6355 epsilon_mknows_current_ptestable_current X1).
  exact (rem_6361 epsilon_mknows_current_ptestable_current ).
  intros X1 X2. intro H. elim (rem_1076 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1069 X1 X2 H).
   intro H. elim (rem_1075  H).
Qed.

Remark rem_6382 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto_testable_current X1). tauto. exact (rem_6381 X1).
Qed.

Remark rem_6383 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto_testable_current X1). tauto. exact (rem_6382 X1 X2).
Qed.

Remark rem_6384 : (forall X:term, auto___def_105 X -> auto___def_119 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_105_p__def_119.  tauto.
Defined.

Remark rem_6385 : (forall X:term, auto___def_105 X -> auto___def_119 X)
    -> auto___def_119 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_105_p__def_119.  case (rem_6384 epsilon_m__def_105_p__def_119). clear  epsilon_m__def_105_p__def_119. intros. apply trans___def_119_sym_1;  tauto.
 clear  epsilon_m__def_105_p__def_119. tauto.
Defined.

Remark rem_6386 : auto___def_105 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6387 : (forall X:term, auto___def_105 X -> auto___def_119 X)
    -> auto___def_105 sym -> auto___def_119 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_105_p__def_119. intro H. intros.
  elim (rem_6386 H);  intros.
  apply (rem_6385 epsilon_m__def_105_p__def_119);  tauto.
Defined.

Remark rem_6388 : forall X1 X2:term, auto___def_105 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6389 : forall X1 X2:term, auto___def_105 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6390 : forall X1 X2:term, auto___def_105 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6391 : auto___def_105 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6392 : forall X1 X2:term, auto___def_105 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6393 : forall X1 X2:term, auto___def_105 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6394 : forall X1 X2:term, auto___def_105 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6395 : forall X1:term, auto___def_105 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6396 : forall X1 X2:term, auto___def_105 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6397 : forall X1 X2:term, auto___def_105 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6398 : auto___def_105 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6399 : forall X1 X2:term, auto___def_105 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6400 : forall X1 X2:term, auto___def_105 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6401 : forall X1 X2:term, auto___def_105 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6402 : forall X1 X2:term, auto___def_105 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6403 : forall X1:term, auto___def_105 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6404 : forall X1 X2:term, auto___def_105 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6405 : auto___def_105 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6406 : auto___def_105 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6407 : auto___def_105 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6408 : forall X1 X2:term, auto___def_105 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6409 : forall X1 X2:term, auto___def_105 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6410 : forall X1:term, auto___def_105 X1 -> auto___def_119 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_105_p__def_119 1.
  intro X. case X.
   intro H. elim (rem_6398  H).
   intro H. elim (rem_6391  H).
  intros X1 X2. intro H. elim (rem_6402 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6388 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6400 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6401 X1 X2 H).
   intro H. elim (rem_6405  H).
  intros X1 X2. intro H. elim (rem_6409 X1 X2 H).
   intro H. elim (rem_6406  H).
  intros X1 X2. intro H. elim (rem_6408 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6392 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6389 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6399 X1 X2 H).
  intros X1. intro H. elim (rem_6395 X1 H).
  intros X1 X2. intro H. elim (rem_6397 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6396 X1 X2 H).
   intro H. elim (rem_2167  H).
   intro H. elim (rem_1427  H).
  intros X1 X2. intro H. elim (rem_6394 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6393 X1 X2 H).
  intros X1. intro H. elim (rem_6403 X1 H).
   intro H. elim (rem_6407  H).
  intros X1 X2. intro H. elim (rem_6404 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6390 X1 X2 H).
  exact (rem_6387 epsilon_m__def_105_p__def_119 ).
Qed.

Remark rem_6411 : (forall X:term, auto___def_104 X -> auto_testable_current X)
    -> forall X1:term, auto___def_105 X1 -> auto___def_119 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_104_ptestable_current. exact (rem_6410).
Defined.

Remark rem_6412 : (forall X:term, auto___def_104 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_105 X1 -> auto___type_23 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_104_ptestable_current. intros X1 X2.
  cut (auto___def_105 X1 -> auto___def_119 X1). tauto. exact (rem_6411 epsilon_m__def_104_ptestable_current X1).
Defined.

Remark rem_6413 : forall X2:term, auto___type_23 X2 -> auto___type_31 X2. (* Induct. *)
Proof.
  fix epsilon_m__type_23_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_436  H).
   intro H. elim (rem_429  H).
  intros X1 X2. intro H. elim (rem_441 X1 X2 H).
  intros X1 X2. intro H. elim (rem_426 X1 X2 H).
  intros X1 X2. intro H. elim (rem_439 X1 X2 H).
  intros X1 X2. intro H. elim (rem_440 X1 X2 H).
   intro H. elim (rem_445  H).
  intros X1 X2. intro H. elim (rem_449 X1 X2 H).
   intro H. elim (rem_446  H).
  intros X1 X2. intro H. elim (rem_448 X1 X2 H).
  intros X1 X2. intro H. elim (rem_430 X1 X2 H).
  intros X1 X2. intro H. elim (rem_427 X1 X2 H).
  intros X1 X2. intro H. elim (rem_438 X1 X2 H).
  intros X1. intro H. elim (rem_432 X1 H).
  intros X1 X2. intro H. elim (rem_435 X1 X2 H).
  intros X1 X2. intro H. elim (rem_434 X1 X2 H).
   intro H. elim (rem_437  H).
   intro H. elim (rem_433  H).
  intros X1 X2;  exact (rem_425 epsilon_m__type_23_p__type_31 X1 X2).
  intros X1 X2. intro H. elim (rem_431 X1 X2 H).
  intros X1. intro H. elim (rem_442 X1 H).
   intro H. elim (rem_447  H).
  intros X1 X2. intro H. elim (rem_444 X1 X2 H).
  intros X1 X2. intro H. elim (rem_428 X1 X2 H).
   intro H. elim (rem_443  H).
Qed.

Remark rem_6414 : (forall X:term, auto___def_104 X -> auto_testable_current X)
    -> forall X2:term, auto___type_23 X2 -> auto___type_31 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_104_ptestable_current. exact (rem_6413).
Defined.

Remark rem_6415 : (forall X:term, auto___def_104 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_105 X1 -> auto___type_23 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_104_ptestable_current. intros X1 X2.
  cut (auto___type_23 X2 -> auto___type_31 X2). tauto. exact (rem_6414 epsilon_m__def_104_ptestable_current X2).
Defined.

Remark rem_6416 : (forall X:term, auto___def_104 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_105 X1 -> auto___type_23 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_104_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_6412 epsilon_m__def_104_ptestable_current X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_6415 epsilon_m__def_104_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6417 : (forall X:term, auto___def_104 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_105 X1 -> auto___type_23 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_104_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6416 epsilon_m__def_104_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_104_ptestable_current A1 A2. intros. apply trans_testable_current_key_1;  tauto.
 clear  epsilon_m__def_104_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6418 : (forall X:term, auto___def_104 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_104 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_104_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1431 X1 X2 H);  intros.
  apply (rem_6417 epsilon_m__def_104_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6419 : forall X1 X2:term, auto___def_104 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6420 : forall X1 X2:term, auto___def_104 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6421 : forall X1 X2:term, auto___def_104 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6422 : auto___def_104 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6423 : forall X1 X2:term, auto___def_104 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6424 : forall X1 X2:term, auto___def_104 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6425 : forall X1 X2:term, auto___def_104 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6426 : forall X1:term, auto___def_104 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6427 : auto___def_104 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6428 : forall X1 X2:term, auto___def_104 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6429 : forall X1 X2:term, auto___def_104 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6430 : auto___def_104 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6431 : auto___def_104 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6432 : forall X1 X2:term, auto___def_104 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6433 : forall X1 X2:term, auto___def_104 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6434 : forall X1 X2:term, auto___def_104 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6435 : forall X1 X2:term, auto___def_104 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6436 : forall X1:term, auto___def_104 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6437 : auto___def_104 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6438 : forall X1 X2:term, auto___def_104 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6439 : auto___def_104 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6440 : auto___def_104 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6441 : auto___def_104 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6442 : forall X1 X2:term, auto___def_104 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6443 : forall X1:term, auto___def_104 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_104_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_6430  H).
   intro H. elim (rem_6422  H).
  intros X1 X2. intro H. elim (rem_6435 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6419 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6433 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6434 X1 X2 H).
   intro H. elim (rem_6439  H).
  intros X1 X2;  exact (rem_6418 epsilon_m__def_104_ptestable_current X1 X2).
   intro H. elim (rem_6440  H).
  intros X1 X2. intro H. elim (rem_6442 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6423 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6420 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6432 X1 X2 H).
  intros X1. intro H. elim (rem_6426 X1 H).
  intros X1 X2. intro H. elim (rem_6429 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6428 X1 X2 H).
   intro H. elim (rem_6431  H).
   intro H. elim (rem_6427  H).
  intros X1 X2. intro H. elim (rem_6425 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6424 X1 X2 H).
  intros X1. intro H. elim (rem_6436 X1 H).
   intro H. elim (rem_6441  H).
  intros X1 X2. intro H. elim (rem_6438 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6421 X1 X2 H).
   intro H. elim (rem_6437  H).
Qed.

Remark rem_6444 : forall X1 X2:term, auto___def_104 X1 -> auto___type_22 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_104 X1 -> auto_testable_current X1). tauto. exact (rem_6443 X1).
Qed.

Remark rem_6445 : forall X1 X2:term, auto___type_22 X2 -> auto___def_104 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_104 X1 -> auto___type_22 X2 -> auto_knows_current X2 -> auto_testable_current X1). tauto. exact (rem_6444 X1 X2).
Qed.

Remark rem_6446 : (forall X:term, auto___def_93 X -> auto___def_119 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_93_p__def_119.  tauto.
Defined.

Remark rem_6447 : (forall X:term, auto___def_93 X -> auto___def_119 X)
    -> auto___def_119 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_93_p__def_119.  case (rem_6446 epsilon_m__def_93_p__def_119). clear  epsilon_m__def_93_p__def_119. intros. apply trans___def_119_sym_1;  tauto.
 clear  epsilon_m__def_93_p__def_119. tauto.
Defined.

Remark rem_6448 : auto___def_93 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6449 : (forall X:term, auto___def_93 X -> auto___def_119 X)
    -> auto___def_93 sym -> auto___def_119 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_93_p__def_119. intro H. intros.
  elim (rem_6448 H);  intros.
  apply (rem_6447 epsilon_m__def_93_p__def_119);  tauto.
Defined.

Remark rem_6450 : forall X1 X2:term, auto___def_93 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6451 : forall X1 X2:term, auto___def_93 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6452 : forall X1 X2:term, auto___def_93 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6453 : auto___def_93 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6454 : forall X1 X2:term, auto___def_93 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6455 : forall X1 X2:term, auto___def_93 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6456 : forall X1 X2:term, auto___def_93 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6457 : forall X1:term, auto___def_93 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6458 : forall X1 X2:term, auto___def_93 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6459 : forall X1 X2:term, auto___def_93 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6460 : auto___def_93 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6461 : forall X1 X2:term, auto___def_93 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6462 : forall X1 X2:term, auto___def_93 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6463 : forall X1 X2:term, auto___def_93 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6464 : forall X1 X2:term, auto___def_93 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6465 : forall X1:term, auto___def_93 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6466 : forall X1 X2:term, auto___def_93 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6467 : auto___def_93 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6468 : auto___def_93 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6469 : auto___def_93 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6470 : forall X1 X2:term, auto___def_93 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6471 : forall X1 X2:term, auto___def_93 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6472 : forall X1:term, auto___def_93 X1 -> auto___def_119 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_93_p__def_119 1.
  intro X. case X.
   intro H. elim (rem_6460  H).
   intro H. elim (rem_6453  H).
  intros X1 X2. intro H. elim (rem_6464 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6450 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6462 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6463 X1 X2 H).
   intro H. elim (rem_6467  H).
  intros X1 X2. intro H. elim (rem_6471 X1 X2 H).
   intro H. elim (rem_6468  H).
  intros X1 X2. intro H. elim (rem_6470 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6454 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6451 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6461 X1 X2 H).
  intros X1. intro H. elim (rem_6457 X1 H).
  intros X1 X2. intro H. elim (rem_6459 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6458 X1 X2 H).
   intro H. elim (rem_2173  H).
   intro H. elim (rem_1434  H).
  intros X1 X2. intro H. elim (rem_6456 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6455 X1 X2 H).
  intros X1. intro H. elim (rem_6465 X1 H).
   intro H. elim (rem_6469  H).
  intros X1 X2. intro H. elim (rem_6466 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6452 X1 X2 H).
  exact (rem_6449 epsilon_m__def_93_p__def_119 ).
Qed.

Remark rem_6473 : (forall X:term, auto___def_89 X -> auto_testable_current X)
    -> forall X1:term, auto___def_93 X1 -> auto___def_119 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_89_ptestable_current. exact (rem_6472).
Defined.

Remark rem_6474 : (forall X:term, auto___def_89 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_93 X1 -> auto___def_94 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_89_ptestable_current. intros X1 X2.
  cut (auto___def_93 X1 -> auto___def_119 X1). tauto. exact (rem_6473 epsilon_m__def_89_ptestable_current X1).
Defined.

Remark rem_6475 : (forall X:term, auto___def_94 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6476 : (forall X:term, auto___def_94 X -> auto___type_31 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_94_p__type_31. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_6475 epsilon_m__def_94_p__type_31 X1);  assumption.
  tauto.
Defined.

Remark rem_6477 : (forall X:term, auto___def_94 X -> auto___type_31 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_31 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_94_p__type_31. intros X1 X2. intros A1.
  case (rem_6476 epsilon_m__def_94_p__type_31 X1 A1). clear  epsilon_m__def_94_p__type_31 A1. intros. apply trans___type_31_r_current_1;  tauto.
 clear  epsilon_m__def_94_p__type_31 A1. tauto.
Defined.

Remark rem_6478 : (forall X:term, auto___def_94 X -> auto___type_31 X)
    -> forall X1 X2:term, auto___def_94 (r_current X1 X2) -> auto___type_31 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_94_p__type_31. intros X1 X2. intro H. intros.
  elim (rem_2793 X1 X2 H);  intros.
  apply (rem_6477 epsilon_m__def_94_p__type_31 X1 X2);  tauto.
Defined.

Remark rem_6479 : forall X2:term, auto___def_94 X2 -> auto___type_31 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_94_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_2805  H).
   intro H. elim (rem_2798  H).
  intros X1 X2. intro H. elim (rem_2810 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2795 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2808 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2809 X1 X2 H).
   intro H. elim (rem_2814  H).
  intros X1 X2. intro H. elim (rem_2818 X1 X2 H).
   intro H. elim (rem_2815  H).
  intros X1 X2. intro H. elim (rem_2817 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2799 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2796 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2807 X1 X2 H).
  intros X1. intro H. elim (rem_2801 X1 H).
  intros X1 X2. intro H. elim (rem_2804 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2803 X1 X2 H).
   intro H. elim (rem_2806  H).
   intro H. elim (rem_2802  H).
  intros X1 X2;  exact (rem_6478 epsilon_m__def_94_p__type_31 X1 X2).
  intros X1 X2. intro H. elim (rem_2800 X1 X2 H).
  intros X1. intro H. elim (rem_2811 X1 H).
   intro H. elim (rem_2816  H).
  intros X1 X2. intro H. elim (rem_2813 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2797 X1 X2 H).
   intro H. elim (rem_2812  H).
Qed.

Remark rem_6480 : (forall X:term, auto___def_89 X -> auto_testable_current X)
    -> forall X2:term, auto___def_94 X2 -> auto___type_31 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_89_ptestable_current. exact (rem_6479).
Defined.

Remark rem_6481 : (forall X:term, auto___def_89 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_93 X1 -> auto___def_94 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_89_ptestable_current. intros X1 X2.
  cut (auto___def_94 X2 -> auto___type_31 X2). tauto. exact (rem_6480 epsilon_m__def_89_ptestable_current X2).
Defined.

Remark rem_6482 : (forall X:term, auto___def_89 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_93 X1 -> auto___def_94 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_89_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_6474 epsilon_m__def_89_ptestable_current X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_6481 epsilon_m__def_89_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6483 : (forall X:term, auto___def_89 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_93 X1 -> auto___def_94 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_89_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6482 epsilon_m__def_89_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_89_ptestable_current A1 A2. intros. apply trans_testable_current_key_1;  tauto.
 clear  epsilon_m__def_89_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6484 : (forall X:term, auto___def_89 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_89 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_89_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1438 X1 X2 H);  intros.
  apply (rem_6483 epsilon_m__def_89_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6485 : forall X1 X2:term, auto___def_89 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6486 : forall X1 X2:term, auto___def_89 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6487 : forall X1 X2:term, auto___def_89 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6488 : auto___def_89 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6489 : forall X1 X2:term, auto___def_89 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6490 : forall X1 X2:term, auto___def_89 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6491 : forall X1 X2:term, auto___def_89 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6492 : forall X1:term, auto___def_89 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6493 : auto___def_89 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6494 : forall X1 X2:term, auto___def_89 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6495 : forall X1 X2:term, auto___def_89 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6496 : auto___def_89 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6497 : auto___def_89 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6498 : forall X1 X2:term, auto___def_89 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6499 : forall X1 X2:term, auto___def_89 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6500 : forall X1 X2:term, auto___def_89 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6501 : forall X1 X2:term, auto___def_89 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6502 : forall X1:term, auto___def_89 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6503 : auto___def_89 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6504 : forall X1 X2:term, auto___def_89 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6505 : auto___def_89 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6506 : auto___def_89 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6507 : auto___def_89 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6508 : forall X1 X2:term, auto___def_89 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6509 : forall X1:term, auto___def_89 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_89_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_6496  H).
   intro H. elim (rem_6488  H).
  intros X1 X2. intro H. elim (rem_6501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6485 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6500 X1 X2 H).
   intro H. elim (rem_6505  H).
  intros X1 X2;  exact (rem_6484 epsilon_m__def_89_ptestable_current X1 X2).
   intro H. elim (rem_6506  H).
  intros X1 X2. intro H. elim (rem_6508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6489 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6486 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6498 X1 X2 H).
  intros X1. intro H. elim (rem_6492 X1 H).
  intros X1 X2. intro H. elim (rem_6495 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6494 X1 X2 H).
   intro H. elim (rem_6497  H).
   intro H. elim (rem_6493  H).
  intros X1 X2. intro H. elim (rem_6491 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6490 X1 X2 H).
  intros X1. intro H. elim (rem_6502 X1 H).
   intro H. elim (rem_6507  H).
  intros X1 X2. intro H. elim (rem_6504 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6487 X1 X2 H).
   intro H. elim (rem_6503  H).
Qed.

Remark rem_6510 : forall X1 X2:term, auto___def_88 X2 -> auto___def_89 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_89 X1 -> auto_testable_current X1). tauto. exact (rem_6509 X1).
Qed.

Remark rem_6511 : (forall X:term, auto___def_113 X -> auto_testable_current X)
    -> forall X1:term, auto___def_114 X1 -> auto___def_114 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6512 : (forall X:term, auto___def_113 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_113_ptestable_current. intros X1 X2.
  cut (auto___def_114 X1 -> auto___def_114 X1). tauto. exact (rem_6511 epsilon_m__def_113_ptestable_current X1).
Defined.

Remark rem_6513 : (forall X:term, auto___def_113 X -> auto_testable_current X)
    -> forall X2:term, auto___def_66 X2 -> auto___def_66 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6514 : (forall X:term, auto___def_113 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_113_ptestable_current. intros X1 X2.
  cut (auto___def_66 X2 -> auto___def_66 X2). tauto. exact (rem_6513 epsilon_m__def_113_ptestable_current X2).
Defined.

Remark rem_6515 : (forall X:term, auto___def_113 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_113_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_6512 epsilon_m__def_113_ptestable_current X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_6514 epsilon_m__def_113_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6516 : (forall X:term, auto___def_113 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_113_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6515 epsilon_m__def_113_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_113_ptestable_current A1 A2. intros. apply trans_testable_current_key_2;  tauto.
 clear  epsilon_m__def_113_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6517 : forall X1 X2:term, auto___def_113 (key X1 X2) -> or_1
    (auto___def_114 X1 /\ auto___def_66 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6518 : (forall X:term, auto___def_113 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_113 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_113_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_6517 X1 X2 H);  intros.
  apply (rem_6516 epsilon_m__def_113_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6519 : forall X1 X2:term, auto___def_113 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6520 : forall X1 X2:term, auto___def_113 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6521 : forall X1 X2:term, auto___def_113 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6522 : auto___def_113 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6523 : forall X1 X2:term, auto___def_113 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6524 : forall X1 X2:term, auto___def_113 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6525 : forall X1 X2:term, auto___def_113 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6526 : forall X1:term, auto___def_113 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6527 : auto___def_113 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6528 : forall X1 X2:term, auto___def_113 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6529 : forall X1 X2:term, auto___def_113 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6530 : auto___def_113 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6531 : auto___def_113 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6532 : forall X1 X2:term, auto___def_113 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6533 : forall X1 X2:term, auto___def_113 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6534 : forall X1 X2:term, auto___def_113 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6535 : forall X1 X2:term, auto___def_113 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6536 : forall X1:term, auto___def_113 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6537 : auto___def_113 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6538 : forall X1 X2:term, auto___def_113 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6539 : auto___def_113 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6540 : auto___def_113 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6541 : auto___def_113 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6542 : forall X1 X2:term, auto___def_113 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6543 : forall X1:term, auto___def_113 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_113_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_6530  H).
   intro H. elim (rem_6522  H).
  intros X1 X2. intro H. elim (rem_6535 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6519 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6533 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6534 X1 X2 H).
   intro H. elim (rem_6539  H).
  intros X1 X2;  exact (rem_6518 epsilon_m__def_113_ptestable_current X1 X2).
   intro H. elim (rem_6540  H).
  intros X1 X2. intro H. elim (rem_6542 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6523 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6520 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6532 X1 X2 H).
  intros X1. intro H. elim (rem_6526 X1 H).
  intros X1 X2. intro H. elim (rem_6529 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6528 X1 X2 H).
   intro H. elim (rem_6531  H).
   intro H. elim (rem_6527  H).
  intros X1 X2. intro H. elim (rem_6525 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6524 X1 X2 H).
  intros X1. intro H. elim (rem_6536 X1 H).
   intro H. elim (rem_6541  H).
  intros X1 X2. intro H. elim (rem_6538 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6521 X1 X2 H).
   intro H. elim (rem_6537  H).
Qed.

Remark rem_6544 : forall X1 X2:term, auto___def_113 X1 -> auto___type_27 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_113 X1 -> auto_testable_current X1). tauto. exact (rem_6543 X1).
Qed.

Remark rem_6545 : forall X1 X2:term, auto___type_27 X2 -> auto___def_113 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_113 X1 -> auto___type_27 X2 -> auto_knows_current X2 -> auto_testable_current X1). tauto. exact (rem_6544 X1 X2).
Qed.

Remark rem_6546 : (forall X:term, auto___def_26 X -> auto___def_119 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_26_p__def_119.  tauto.
Defined.

Remark rem_6547 : (forall X:term, auto___def_26 X -> auto___def_119 X)
    -> auto___def_119 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_26_p__def_119.  case (rem_6546 epsilon_m__def_26_p__def_119). clear  epsilon_m__def_26_p__def_119. intros. apply trans___def_119_sym_1;  tauto.
 clear  epsilon_m__def_26_p__def_119. tauto.
Defined.

Remark rem_6548 : auto___def_26 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6549 : (forall X:term, auto___def_26 X -> auto___def_119 X)
    -> auto___def_26 sym -> auto___def_119 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_26_p__def_119. intro H. intros.
  elim (rem_6548 H);  intros.
  apply (rem_6547 epsilon_m__def_26_p__def_119);  tauto.
Defined.

Remark rem_6550 : forall X1 X2:term, auto___def_26 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6551 : forall X1 X2:term, auto___def_26 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6552 : forall X1 X2:term, auto___def_26 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6553 : auto___def_26 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6554 : forall X1 X2:term, auto___def_26 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6555 : forall X1 X2:term, auto___def_26 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6556 : forall X1 X2:term, auto___def_26 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6557 : forall X1:term, auto___def_26 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6558 : forall X1 X2:term, auto___def_26 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6559 : forall X1 X2:term, auto___def_26 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6560 : auto___def_26 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6561 : forall X1 X2:term, auto___def_26 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6562 : forall X1 X2:term, auto___def_26 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6563 : forall X1 X2:term, auto___def_26 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6564 : forall X1 X2:term, auto___def_26 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6565 : forall X1:term, auto___def_26 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6566 : forall X1 X2:term, auto___def_26 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6567 : auto___def_26 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6568 : auto___def_26 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6569 : auto___def_26 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6570 : forall X1 X2:term, auto___def_26 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6571 : forall X1 X2:term, auto___def_26 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6572 : forall X1:term, auto___def_26 X1 -> auto___def_119 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_26_p__def_119 1.
  intro X. case X.
   intro H. elim (rem_6560  H).
   intro H. elim (rem_6553  H).
  intros X1 X2. intro H. elim (rem_6564 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6550 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6562 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6563 X1 X2 H).
   intro H. elim (rem_6567  H).
  intros X1 X2. intro H. elim (rem_6571 X1 X2 H).
   intro H. elim (rem_6568  H).
  intros X1 X2. intro H. elim (rem_6570 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6554 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6551 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6561 X1 X2 H).
  intros X1. intro H. elim (rem_6557 X1 H).
  intros X1 X2. intro H. elim (rem_6559 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6558 X1 X2 H).
   intro H. elim (rem_2178  H).
   intro H. elim (rem_1440  H).
  intros X1 X2. intro H. elim (rem_6556 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6555 X1 X2 H).
  intros X1. intro H. elim (rem_6565 X1 H).
   intro H. elim (rem_6569  H).
  intros X1 X2. intro H. elim (rem_6566 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6552 X1 X2 H).
  exact (rem_6549 epsilon_m__def_26_p__def_119 ).
Qed.

Remark rem_6573 : (forall X:term, auto___def_25 X -> auto_testable_current X)
    -> forall X1:term, auto___def_26 X1 -> auto___def_119 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_25_ptestable_current. exact (rem_6572).
Defined.

Remark rem_6574 : (forall X:term, auto___def_25 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_25_ptestable_current. intros X1 X2.
  cut (auto___def_26 X1 -> auto___def_119 X1). tauto. exact (rem_6573 epsilon_m__def_25_ptestable_current X1).
Defined.

Remark rem_6575 : forall X2:term, auto___type_4 X2 -> auto___type_31 X2. (* Induct. *)
Proof.
  fix epsilon_m__type_4_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_531  H).
   intro H. elim (rem_524  H).
  intros X1 X2. intro H. elim (rem_536 X1 X2 H).
  intros X1 X2. intro H. elim (rem_521 X1 X2 H).
  intros X1 X2. intro H. elim (rem_534 X1 X2 H).
  intros X1 X2. intro H. elim (rem_535 X1 X2 H).
   intro H. elim (rem_540  H).
  intros X1 X2. intro H. elim (rem_544 X1 X2 H).
   intro H. elim (rem_541  H).
  intros X1 X2. intro H. elim (rem_543 X1 X2 H).
  intros X1 X2. intro H. elim (rem_525 X1 X2 H).
  intros X1 X2. intro H. elim (rem_522 X1 X2 H).
  intros X1 X2. intro H. elim (rem_533 X1 X2 H).
  intros X1. intro H. elim (rem_527 X1 H).
  intros X1 X2. intro H. elim (rem_530 X1 X2 H).
  intros X1 X2. intro H. elim (rem_529 X1 X2 H).
   intro H. elim (rem_532  H).
   intro H. elim (rem_528  H).
  intros X1 X2. intro H. elim (rem_526 X1 X2 H).
  intros X1 X2;  exact (rem_520 epsilon_m__type_4_p__type_31 X1 X2).
  intros X1. intro H. elim (rem_537 X1 H).
   intro H. elim (rem_542  H).
  intros X1 X2. intro H. elim (rem_539 X1 X2 H).
  intros X1 X2. intro H. elim (rem_523 X1 X2 H).
   intro H. elim (rem_538  H).
Qed.

Remark rem_6576 : (forall X:term, auto___def_25 X -> auto_testable_current X)
    -> forall X2:term, auto___type_4 X2 -> auto___type_31 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_25_ptestable_current. exact (rem_6575).
Defined.

Remark rem_6577 : (forall X:term, auto___def_25 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_25_ptestable_current. intros X1 X2.
  cut (auto___type_4 X2 -> auto___type_31 X2). tauto. exact (rem_6576 epsilon_m__def_25_ptestable_current X2).
Defined.

Remark rem_6578 : (forall X:term, auto___def_25 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_25_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_6574 epsilon_m__def_25_ptestable_current X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_6577 epsilon_m__def_25_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6579 : (forall X:term, auto___def_25 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_25_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6578 epsilon_m__def_25_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_25_ptestable_current A1 A2. intros. apply trans_testable_current_key_1;  tauto.
 clear  epsilon_m__def_25_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6580 : (forall X:term, auto___def_25 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_25 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_25_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1444 X1 X2 H);  intros.
  apply (rem_6579 epsilon_m__def_25_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6581 : forall X1:term, auto___def_25 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_25_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_4538  H).
   intro H. elim (rem_4530  H).
  intros X1 X2. intro H. elim (rem_4543 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4527 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4541 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4542 X1 X2 H).
   intro H. elim (rem_4547  H).
  intros X1 X2;  exact (rem_6580 epsilon_m__def_25_ptestable_current X1 X2).
   intro H. elim (rem_4548  H).
  intros X1 X2. intro H. elim (rem_4550 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4531 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4528 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4540 X1 X2 H).
  intros X1. intro H. elim (rem_4534 X1 H).
  intros X1 X2. intro H. elim (rem_4537 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4536 X1 X2 H).
   intro H. elim (rem_4539  H).
   intro H. elim (rem_4535  H).
  intros X1 X2. intro H. elim (rem_4533 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4532 X1 X2 H).
  intros X1. intro H. elim (rem_4544 X1 H).
   intro H. elim (rem_4549  H).
  intros X1 X2. intro H. elim (rem_4546 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4529 X1 X2 H).
   intro H. elim (rem_4545  H).
Qed.

Remark rem_6582 : forall X1 X2:term, auto___def_24 X2 -> auto___def_25 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_25 X1 -> auto_testable_current X1). tauto. exact (rem_6581 X1).
Qed.

Remark rem_6583 : (forall X:term, auto___def_45 X -> auto___def_119 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_45_p__def_119.  tauto.
Defined.

Remark rem_6584 : (forall X:term, auto___def_45 X -> auto___def_119 X)
    -> auto___def_119 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_45_p__def_119.  case (rem_6583 epsilon_m__def_45_p__def_119). clear  epsilon_m__def_45_p__def_119. intros. apply trans___def_119_sym_1;  tauto.
 clear  epsilon_m__def_45_p__def_119. tauto.
Defined.

Remark rem_6585 : auto___def_45 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6586 : (forall X:term, auto___def_45 X -> auto___def_119 X)
    -> auto___def_45 sym -> auto___def_119 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_45_p__def_119. intro H. intros.
  elim (rem_6585 H);  intros.
  apply (rem_6584 epsilon_m__def_45_p__def_119);  tauto.
Defined.

Remark rem_6587 : forall X1 X2:term, auto___def_45 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6588 : forall X1 X2:term, auto___def_45 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6589 : forall X1 X2:term, auto___def_45 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6590 : auto___def_45 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6591 : forall X1 X2:term, auto___def_45 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6592 : forall X1 X2:term, auto___def_45 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6593 : forall X1 X2:term, auto___def_45 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6594 : forall X1:term, auto___def_45 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6595 : forall X1 X2:term, auto___def_45 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6596 : forall X1 X2:term, auto___def_45 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6597 : auto___def_45 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6598 : forall X1 X2:term, auto___def_45 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6599 : forall X1 X2:term, auto___def_45 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6600 : forall X1 X2:term, auto___def_45 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6601 : forall X1 X2:term, auto___def_45 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6602 : forall X1:term, auto___def_45 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6603 : forall X1 X2:term, auto___def_45 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6604 : auto___def_45 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6605 : auto___def_45 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6606 : auto___def_45 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6607 : forall X1 X2:term, auto___def_45 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6608 : forall X1 X2:term, auto___def_45 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6609 : forall X1:term, auto___def_45 X1 -> auto___def_119 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_45_p__def_119 1.
  intro X. case X.
   intro H. elim (rem_6597  H).
   intro H. elim (rem_6590  H).
  intros X1 X2. intro H. elim (rem_6601 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6587 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6599 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6600 X1 X2 H).
   intro H. elim (rem_6604  H).
  intros X1 X2. intro H. elim (rem_6608 X1 X2 H).
   intro H. elim (rem_6605  H).
  intros X1 X2. intro H. elim (rem_6607 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6591 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6588 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6598 X1 X2 H).
  intros X1. intro H. elim (rem_6594 X1 H).
  intros X1 X2. intro H. elim (rem_6596 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6595 X1 X2 H).
   intro H. elim (rem_2183  H).
   intro H. elim (rem_1446  H).
  intros X1 X2. intro H. elim (rem_6593 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6592 X1 X2 H).
  intros X1. intro H. elim (rem_6602 X1 H).
   intro H. elim (rem_6606  H).
  intros X1 X2. intro H. elim (rem_6603 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6589 X1 X2 H).
  exact (rem_6586 epsilon_m__def_45_p__def_119 ).
Qed.

Remark rem_6610 : (forall X:term, auto___def_44 X -> auto_testable_current X)
    -> forall X1:term, auto___def_45 X1 -> auto___def_119 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_44_ptestable_current. exact (rem_6609).
Defined.

Remark rem_6611 : (forall X:term, auto___def_44 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_44_ptestable_current. intros X1 X2.
  cut (auto___def_45 X1 -> auto___def_119 X1). tauto. exact (rem_6610 epsilon_m__def_44_ptestable_current X1).
Defined.

Remark rem_6612 : forall X2:term, auto___type_8 X2 -> auto___type_31 X2. (* Induct. *)
Proof.
  fix epsilon_m__type_8_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_468  H).
   intro H. elim (rem_461  H).
  intros X1 X2. intro H. elim (rem_473 X1 X2 H).
  intros X1 X2. intro H. elim (rem_458 X1 X2 H).
  intros X1 X2. intro H. elim (rem_471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_472 X1 X2 H).
   intro H. elim (rem_477  H).
  intros X1 X2. intro H. elim (rem_481 X1 X2 H).
   intro H. elim (rem_478  H).
  intros X1 X2. intro H. elim (rem_480 X1 X2 H).
  intros X1 X2. intro H. elim (rem_462 X1 X2 H).
  intros X1 X2. intro H. elim (rem_459 X1 X2 H).
  intros X1 X2. intro H. elim (rem_470 X1 X2 H).
  intros X1. intro H. elim (rem_464 X1 H).
  intros X1 X2. intro H. elim (rem_467 X1 X2 H).
  intros X1 X2. intro H. elim (rem_466 X1 X2 H).
   intro H. elim (rem_469  H).
   intro H. elim (rem_465  H).
  intros X1 X2. intro H. elim (rem_463 X1 X2 H).
  intros X1 X2;  exact (rem_457 epsilon_m__type_8_p__type_31 X1 X2).
  intros X1. intro H. elim (rem_474 X1 H).
   intro H. elim (rem_479  H).
  intros X1 X2. intro H. elim (rem_476 X1 X2 H).
  intros X1 X2. intro H. elim (rem_460 X1 X2 H).
   intro H. elim (rem_475  H).
Qed.

Remark rem_6613 : (forall X:term, auto___def_44 X -> auto_testable_current X)
    -> forall X2:term, auto___type_8 X2 -> auto___type_31 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_44_ptestable_current. exact (rem_6612).
Defined.

Remark rem_6614 : (forall X:term, auto___def_44 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_44_ptestable_current. intros X1 X2.
  cut (auto___type_8 X2 -> auto___type_31 X2). tauto. exact (rem_6613 epsilon_m__def_44_ptestable_current X2).
Defined.

Remark rem_6615 : (forall X:term, auto___def_44 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_44_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_6611 epsilon_m__def_44_ptestable_current X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_6614 epsilon_m__def_44_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6616 : (forall X:term, auto___def_44 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_44_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6615 epsilon_m__def_44_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_44_ptestable_current A1 A2. intros. apply trans_testable_current_key_1;  tauto.
 clear  epsilon_m__def_44_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6617 : (forall X:term, auto___def_44 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_44 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_44_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1450 X1 X2 H);  intros.
  apply (rem_6616 epsilon_m__def_44_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6618 : forall X1:term, auto___def_44 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_44_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_4707  H).
   intro H. elim (rem_4699  H).
  intros X1 X2. intro H. elim (rem_4712 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4696 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4710 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4711 X1 X2 H).
   intro H. elim (rem_4716  H).
  intros X1 X2;  exact (rem_6617 epsilon_m__def_44_ptestable_current X1 X2).
   intro H. elim (rem_4717  H).
  intros X1 X2. intro H. elim (rem_4719 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4700 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4697 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4709 X1 X2 H).
  intros X1. intro H. elim (rem_4703 X1 H).
  intros X1 X2. intro H. elim (rem_4706 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4705 X1 X2 H).
   intro H. elim (rem_4708  H).
   intro H. elim (rem_4704  H).
  intros X1 X2. intro H. elim (rem_4702 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4701 X1 X2 H).
  intros X1. intro H. elim (rem_4713 X1 H).
   intro H. elim (rem_4718  H).
  intros X1 X2. intro H. elim (rem_4715 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4698 X1 X2 H).
   intro H. elim (rem_4714  H).
Qed.

Remark rem_6619 : forall X1 X2:term, auto___def_44 X1 -> auto___type_7 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_44 X1 -> auto_testable_current X1). tauto. exact (rem_6618 X1).
Qed.

Remark rem_6620 : forall X1 X2:term, auto___type_7 X2 -> auto___def_44 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_44 X1 -> auto___type_7 X2 -> auto_knows_current X2 -> auto_testable_current X1). tauto. exact (rem_6619 X1 X2).
Qed.

Remark rem_6621 : (forall X:term, auto___def_86 X -> auto___def_119 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_86_p__def_119.  tauto.
Defined.

Remark rem_6622 : (forall X:term, auto___def_86 X -> auto___def_119 X)
    -> auto___def_119 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_86_p__def_119.  case (rem_6621 epsilon_m__def_86_p__def_119). clear  epsilon_m__def_86_p__def_119. intros. apply trans___def_119_sym_1;  tauto.
 clear  epsilon_m__def_86_p__def_119. tauto.
Defined.

Remark rem_6623 : auto___def_86 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6624 : (forall X:term, auto___def_86 X -> auto___def_119 X)
    -> auto___def_86 sym -> auto___def_119 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_86_p__def_119. intro H. intros.
  elim (rem_6623 H);  intros.
  apply (rem_6622 epsilon_m__def_86_p__def_119);  tauto.
Defined.

Remark rem_6625 : forall X1 X2:term, auto___def_86 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6626 : forall X1 X2:term, auto___def_86 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6627 : forall X1 X2:term, auto___def_86 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6628 : auto___def_86 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6629 : forall X1 X2:term, auto___def_86 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6630 : forall X1 X2:term, auto___def_86 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6631 : forall X1 X2:term, auto___def_86 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6632 : forall X1:term, auto___def_86 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6633 : forall X1 X2:term, auto___def_86 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6634 : forall X1 X2:term, auto___def_86 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6635 : auto___def_86 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6636 : forall X1 X2:term, auto___def_86 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6637 : forall X1 X2:term, auto___def_86 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6638 : forall X1 X2:term, auto___def_86 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6639 : forall X1 X2:term, auto___def_86 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6640 : forall X1:term, auto___def_86 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6641 : forall X1 X2:term, auto___def_86 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6642 : auto___def_86 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6643 : auto___def_86 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6644 : auto___def_86 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6645 : forall X1 X2:term, auto___def_86 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6646 : forall X1 X2:term, auto___def_86 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6647 : forall X1:term, auto___def_86 X1 -> auto___def_119 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_86_p__def_119 1.
  intro X. case X.
   intro H. elim (rem_6635  H).
   intro H. elim (rem_6628  H).
  intros X1 X2. intro H. elim (rem_6639 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6625 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6637 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6638 X1 X2 H).
   intro H. elim (rem_6642  H).
  intros X1 X2. intro H. elim (rem_6646 X1 X2 H).
   intro H. elim (rem_6643  H).
  intros X1 X2. intro H. elim (rem_6645 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6629 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6626 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6636 X1 X2 H).
  intros X1. intro H. elim (rem_6632 X1 H).
  intros X1 X2. intro H. elim (rem_6634 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6633 X1 X2 H).
   intro H. elim (rem_2189  H).
   intro H. elim (rem_1453  H).
  intros X1 X2. intro H. elim (rem_6631 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6630 X1 X2 H).
  intros X1. intro H. elim (rem_6640 X1 H).
   intro H. elim (rem_6644  H).
  intros X1 X2. intro H. elim (rem_6641 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6627 X1 X2 H).
  exact (rem_6624 epsilon_m__def_86_p__def_119 ).
Qed.

Remark rem_6648 : (forall X:term, auto___def_85 X -> auto_testable_current X)
    -> forall X1:term, auto___def_86 X1 -> auto___def_119 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_85_ptestable_current. exact (rem_6647).
Defined.

Remark rem_6649 : (forall X:term, auto___def_85 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_86 X1 -> auto___type_19 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_85_ptestable_current. intros X1 X2.
  cut (auto___def_86 X1 -> auto___def_119 X1). tauto. exact (rem_6648 epsilon_m__def_85_ptestable_current X1).
Defined.

Remark rem_6650 : forall X2:term, auto___type_19 X2 -> auto___type_31 X2. (* Induct. *)
Proof.
  fix epsilon_m__type_19_p__type_31 1.
  intro X. case X.
   intro H. elim (rem_372  H).
   intro H. elim (rem_365  H).
  intros X1 X2. intro H. elim (rem_377 X1 X2 H).
  intros X1 X2. intro H. elim (rem_362 X1 X2 H).
  intros X1 X2. intro H. elim (rem_375 X1 X2 H).
  intros X1 X2. intro H. elim (rem_376 X1 X2 H).
   intro H. elim (rem_381  H).
  intros X1 X2. intro H. elim (rem_385 X1 X2 H).
   intro H. elim (rem_382  H).
  intros X1 X2. intro H. elim (rem_384 X1 X2 H).
  intros X1 X2. intro H. elim (rem_366 X1 X2 H).
  intros X1 X2. intro H. elim (rem_363 X1 X2 H).
  intros X1 X2. intro H. elim (rem_374 X1 X2 H).
  intros X1. intro H. elim (rem_368 X1 H).
  intros X1 X2. intro H. elim (rem_371 X1 X2 H).
  intros X1 X2. intro H. elim (rem_370 X1 X2 H).
   intro H. elim (rem_373  H).
   intro H. elim (rem_369  H).
  intros X1 X2;  exact (rem_361 epsilon_m__type_19_p__type_31 X1 X2).
  intros X1 X2. intro H. elim (rem_367 X1 X2 H).
  intros X1. intro H. elim (rem_378 X1 H).
   intro H. elim (rem_383  H).
  intros X1 X2. intro H. elim (rem_380 X1 X2 H).
  intros X1 X2. intro H. elim (rem_364 X1 X2 H).
   intro H. elim (rem_379  H).
Qed.

Remark rem_6651 : (forall X:term, auto___def_85 X -> auto_testable_current X)
    -> forall X2:term, auto___type_19 X2 -> auto___type_31 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_85_ptestable_current. exact (rem_6650).
Defined.

Remark rem_6652 : (forall X:term, auto___def_85 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_86 X1 -> auto___type_19 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_85_ptestable_current. intros X1 X2.
  cut (auto___type_19 X2 -> auto___type_31 X2). tauto. exact (rem_6651 epsilon_m__def_85_ptestable_current X2).
Defined.

Remark rem_6653 : (forall X:term, auto___def_85 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_86 X1 -> auto___type_19 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_85_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_6649 epsilon_m__def_85_ptestable_current X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_6652 epsilon_m__def_85_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6654 : (forall X:term, auto___def_85 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_86 X1 -> auto___type_19 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_85_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_6653 epsilon_m__def_85_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_85_ptestable_current A1 A2. intros. apply trans_testable_current_key_1;  tauto.
 clear  epsilon_m__def_85_ptestable_current A1 A2. tauto.
Defined.

Remark rem_6655 : (forall X:term, auto___def_85 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_85 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_85_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1457 X1 X2 H);  intros.
  apply (rem_6654 epsilon_m__def_85_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_6656 : forall X1 X2:term, auto___def_85 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6657 : forall X1 X2:term, auto___def_85 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6658 : forall X1 X2:term, auto___def_85 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6659 : auto___def_85 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6660 : forall X1 X2:term, auto___def_85 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6661 : forall X1 X2:term, auto___def_85 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6662 : forall X1 X2:term, auto___def_85 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6663 : forall X1:term, auto___def_85 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6664 : auto___def_85 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6665 : forall X1 X2:term, auto___def_85 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6666 : forall X1 X2:term, auto___def_85 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6667 : auto___def_85 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6668 : auto___def_85 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6669 : forall X1 X2:term, auto___def_85 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6670 : forall X1 X2:term, auto___def_85 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6671 : forall X1 X2:term, auto___def_85 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6672 : forall X1 X2:term, auto___def_85 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6673 : forall X1:term, auto___def_85 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6674 : auto___def_85 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6675 : forall X1 X2:term, auto___def_85 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6676 : auto___def_85 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6677 : auto___def_85 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6678 : auto___def_85 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6679 : forall X1 X2:term, auto___def_85 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6680 : forall X1:term, auto___def_85 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_85_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_6667  H).
   intro H. elim (rem_6659  H).
  intros X1 X2. intro H. elim (rem_6672 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6656 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6670 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6671 X1 X2 H).
   intro H. elim (rem_6676  H).
  intros X1 X2;  exact (rem_6655 epsilon_m__def_85_ptestable_current X1 X2).
   intro H. elim (rem_6677  H).
  intros X1 X2. intro H. elim (rem_6679 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6660 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6657 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6669 X1 X2 H).
  intros X1. intro H. elim (rem_6663 X1 H).
  intros X1 X2. intro H. elim (rem_6666 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6665 X1 X2 H).
   intro H. elim (rem_6668  H).
   intro H. elim (rem_6664  H).
  intros X1 X2. intro H. elim (rem_6662 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6661 X1 X2 H).
  intros X1. intro H. elim (rem_6673 X1 H).
   intro H. elim (rem_6678  H).
  intros X1 X2. intro H. elim (rem_6675 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6658 X1 X2 H).
   intro H. elim (rem_6674  H).
Qed.

Remark rem_6681 : forall X1 X2:term, auto___def_84 X2 -> auto___def_85 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_85 X1 -> auto_testable_current X1). tauto. exact (rem_6680 X1).
Qed.

Remark rem_6682 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current (crypt X2 X1) -> auto_testable_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_616 X2 X1 H);  intros.
  apply (rem_5657 X1 X2);  tauto.
  apply (rem_5718 X1 X2);  tauto.
  apply (rem_6161 X1 X2);  tauto.
  apply (rem_6254 X1 X2);  tauto.
  apply (rem_6383 X1 X2);  tauto.
  apply (rem_6445 X1 X2);  tauto.
  apply (rem_6510 X1 X2);  tauto.
  apply (rem_6545 X1 X2);  tauto.
  apply (rem_6582 X1 X2);  tauto.
  apply (rem_6620 X1 X2);  tauto.
  apply (rem_6681 X1 X2);  tauto.
Qed.

Remark rem_6683 : forall X1 X2:term, auto_testable_current (crypt X2 X1) -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_testable_current (crypt X2 X1) -> auto_testable_current X1). tauto. exact (rem_6682 X1 X2).
Qed.

Remark rem_6684 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_5132 X1 X2).
Qed.

Remark rem_6685 : forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1263 X1 X2 H);  intros.
  apply (rem_6684 X1 X2);  tauto.
Qed.

Remark rem_6686 : forall X2:term, auto_testable_current X2 -> auto_testable_current X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6687 : forall X2:term, auto_testable_current X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X2. intros A1.
  cut (auto_testable_current X2). 2:apply (rem_6686 X2);  assumption.
  tauto.
Qed.

Remark rem_6688 : forall X1 X2:term, auto_testable_current X2 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1.
  case (rem_6687 X2 A1). clear  A1. intros. apply trans_testable_current_cons_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_6689 : forall X1:term, auto___type_11 X1 -> auto___type_11 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6690 : forall X1 X2:term, auto___def_52 X2 -> auto___type_11 X1 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_11 X1 -> auto___type_11 X1). tauto. exact (rem_6689 X1).
Qed.

Remark rem_6691 : forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6692 : forall X1 X2:term, auto___def_52 X2 -> auto___type_11 X1 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_6691 X2).
Qed.

Remark rem_6693 : forall X1 X2:term, auto___def_52 X2 -> auto___type_11 X1 -> (auto___type_11 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_6690 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_6692 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6694 : forall X1 X2:term, auto___def_52 X2 -> auto___type_11 X1 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6693 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_old_crypt_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6695 : forall X1:term, auto___def_119 X1 -> auto___def_119 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6696 : forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_119 X1 -> auto___def_119 X1). tauto. exact (rem_6695 X1).
Qed.

Remark rem_6697 : forall X2:term, auto___type_31 X2 -> auto___type_31 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6698 : forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_31 X2 -> auto___type_31 X2). tauto. exact (rem_6697 X2).
Qed.

Remark rem_6699 : forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_6696 X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_6698 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6700 : forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6699 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_current_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6701 : forall X1 X2:term, auto___type_31 X2 -> auto___def_119 X1 -> auto_testable_current (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_119 X1 -> auto___type_31 X2 -> auto_testable_current (key X1 X2)). tauto. exact (rem_6700 X1 X2).
Qed.

Remark rem_6702 : forall X1:term, auto___def_61 X1 -> auto___def_61 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6703 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_61 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_61 X1). tauto. exact (rem_6702 X1).
Qed.

Remark rem_6704 : forall X2:term, auto___def_62 X2 -> auto___def_62 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6705 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_62 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_62 X2). tauto. exact (rem_6704 X2).
Qed.

Remark rem_6706 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_61 X1 /\ auto___def_62 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_61 X1). 2:apply (rem_6703 X1 X2);  assumption.
  cut (auto___def_62 X2). 2:apply (rem_6705 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6707 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6706 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6708 : forall X1 X2:term, auto___def_62 X2 -> auto___def_61 X1 -> auto_knows_current (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_62 X2 -> auto_knows_current (key X1 X2)). tauto. exact (rem_6707 X1 X2).
Qed.

Remark rem_6709 : forall X1:term, auto___type_27 X1 -> auto___type_27 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6710 : forall X1 X2:term, auto___def_113 X2 -> auto___type_27 X1 -> auto___type_27 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_27 X1 -> auto___type_27 X1). tauto. exact (rem_6709 X1).
Qed.

Remark rem_6711 : forall X2:term, auto___def_113 X2 -> auto___def_113 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6712 : forall X1 X2:term, auto___def_113 X2 -> auto___type_27 X1 -> auto___def_113 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_113 X2 -> auto___def_113 X2). tauto. exact (rem_6711 X2).
Qed.

Remark rem_6713 : forall X1 X2:term, auto___def_113 X2 -> auto___type_27 X1 -> (auto___type_27 X1 /\ auto___def_113 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_27 X1). 2:apply (rem_6710 X1 X2);  assumption.
  cut (auto___def_113 X2). 2:apply (rem_6712 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6714 : forall X1 X2:term, auto___def_113 X2 -> auto___type_27 X1 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6713 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_current_crypt_8;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6715 : forall X1:term, auto___def_77 X1 -> auto___def_94 X1 -> auto_agent alice -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_5526 X1)). tauto.
Qed.

Remark rem_6716 : forall X1:term, auto_agent alice -> auto___def_94 X1 -> auto___def_77 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto___def_77 X1 -> auto___def_94 X1 -> auto_agent alice -> auto_knows_current X1 -> False). tauto. exact (rem_6715 X1).
Qed.

Remark rem_6717 : forall X1 X2:term, auto_alice_key_current X1 X2 -> or_1
    (auto_agent X1 /\ auto___def_94 X2 /\ auto___def_77 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6718 : forall X1:term, auto_alice_key_current alice X1 -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_6717 alice X1 H);  intros.
  apply (rem_6716 X1);  tauto.
Qed.

Remark rem_6719 : forall X1:term, auto_alice_key_current alice X1 -> auto_knows_current X1 -> auto___query__intruder_knows_session_key_as_seen_by_alice. (* Split. *)
Proof.
  intros X1.
  cut (auto_alice_key_current alice X1 -> auto_knows_current X1 -> False). tauto.
  exact (rem_6718 X1).
Qed.

Remark rem_6720 : forall X1 X2 X3 X4:term, auto___def_83 X2 X3 X1 -> auto___def_91 X4 -> auto___def_94 X2 -> auto_agent X3 -> auto_agent X1 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_923 X1).
Qed.

Remark rem_6721 : forall X1 X2 X3 X4:term, auto___def_83 X2 X3 X1 -> auto___def_91 X4 -> auto___def_94 X2 -> auto_agent X3 -> auto_agent X1 -> auto___def_94 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_94 X2 -> auto___def_94 X2). tauto. exact (rem_3752 X2).
Qed.

Remark rem_6722 : forall X2:term, auto___def_94 X2 -> auto___def_77 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_94_p__def_77 1.
  intro X. case X.
   intro H. elim (rem_2805  H).
   intro H. elim (rem_2798  H).
  intros X1 X2. intro H. elim (rem_2810 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2795 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2808 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2809 X1 X2 H).
   intro H. elim (rem_2814  H).
  intros X1 X2. intro H. elim (rem_2818 X1 X2 H).
   intro H. elim (rem_2815  H).
  intros X1 X2. intro H. elim (rem_2817 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2799 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2796 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2807 X1 X2 H).
  intros X1. intro H. elim (rem_2801 X1 H).
  intros X1 X2. intro H. elim (rem_2804 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2803 X1 X2 H).
   intro H. elim (rem_2806  H).
   intro H. elim (rem_2802  H).
  intros X1 X2;  exact (rem_2794 epsilon_m__def_94_p__def_77 X1 X2).
  intros X1 X2. intro H. elim (rem_2800 X1 X2 H).
  intros X1. intro H. elim (rem_2811 X1 H).
   intro H. elim (rem_2816  H).
  intros X1 X2. intro H. elim (rem_2813 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2797 X1 X2 H).
   intro H. elim (rem_2812  H).
Qed.

Remark rem_6723 : forall X1 X2 X3 X4:term, auto___def_83 X2 X3 X1 -> auto___def_91 X4 -> auto___def_94 X2 -> auto_agent X3 -> auto_agent X1 -> auto___def_77 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_94 X2 -> auto___def_77 X2). tauto. exact (rem_6722 X2).
Qed.

Remark rem_6724 : forall X1 X2 X3 X4:term, auto___def_83 X2 X3 X1 -> auto___def_91 X4 -> auto___def_94 X2 -> auto_agent X3 -> auto_agent X1 -> (auto_agent X1 /\ auto___def_94 X2 /\ auto___def_77 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto_agent X1). 2:apply (rem_6720 X1 X2 X3 X4);  assumption.
  cut (auto___def_94 X2). 2:apply (rem_6721 X1 X2 X3 X4);  assumption.
  cut (auto___def_77 X2). 2:apply (rem_6723 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6725 : forall X1 X2 X3 X4:term, auto___def_83 X2 X3 X1 -> auto___def_91 X4 -> auto___def_94 X2 -> auto_agent X3 -> auto_agent X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6724 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_1;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6726 : forall X1 X2 X3 X4:term, auto___def_94 X2 -> auto_agent X3 -> auto___def_91 X4 -> auto_agent X1 -> auto___def_83 X2 X3 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_83 X2 X3 X1 -> auto___def_91 X4 -> auto___def_94 X2 -> auto_agent X3 -> auto_agent X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6725 X1 X2 X3 X4).
Qed.

Remark rem_6727 : forall X1 X2 X3 X4:term, auto___def_106 X1 X2 X3 X4 -> or_1
    (auto___def_94 X1 /\ auto_agent X2 /\ auto___def_91 X3 /\ auto_agent X4)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6728 : forall X1 X2 X3 X4:term, auto___def_106 X2 X3 X4 X1 -> auto___def_83 X2 X3 X1 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_6727 X2 X3 X4 X1 H);  intros.
  apply (rem_6726 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6729 : forall X1 X2 X3 X4:term, auto___def_83 X2 X3 X1 -> auto___def_106 X2 X3 X4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_106 X2 X3 X4 X1 -> auto___def_83 X2 X3 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6728 X1 X2 X3 X4).
Qed.

Remark rem_6730 : forall X1 X2:term, auto_knows_old X1 -> auto_testable_old X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_6731 : forall X1 X2:term, auto_testable_old X2 -> auto_knows_old X1 -> auto_testable_old X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X1 -> auto_testable_old X2 -> auto_knows_old X1). tauto. exact (rem_6730 X1 X2).
Qed.

Remark rem_6732 : forall X1 X2:term, auto_testable_old X2 -> auto_testable_old (dec X2 X1) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_97 X2 X1 H);  intros.
  apply (rem_6731 X1 X2);  tauto.
Qed.

Remark rem_6733 : forall X1 X2:term, auto_testable_old (dec X2 X1) -> auto_testable_old X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_testable_old X2 -> auto_testable_old (dec X2 X1) -> auto_knows_old X1). tauto. exact (rem_6732 X1 X2).
Qed.

Remark rem_6734 : forall X1 X2:term, auto_knows_current (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2.  case (rem_855). intros. apply trans_knows_current_passwd_old_1;  tauto.
 tauto.
Qed.

Remark rem_6735 : forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5002 X2)). tauto.
Qed.

Remark rem_6736 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5064 X2)). tauto.
Qed.

Remark rem_6737 : forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5092 X2)). tauto.
Qed.

Remark rem_6738 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current (enc X1 X2) -> auto_testable_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_669 X1 X2 H);  intros.
  apply (rem_6735 X1 X2);  tauto.
  apply (rem_5147 X1 X2);  tauto.
  apply (rem_6736 X1 X2);  tauto.
  apply (rem_6737 X1 X2);  tauto.
Qed.

Remark rem_6739 : forall X1 X2:term, auto_testable_current (enc X1 X2) -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_testable_current (enc X1 X2) -> auto_testable_current X1). tauto. exact (rem_6738 X1 X2).
Qed.

Remark rem_6740 : forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6741 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_6740 X1).
Qed.

Remark rem_6742 : forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6743 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_6742 X2).
Qed.

Remark rem_6744 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_6741 X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_6743 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6745 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6744 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6746 : forall X1 X2:term, auto___def_89 X2 -> auto___def_88 X1 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_89 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_6745 X1 X2).
Qed.

Remark rem_6747 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5144 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6748 : forall X1:term, auto_knows_old (p X1) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_2442 X1 H);  intros.
  apply (rem_276 X1);  tauto.
Qed.

Remark rem_6749 : forall X1:term, auto_knows_current X1 -> auto_knows_current (p X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_353 X1 A1). clear  A1. intros. apply trans_knows_current_p_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_6750 : forall X1 X2:term, auto_testable_old X1 -> auto_testable_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1.
  case (rem_5130 X1 A1). clear  A1. intros. apply trans_testable_old_cons_2;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_6751 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_testable_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X1 -> auto_testable_old X1). tauto. exact (rem_4812 X1).
Qed.

Remark rem_6752 : forall X1 X2:term, auto_testable_old X2 -> auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X1 -> auto_testable_old X2 -> auto_testable_old X1). tauto. exact (rem_6751 X1 X2).
Qed.

Remark rem_6753 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old (dec X2 X1) -> auto_testable_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_97 X2 X1 H);  intros.
  apply (rem_6752 X1 X2);  tauto.
Qed.

Remark rem_6754 : forall X1 X2:term, auto_testable_old (dec X2 X1) -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_testable_old (dec X2 X1) -> auto_testable_old X1). tauto. exact (rem_6753 X1 X2).
Qed.

Remark rem_6755 : forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6706 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6756 : forall X1 X2:term, auto___def_62 X2 -> auto___def_61 X1 -> auto_knows_old (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_62 X2 -> auto_knows_old (key X1 X2)). tauto. exact (rem_6755 X1 X2).
Qed.

Remark rem_6757 : forall X1 X2:term, auto___def_5 X2 X1 -> auto___def_6 X2 -> auto_knows_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_895 X2)). tauto.
Qed.

Remark rem_6758 : forall X1 X2:term, auto___def_48 X2 -> auto___type_9 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  tauto.
Qed.

Remark rem_6759 : forall X1 X2:term, auto___def_48 X2 -> auto___type_9 X1 -> auto_bob_key_old X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6758 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_bob_key_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6760 : forall X1 X2:term, auto___def_71 X2 -> auto___def_72 X1 -> auto_testable_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5320 X2)). tauto.
Qed.

Remark rem_6761 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_testable_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto_testable_current X1). tauto. exact (rem_6381 X1).
Qed.

Remark rem_6762 : forall X1 X2:term, auto___def_79 X2 -> auto___def_80 X1 -> auto_testable_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5502 X2)). tauto.
Qed.

Remark rem_6763 : forall X1 X2:term, auto___def_75 X2 -> auto___def_76 X1 -> auto_testable_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_5608 X2)). tauto.
Qed.

Remark rem_6764 : forall X1 X2:term, auto_knows_current (enc X2 X1) -> auto_testable_current X2 -> auto_testable_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1031 X2 X1 H);  intros.
  apply (rem_6760 X1 X2);  tauto.
  apply (rem_6761 X1 X2);  tauto.
  apply (rem_6762 X1 X2);  tauto.
  apply (rem_6763 X1 X2);  tauto.
Qed.

Remark rem_6765 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current (dec X1 X2) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1010 X1 X2 H);  intros.
  apply (rem_5005 X1 X2);  tauto.
Qed.

Remark rem_6766 : forall X1 X2:term, auto_knows_current (dec X1 X2) -> auto_knows_current X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current (dec X1 X2) -> auto_knows_current X1). tauto. exact (rem_6765 X1 X2).
Qed.

Remark rem_6767 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_1414 X2).
Qed.

Remark rem_6768 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5004 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6767 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6769 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6768 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6770 : forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6771 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_6770 X1).
Qed.

Remark rem_6772 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_1382 X2).
Qed.

Remark rem_6773 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_6771 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_6772 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6774 : forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto_knows_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6773 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_enc_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6775 : forall X1 X2:term, auto___def_80 X2 -> auto___def_79 X1 -> auto_knows_current (enc X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_80 X2 -> auto_knows_current (enc X1 X2)). tauto. exact (rem_6774 X1 X2).
Qed.

Remark rem_6776 : forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6777 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_6776 X1).
Qed.

Remark rem_6778 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_925 X2).
Qed.

Remark rem_6779 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_6777 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_6778 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6780 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6779 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_key_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6781 : forall X1 X2:term, auto_agent X2 -> auto___def_51 X1 -> auto_knows_old (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_51 X1 -> auto_agent X2 -> auto_knows_old (key X1 X2)). tauto. exact (rem_6780 X1 X2).
Qed.

Remark rem_6782 : forall X1:term, auto_knows_current X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_353 X1 A1). clear  A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_6783 : forall X1 X2:term, auto_testable_old X1 -> auto_knows_old X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_testable_old X1 -> auto_testable_old X1). tauto. exact (rem_5156 X1 X2).
Qed.

Remark rem_6784 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old (dec X1 X2) -> auto_testable_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_97 X1 X2 H);  intros.
  apply (rem_6783 X1 X2);  tauto.
Qed.

Remark rem_6785 : forall X1 X2:term, auto_testable_old (dec X1 X2) -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_testable_old (dec X1 X2) -> auto_testable_old X1). tauto. exact (rem_6784 X1 X2).
Qed.

Remark rem_6786 : auto_knows_old nil. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans_knows_old_nil_1;  tauto.
 tauto.
Qed.

Remark rem_6787 : forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6788 : forall X1 X2:term, auto___def_44 X2 -> auto___type_7 X1 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_6787 X1).
Qed.

Remark rem_6789 : forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6790 : forall X1 X2:term, auto___def_44 X2 -> auto___type_7 X1 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_6789 X2).
Qed.

Remark rem_6791 : forall X1 X2:term, auto___def_44 X2 -> auto___type_7 X1 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_6788 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_6790 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6792 : forall X1 X2:term, auto___def_44 X2 -> auto___type_7 X1 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6791 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6793 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current X1 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_1414 X2).
Qed.

Remark rem_6794 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current X1 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_5146 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6793 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6795 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current X1 -> auto_testable_current (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6794 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_current_dec_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6796 : forall X1:term, auto_testable_old (p X1) -> auto_testable_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_88 X1 H);  intros.
  apply (rem_5129 X1);  tauto.
Qed.

Remark rem_6797 : (forall X:term, auto___def_28 X -> auto___def_36 X)
    -> forall X1:term, auto___type_5 X1 -> auto___type_6 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_28_p__def_36. exact (rem_3305).
Defined.

Remark rem_6798 : (forall X:term, auto___def_28 X -> auto___def_36 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> auto___type_6 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_28_p__def_36. intros X1 X2.
  cut (auto___type_5 X1 -> auto___type_6 X1). tauto. exact (rem_6797 epsilon_m__def_28_p__def_36 X1).
Defined.

Remark rem_6799 : (forall X:term, auto___def_28 X -> auto___def_36 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_38 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_28_p__def_36. exact (rem_3399).
Defined.

Remark rem_6800 : (forall X:term, auto___def_28 X -> auto___def_36 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> auto___def_38 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_28_p__def_36. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_38 X2). tauto. exact (rem_6799 epsilon_m__def_28_p__def_36 X2).
Defined.

Remark rem_6801 : (forall X:term, auto___def_28 X -> auto___def_36 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> (auto___type_6 X1 /\ auto___def_38 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_28_p__def_36. intros X1 X2. intros A1 A2.
  cut (auto___type_6 X1). 2:apply (rem_6798 epsilon_m__def_28_p__def_36 X1 X2);  assumption.
  cut (auto___def_38 X2). 2:apply (rem_6800 epsilon_m__def_28_p__def_36 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6802 : (forall X:term, auto___def_28 X -> auto___def_36 X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_30 X2 -> auto___def_36 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_28_p__def_36. intros X1 X2. intros A1 A2.
  case (rem_6801 epsilon_m__def_28_p__def_36 X1 X2 A1 A2). clear  epsilon_m__def_28_p__def_36 A1 A2. intros. apply trans___def_36_cons_1;  tauto.
 clear  epsilon_m__def_28_p__def_36 A1 A2. tauto.
Defined.

Remark rem_6803 : (forall X:term, auto___def_28 X -> auto___def_36 X)
    -> forall X1 X2:term, auto___def_28 (cons X1 X2) -> auto___def_36 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_28_p__def_36. intros X1 X2. intro H. intros.
  elim (rem_3404 X1 X2 H);  intros.
  apply (rem_6802 epsilon_m__def_28_p__def_36 X1 X2);  tauto.
Defined.

Remark rem_6804 : forall X1:term, auto___def_28 X1 -> auto___def_36 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_28_p__def_36 1.
  intro X. case X.
   intro H. elim (rem_3417  H).
   intro H. elim (rem_3409  H).
  intros X1 X2;  exact (rem_6803 epsilon_m__def_28_p__def_36 X1 X2).
  intros X1 X2. intro H. elim (rem_3406 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3420 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3421 X1 X2 H).
   intro H. elim (rem_3425  H).
  intros X1 X2. intro H. elim (rem_3429 X1 X2 H).
   intro H. elim (rem_3426  H).
  intros X1 X2. intro H. elim (rem_3428 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3410 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3407 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3419 X1 X2 H).
  intros X1. intro H. elim (rem_3413 X1 H).
  intros X1 X2. intro H. elim (rem_3416 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3415 X1 X2 H).
   intro H. elim (rem_3418  H).
   intro H. elim (rem_3414  H).
  intros X1 X2. intro H. elim (rem_3412 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3411 X1 X2 H).
  intros X1. intro H. elim (rem_3422 X1 H).
   intro H. elim (rem_3427  H).
  intros X1 X2. intro H. elim (rem_3424 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3408 X1 X2 H).
   intro H. elim (rem_3423  H).
Qed.

Remark rem_6805 : forall X1 X2:term, auto___def_28 X1 -> auto___def_29 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_28 X1 -> auto___def_36 X1). tauto. exact (rem_6804 X1).
Qed.

Remark rem_6806 : (forall X:term, auto___def_33 X -> auto___def_41 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_33_p__def_41.  tauto.
Defined.

Remark rem_6807 : (forall X:term, auto___def_33 X -> auto___def_41 X)
    -> auto___def_41 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_33_p__def_41.  case (rem_6806 epsilon_m__def_33_p__def_41). clear  epsilon_m__def_33_p__def_41. intros. apply trans___def_41_sym_1;  tauto.
 clear  epsilon_m__def_33_p__def_41. tauto.
Defined.

Remark rem_6808 : auto___def_33 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6809 : (forall X:term, auto___def_33 X -> auto___def_41 X)
    -> auto___def_33 sym -> auto___def_41 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_33_p__def_41. intro H. intros.
  elim (rem_6808 H);  intros.
  apply (rem_6807 epsilon_m__def_33_p__def_41);  tauto.
Defined.

Remark rem_6810 : forall X1 X2:term, auto___def_33 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6811 : forall X1 X2:term, auto___def_33 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6812 : forall X1 X2:term, auto___def_33 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6813 : auto___def_33 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6814 : forall X1 X2:term, auto___def_33 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6815 : forall X1 X2:term, auto___def_33 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6816 : forall X1 X2:term, auto___def_33 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6817 : forall X1:term, auto___def_33 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6818 : auto___def_33 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6819 : forall X1 X2:term, auto___def_33 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6820 : forall X1 X2:term, auto___def_33 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6821 : auto___def_33 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6822 : auto___def_33 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6823 : forall X1 X2:term, auto___def_33 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6824 : forall X1 X2:term, auto___def_33 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6825 : forall X1 X2:term, auto___def_33 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6826 : forall X1 X2:term, auto___def_33 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6827 : forall X1:term, auto___def_33 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6828 : forall X1 X2:term, auto___def_33 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6829 : auto___def_33 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6830 : auto___def_33 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6831 : auto___def_33 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6832 : forall X1 X2:term, auto___def_33 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6833 : forall X1 X2:term, auto___def_33 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6834 : forall X1:term, auto___def_33 X1 -> auto___def_41 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_33_p__def_41 1.
  intro X. case X.
   intro H. elim (rem_6821  H).
   intro H. elim (rem_6813  H).
  intros X1 X2. intro H. elim (rem_6826 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6810 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6824 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6825 X1 X2 H).
   intro H. elim (rem_6829  H).
  intros X1 X2. intro H. elim (rem_6833 X1 X2 H).
   intro H. elim (rem_6830  H).
  intros X1 X2. intro H. elim (rem_6832 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6814 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6811 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6823 X1 X2 H).
  intros X1. intro H. elim (rem_6817 X1 H).
  intros X1 X2. intro H. elim (rem_6820 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6819 X1 X2 H).
   intro H. elim (rem_6822  H).
   intro H. elim (rem_6818  H).
  intros X1 X2. intro H. elim (rem_6816 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6815 X1 X2 H).
  intros X1. intro H. elim (rem_6827 X1 H).
   intro H. elim (rem_6831  H).
  intros X1 X2. intro H. elim (rem_6828 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6812 X1 X2 H).
  exact (rem_6809 epsilon_m__def_33_p__def_41 ).
Qed.

Remark rem_6835 : (forall X:term, auto___def_29 X -> auto___def_37 X)
    -> forall X1:term, auto___def_33 X1 -> auto___def_41 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_29_p__def_37. exact (rem_6834).
Defined.

Remark rem_6836 : (forall X:term, auto___def_29 X -> auto___def_37 X)
    -> forall X1 X2:term, auto___def_33 X1 -> auto___def_34 X2 -> auto___def_41 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_29_p__def_37. intros X1 X2.
  cut (auto___def_33 X1 -> auto___def_41 X1). tauto. exact (rem_6835 epsilon_m__def_29_p__def_37 X1).
Defined.

Remark rem_6837 : (forall X:term, auto___def_34 X -> auto___def_42 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6838 : (forall X:term, auto___def_34 X -> auto___def_42 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_34_p__def_42. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_6837 epsilon_m__def_34_p__def_42 X1);  assumption.
  tauto.
Defined.

Remark rem_6839 : (forall X:term, auto___def_34 X -> auto___def_42 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___def_42 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_34_p__def_42. intros X1 X2. intros A1.
  case (rem_6838 epsilon_m__def_34_p__def_42 X1 A1). clear  epsilon_m__def_34_p__def_42 A1. intros. apply trans___def_42_r_old_1;  tauto.
 clear  epsilon_m__def_34_p__def_42 A1. tauto.
Defined.

Remark rem_6840 : forall X1 X2:term, auto___def_34 (r_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6841 : (forall X:term, auto___def_34 X -> auto___def_42 X)
    -> forall X1 X2:term, auto___def_34 (r_old X1 X2) -> auto___def_42 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_34_p__def_42. intros X1 X2. intro H. intros.
  elim (rem_6840 X1 X2 H);  intros.
  apply (rem_6839 epsilon_m__def_34_p__def_42 X1 X2);  tauto.
Defined.

Remark rem_6842 : forall X1 X2:term, auto___def_34 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6843 : forall X1 X2:term, auto___def_34 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6844 : forall X1 X2:term, auto___def_34 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6845 : auto___def_34 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6846 : forall X1 X2:term, auto___def_34 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6847 : forall X1 X2:term, auto___def_34 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6848 : forall X1:term, auto___def_34 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6849 : auto___def_34 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6850 : forall X1 X2:term, auto___def_34 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6851 : forall X1 X2:term, auto___def_34 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6852 : auto___def_34 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6853 : auto___def_34 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6854 : forall X1 X2:term, auto___def_34 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6855 : forall X1 X2:term, auto___def_34 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6856 : forall X1 X2:term, auto___def_34 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6857 : forall X1 X2:term, auto___def_34 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6858 : forall X1:term, auto___def_34 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6859 : auto___def_34 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6860 : forall X1 X2:term, auto___def_34 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6861 : auto___def_34 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6862 : auto___def_34 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6863 : auto___def_34 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6864 : forall X1 X2:term, auto___def_34 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6865 : forall X1 X2:term, auto___def_34 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6866 : forall X2:term, auto___def_34 X2 -> auto___def_42 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_34_p__def_42 1.
  intro X. case X.
   intro H. elim (rem_6852  H).
   intro H. elim (rem_6845  H).
  intros X1 X2. intro H. elim (rem_6857 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6842 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6855 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6856 X1 X2 H).
   intro H. elim (rem_6861  H).
  intros X1 X2. intro H. elim (rem_6865 X1 X2 H).
   intro H. elim (rem_6862  H).
  intros X1 X2. intro H. elim (rem_6864 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6846 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6843 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6854 X1 X2 H).
  intros X1. intro H. elim (rem_6848 X1 H).
  intros X1 X2. intro H. elim (rem_6851 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6850 X1 X2 H).
   intro H. elim (rem_6853  H).
   intro H. elim (rem_6849  H).
  intros X1 X2. intro H. elim (rem_6847 X1 X2 H).
  intros X1 X2;  exact (rem_6841 epsilon_m__def_34_p__def_42 X1 X2).
  intros X1. intro H. elim (rem_6858 X1 H).
   intro H. elim (rem_6863  H).
  intros X1 X2. intro H. elim (rem_6860 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6844 X1 X2 H).
   intro H. elim (rem_6859  H).
Qed.

Remark rem_6867 : (forall X:term, auto___def_29 X -> auto___def_37 X)
    -> forall X2:term, auto___def_34 X2 -> auto___def_42 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_29_p__def_37. exact (rem_6866).
Defined.

Remark rem_6868 : (forall X:term, auto___def_29 X -> auto___def_37 X)
    -> forall X1 X2:term, auto___def_33 X1 -> auto___def_34 X2 -> auto___def_42 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_29_p__def_37. intros X1 X2.
  cut (auto___def_34 X2 -> auto___def_42 X2). tauto. exact (rem_6867 epsilon_m__def_29_p__def_37 X2).
Defined.

Remark rem_6869 : (forall X:term, auto___def_29 X -> auto___def_37 X)
    -> forall X1 X2:term, auto___def_33 X1 -> auto___def_34 X2 -> (auto___def_41 X1 /\ auto___def_42 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_29_p__def_37. intros X1 X2. intros A1 A2.
  cut (auto___def_41 X1). 2:apply (rem_6836 epsilon_m__def_29_p__def_37 X1 X2);  assumption.
  cut (auto___def_42 X2). 2:apply (rem_6868 epsilon_m__def_29_p__def_37 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6870 : (forall X:term, auto___def_29 X -> auto___def_37 X)
    -> forall X1 X2:term, auto___def_33 X1 -> auto___def_34 X2 -> auto___def_37 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_29_p__def_37. intros X1 X2. intros A1 A2.
  case (rem_6869 epsilon_m__def_29_p__def_37 X1 X2 A1 A2). clear  epsilon_m__def_29_p__def_37 A1 A2. intros. apply trans___def_37_key_1;  tauto.
 clear  epsilon_m__def_29_p__def_37 A1 A2. tauto.
Defined.

Remark rem_6871 : forall X1 X2:term, auto___def_29 (key X1 X2) -> or_1
    (auto___def_33 X1 /\ auto___def_34 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6872 : (forall X:term, auto___def_29 X -> auto___def_37 X)
    -> forall X1 X2:term, auto___def_29 (key X1 X2) -> auto___def_37 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_29_p__def_37. intros X1 X2. intro H. intros.
  elim (rem_6871 X1 X2 H);  intros.
  apply (rem_6870 epsilon_m__def_29_p__def_37 X1 X2);  tauto.
Defined.

Remark rem_6873 : forall X1 X2:term, auto___def_29 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6874 : forall X1 X2:term, auto___def_29 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6875 : forall X1 X2:term, auto___def_29 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6876 : auto___def_29 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6877 : forall X1 X2:term, auto___def_29 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6878 : forall X1 X2:term, auto___def_29 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6879 : forall X1 X2:term, auto___def_29 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6880 : forall X1:term, auto___def_29 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6881 : auto___def_29 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6882 : forall X1 X2:term, auto___def_29 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6883 : forall X1 X2:term, auto___def_29 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6884 : auto___def_29 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6885 : auto___def_29 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6886 : forall X1 X2:term, auto___def_29 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6887 : forall X1 X2:term, auto___def_29 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6888 : forall X1 X2:term, auto___def_29 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6889 : forall X1 X2:term, auto___def_29 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6890 : forall X1:term, auto___def_29 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6891 : auto___def_29 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6892 : forall X1 X2:term, auto___def_29 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6893 : auto___def_29 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6894 : auto___def_29 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6895 : auto___def_29 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6896 : forall X1 X2:term, auto___def_29 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6897 : forall X2:term, auto___def_29 X2 -> auto___def_37 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_29_p__def_37 1.
  intro X. case X.
   intro H. elim (rem_6884  H).
   intro H. elim (rem_6876  H).
  intros X1 X2. intro H. elim (rem_6889 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6873 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6887 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6888 X1 X2 H).
   intro H. elim (rem_6893  H).
  intros X1 X2;  exact (rem_6872 epsilon_m__def_29_p__def_37 X1 X2).
   intro H. elim (rem_6894  H).
  intros X1 X2. intro H. elim (rem_6896 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6877 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6874 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6886 X1 X2 H).
  intros X1. intro H. elim (rem_6880 X1 H).
  intros X1 X2. intro H. elim (rem_6883 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6882 X1 X2 H).
   intro H. elim (rem_6885  H).
   intro H. elim (rem_6881  H).
  intros X1 X2. intro H. elim (rem_6879 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6878 X1 X2 H).
  intros X1. intro H. elim (rem_6890 X1 H).
   intro H. elim (rem_6895  H).
  intros X1 X2. intro H. elim (rem_6892 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6875 X1 X2 H).
   intro H. elim (rem_6891  H).
Qed.

Remark rem_6898 : forall X1 X2:term, auto___def_28 X1 -> auto___def_29 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_29 X2 -> auto___def_37 X2). tauto. exact (rem_6897 X2).
Qed.

Remark rem_6899 : forall X1 X2:term, auto___def_28 X1 -> auto___def_29 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_6805 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_6898 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6900 : forall X1 X2:term, auto___def_28 X1 -> auto___def_29 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6899 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6901 : forall X1 X2:term, auto___def_29 X2 -> auto___def_28 X1 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_28 X1 -> auto___def_29 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_6900 X1 X2).
Qed.

Remark rem_6902 : forall X1 X2:term, auto_testable_current X2 -> auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto_testable_current X2 -> auto_testable_current X1). tauto. exact (rem_6761 X1 X2).
Qed.

Remark rem_6903 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current (dec X2 X1) -> auto_testable_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_648 X2 X1 H);  intros.
  apply (rem_6902 X1 X2);  tauto.
Qed.

Remark rem_6904 : forall X1 X2:term, auto_testable_current (dec X2 X1) -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_testable_current (dec X2 X1) -> auto_testable_current X1). tauto. exact (rem_6903 X1 X2).
Qed.

Remark rem_6905 : forall X1 X2:term, auto_knows_old (dec X2 X1) -> auto_testable_old X2 -> auto_testable_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_2448 X2 X1 H);  intros.
  apply (rem_6751 X1 X2);  tauto.
Qed.

Remark rem_6906 : forall X1:term, auto___type_26 X1 -> auto___type_26 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6907 : forall X1 X2:term, auto___def_111 X2 -> auto___type_26 X1 -> auto___type_26 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_26 X1 -> auto___type_26 X1). tauto. exact (rem_6906 X1).
Qed.

Remark rem_6908 : forall X2:term, auto___def_111 X2 -> auto___def_111 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6909 : forall X1 X2:term, auto___def_111 X2 -> auto___type_26 X1 -> auto___def_111 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_111 X2 -> auto___def_111 X2). tauto. exact (rem_6908 X2).
Qed.

Remark rem_6910 : forall X1 X2:term, auto___def_111 X2 -> auto___type_26 X1 -> (auto___type_26 X1 /\ auto___def_111 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_26 X1). 2:apply (rem_6907 X1 X2);  assumption.
  cut (auto___def_111 X2). 2:apply (rem_6909 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6911 : forall X1 X2:term, auto___def_111 X2 -> auto___type_26 X1 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6910 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_current_crypt_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6912 : forall X1 X2:term, auto___def_67 X2 X1 -> auto___def_68 X2 -> auto_knows_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_3645 X2)). tauto.
Qed.

Remark rem_6913 : forall X1:term, auto_testable_current X1 -> auto_testable_current (p X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_5135 X1 A1). clear  A1. intros. apply trans_testable_current_p_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_6914 : forall X1:term, auto_testable_current (s X1) -> auto_testable_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_678 X1 H);  intros.
  apply (rem_5134 X1);  tauto.
Qed.

Remark rem_6915 : forall X1:term, auto_testable_current X1 -> auto_testable_current (s X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_5135 X1 A1). clear  A1. intros. apply trans_testable_current_s_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_6916 : forall X1 X2:term, auto_testable_current X2 -> auto_testable_current (dec X2 X1) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_648 X2 X1 H);  intros.
  apply (rem_5323 X1 X2);  tauto.
Qed.

Remark rem_6917 : forall X1 X2:term, auto_testable_current (dec X2 X1) -> auto_testable_current X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_testable_current X2 -> auto_testable_current (dec X2 X1) -> auto_knows_current X1). tauto. exact (rem_6916 X1 X2).
Qed.

Remark rem_6918 : forall X1:term, auto___def_15 X1 -> auto___def_15 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6919 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_15 X1 -> auto___def_15 X1). tauto. exact (rem_6918 X1).
Qed.

Remark rem_6920 : forall X2:term, auto___def_16 X2 -> auto___def_16 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6921 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto___def_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_16 X2 -> auto___def_16 X2). tauto. exact (rem_6920 X2).
Qed.

Remark rem_6922 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> (auto___def_15 X1 /\ auto___def_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_15 X1). 2:apply (rem_6919 X1 X2);  assumption.
  cut (auto___def_16 X2). 2:apply (rem_6921 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6923 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_knows_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6922 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_enc_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6924 : forall X1 X2:term, auto___def_16 X2 -> auto___def_15 X1 -> auto_knows_old (enc X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_15 X1 -> auto___def_16 X2 -> auto_knows_old (enc X1 X2)). tauto. exact (rem_6923 X1 X2).
Qed.

Remark rem_6925 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current X1 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6794 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6926 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_17 X1 -> auto___type_2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_6927 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_6928 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_6929 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_6930 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___type_22 X1 -> auto___def_104 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_6931 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_88 X1 -> auto___def_89 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_6932 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_6933 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_6934 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_84 X1 -> auto___def_85 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_803 X1 X2 H);  intros.
Defined.

Remark rem_6935 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_71 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_987 X1 X2 H);  intros.
  apply (rem_6926 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6927 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6928 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6929 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6930 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6931 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6932 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6933 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6934 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6936 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> auto___def_71 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intro H. intros.
  elim (rem_806 H);  intros.
Defined.

Remark rem_6937 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> auto_knows_current bob -> auto___def_71 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intro H. intros.
  elim (rem_991 H);  intros.
  apply (rem_6936 epsilon_mknows_current_m__def_71);  tauto.
Defined.

Remark rem_6938 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_807 X1 X2 H);  intros.
Defined.

Remark rem_6939 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_old X1 X2) -> auto___def_71 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_994 X1 X2 H);  intros.
  apply (rem_6938 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6940 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_71 (p X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1. intro H. intros.
  elim (rem_810 X1 H);  intros.
Defined.

Remark rem_6941 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto_knows_current (p X1) -> auto___def_71 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1. intro H. intros.
  elim (rem_998 X1 H);  intros.
  apply (rem_6940 epsilon_mknows_current_m__def_71 X1);  tauto.
Defined.

Remark rem_6942 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_812 X1 X2 H);  intros.
Defined.

Remark rem_6943 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_knows_current (passwd_old X1 X2) -> auto___def_71 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_1001 X1 X2 H);  intros.
  apply (rem_6942 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6944 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> auto___def_71 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intro H. intros.
  elim (rem_814 H);  intros.
Defined.

Remark rem_6945 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> auto_knows_current alice -> auto___def_71 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intro H. intros.
  elim (rem_1004 H);  intros.
  apply (rem_6944 epsilon_mknows_current_m__def_71);  tauto.
Defined.

Remark rem_6946 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_816 X1 X2 H);  intros.
Defined.

Remark rem_6947 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_knows_current (nonceb_old X1 X2) -> auto___def_71 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_1007 X1 X2 H);  intros.
  apply (rem_6946 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6948 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (dec X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_817 X1 X2 H);  intros.
Defined.

Remark rem_6949 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_knows_current (dec X1 X2) -> auto___def_71 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_1010 X1 X2 H);  intros.
  apply (rem_6948 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6950 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (enc X1 X2) -> auto___def_71 X1 -> auto___def_72 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_818 X1 X2 H);  intros.
Defined.

Remark rem_6951 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (enc X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_818 X1 X2 H);  intros.
Defined.

Remark rem_6952 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (enc X1 X2) -> auto___def_79 X1 -> auto___def_80 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_818 X1 X2 H);  intros.
Defined.

Remark rem_6953 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (enc X1 X2) -> auto___def_75 X1 -> auto___def_76 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_818 X1 X2 H);  intros.
Defined.

Remark rem_6954 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_knows_current (enc X1 X2) -> auto___def_71 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_1031 X1 X2 H);  intros.
  apply (rem_6950 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6951 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6952 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6953 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6955 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (cons X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_819 X1 X2 H);  intros.
Defined.

Remark rem_6956 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___def_71 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_1034 X1 X2 H);  intros.
  apply (rem_6955 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6957 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_71 (s X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1. intro H. intros.
  elim (rem_820 X1 H);  intros.
Defined.

Remark rem_6958 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto___def_71 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1. intro H. intros.
  elim (rem_1037 X1 H);  intros.
  apply (rem_6957 epsilon_mknows_current_m__def_71 X1);  tauto.
Defined.

Remark rem_6959 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> auto___def_71 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intro H. intros.
  elim (rem_823 H);  intros.
Defined.

Remark rem_6960 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> auto_knows_current i -> auto___def_71 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intro H. intros.
  elim (rem_1040 H);  intros.
  apply (rem_6959 epsilon_mknows_current_m__def_71);  tauto.
Defined.

Remark rem_6961 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> auto___def_71 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intro H. intros.
  elim (rem_824 H);  intros.
Defined.

Remark rem_6962 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> auto_knows_current nil -> auto___def_71 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intro H. intros.
  elim (rem_1043 H);  intros.
  apply (rem_6961 epsilon_mknows_current_m__def_71);  tauto.
Defined.

Remark rem_6963 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> auto___def_71 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intro H. intros.
  elim (rem_825 H);  intros.
Defined.

Remark rem_6964 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> auto_knows_current server -> auto___def_71 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intro H. intros.
  elim (rem_1046 H);  intros.
  apply (rem_6963 epsilon_mknows_current_m__def_71);  tauto.
Defined.

Remark rem_6965 : (forall X:term, auto___def_61 X -> auto___def_12 X -> False)
    -> auto___def_12 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_12. intro H. intros.
  elim (rem_2149 H);  intros.
Defined.

Remark rem_6966 : (forall X:term, auto___def_61 X -> auto___def_12 X -> False)
    -> auto___def_61 prv -> auto___def_12 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_12. intro H. intros.
  elim (rem_4469 H);  intros.
  apply (rem_6965 epsilon_m__def_61_m__def_12);  tauto.
Defined.

Remark rem_6967 : forall X1:term, auto___def_61 X1 -> auto___def_12 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_61_m__def_12 1.
  intro X. case X.
   intro H. elim (rem_4482  H).
   intro H. elim (rem_4474  H).
  intros X1 X2. intro H. elim (rem_4486 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4484 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4485 X1 X2 H).
   intro H. elim (rem_4489  H).
  intros X1 X2. intro H. elim (rem_4493 X1 X2 H).
   intro H. elim (rem_4490  H).
  intros X1 X2. intro H. elim (rem_4492 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4475 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4472 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4483 X1 X2 H).
  intros X1. intro H. elim (rem_4478 X1 H).
  intros X1 X2. intro H. elim (rem_4481 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4480 X1 X2 H).
  exact (rem_6966 epsilon_m__def_61_m__def_12 ).
   intro H. elim (rem_4479  H).
  intros X1 X2. intro H. elim (rem_4477 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4476 X1 X2 H).
  intros X1. intro H. elim (rem_4487 X1 H).
   intro H. elim (rem_4491  H).
  intros X1 X2. intro H. elim (rem_4488 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4473 X1 X2 H).
   intro H. elim (rem_1309  H).
Qed.

Remark rem_6968 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_61 X1 -> auto___def_12 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_71. exact (rem_6967).
Defined.

Remark rem_6969 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_62 X2 -> auto___def_12 X1 -> auto___def_73 X2 -> auto___def_61 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_12 X1 -> False). clear  epsilon_mknows_current_m__def_71. tauto.
  exact (rem_6968 epsilon_mknows_current_m__def_71 X1).
Defined.

Remark rem_6970 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (key X1 X2) -> auto___def_61 X1 -> auto___def_62 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_801 X1 X2 H);  intros.
  apply (rem_6969 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6971 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X2:term, auto___def_73 X2 -> auto_agent X2 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_71. exact (rem_5309).
Defined.

Remark rem_6972 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_73 X2 -> auto___def_51 X1 -> auto_agent X2 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2.
  cut (auto___def_73 X2 -> auto_agent X2 -> False). clear  epsilon_mknows_current_m__def_71. tauto.
  exact (rem_6971 epsilon_mknows_current_m__def_71 X2).
Defined.

Remark rem_6973 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_801 X1 X2 H);  intros.
  apply (rem_6972 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6974 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X2:term, auto___def_73 X2 -> auto___def_13 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_71. exact (rem_5315).
Defined.

Remark rem_6975 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_73 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2.
  cut (auto___def_73 X2 -> auto___def_13 X2 -> False). clear  epsilon_mknows_current_m__def_71. tauto.
  exact (rem_6974 epsilon_mknows_current_m__def_71 X2).
Defined.

Remark rem_6976 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (key X1 X2) -> auto___def_12 X1 -> auto___def_13 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_801 X1 X2 H);  intros.
  apply (rem_6975 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6977 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___def_71 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_1066 X1 X2 H);  intros.
  apply (rem_6970 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6973 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_6976 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_6978 : forall X1:term, auto_knows_current X1 -> auto___def_71 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_current_m__def_71 1.
  intro X. case X.
  exact (rem_6945 epsilon_mknows_current_m__def_71 ).
  exact (rem_6937 epsilon_mknows_current_m__def_71 ).
  intros X1 X2;  exact (rem_6956 epsilon_mknows_current_m__def_71 X1 X2).
  intros X1 X2;  exact (rem_6935 epsilon_mknows_current_m__def_71 X1 X2).
  intros X1 X2;  exact (rem_6949 epsilon_mknows_current_m__def_71 X1 X2).
  intros X1 X2;  exact (rem_6954 epsilon_mknows_current_m__def_71 X1 X2).
  exact (rem_6960 epsilon_mknows_current_m__def_71 ).
  intros X1 X2;  exact (rem_6977 epsilon_mknows_current_m__def_71 X1 X2).
  exact (rem_6962 epsilon_mknows_current_m__def_71 ).
  intros X1 X2. intro H. elim (rem_1077 X1 X2 H).
  intros X1 X2;  exact (rem_6939 epsilon_mknows_current_m__def_71 X1 X2).
  intros X1 X2. intro H. elim (rem_1068 X1 X2 H).
  intros X1 X2;  exact (rem_6947 epsilon_mknows_current_m__def_71 X1 X2).
  intros X1;  exact (rem_6941 epsilon_mknows_current_m__def_71 X1).
  intros X1 X2. intro H. elim (rem_1073 X1 X2 H).
  intros X1 X2;  exact (rem_6943 epsilon_mknows_current_m__def_71 X1 X2).
   intro H. elim (rem_1074  H).
   intro H. elim (rem_1072  H).
  intros X1 X2. intro H. elim (rem_1071 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1070 X1 X2 H).
  intros X1;  exact (rem_6958 epsilon_mknows_current_m__def_71 X1).
  exact (rem_6964 epsilon_mknows_current_m__def_71 ).
  intros X1 X2. intro H. elim (rem_1076 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1069 X1 X2 H).
   intro H. elim (rem_1075  H).
Qed.

Remark rem_6979 : forall X1 X2:term, auto___def_71 X2 -> auto___def_72 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_6978 X2)). tauto.
Qed.

Remark rem_6980 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___def_17 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_79_mknows_current. exact (rem_5326).
Defined.

Remark rem_6981 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___type_2 X2 -> auto___def_17 X1 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_17 X1 -> False). clear  epsilon_m__def_79_mknows_current. tauto.
  exact (rem_6980 epsilon_m__def_79_mknows_current X1).
Defined.

Remark rem_6982 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___def_36 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_79_mknows_current. exact (rem_5332).
Defined.

Remark rem_6983 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_36 X1 -> False). clear  epsilon_m__def_79_mknows_current. tauto.
  exact (rem_6982 epsilon_m__def_79_mknows_current X1).
Defined.

Remark rem_6984 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_79_mknows_current. exact (rem_5339).
Defined.

Remark rem_6985 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_82 X2 -> auto___def_22 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_21 X1 -> False). clear  epsilon_m__def_79_mknows_current. tauto.
  exact (rem_6984 epsilon_m__def_79_mknows_current X1).
Defined.

Remark rem_6986 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto_knows_current X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_79_mknows_current. exact (rem_5352).
Defined.

Remark rem_6987 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current X2 -> auto___def_82 X2 -> auto_knows_current X1 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2.
  cut (auto___def_81 X1 -> auto_knows_current X1 -> False). clear  epsilon_m__def_79_mknows_current. tauto.
  exact (rem_6986 epsilon_m__def_79_mknows_current X1).
Defined.

Remark rem_6988 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___type_22 X1 -> auto___def_81 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_79_mknows_current. exact (rem_5358).
Defined.

Remark rem_6989 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2.
  cut (auto___type_22 X1 -> auto___def_81 X1 -> False). clear  epsilon_m__def_79_mknows_current. tauto.
  exact (rem_6988 epsilon_m__def_79_mknows_current X1).
Defined.

Remark rem_6990 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___def_88 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_79_mknows_current. exact (rem_5364).
Defined.

Remark rem_6991 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_89 X2 -> auto___def_82 X2 -> auto___def_88 X1 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_88 X1 -> False). clear  epsilon_m__def_79_mknows_current. tauto.
  exact (rem_6990 epsilon_m__def_79_mknows_current X1).
Defined.

Remark rem_6992 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_81 X1 -> auto___def_24 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_79_mknows_current. exact (rem_5448).
Defined.

Remark rem_6993 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_25 X2 -> auto___def_24 X1 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_24 X1 -> False). clear  epsilon_m__def_79_mknows_current. tauto.
  exact (rem_6992 epsilon_m__def_79_mknows_current X1).
Defined.

Remark rem_6994 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___type_7 X1 -> auto___def_81 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_79_mknows_current. exact (rem_5454).
Defined.

Remark rem_6995 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_44 X2 -> auto___def_82 X2 -> auto___type_7 X1 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2.
  cut (auto___type_7 X1 -> auto___def_81 X1 -> False). clear  epsilon_m__def_79_mknows_current. tauto.
  exact (rem_6994 epsilon_m__def_79_mknows_current X1).
Defined.

Remark rem_6996 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_84 X1 -> auto___def_81 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_79_mknows_current. exact (rem_5460).
Defined.

Remark rem_6997 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_82 X2 -> auto___def_81 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_81 X1 -> False). clear  epsilon_m__def_79_mknows_current. tauto.
  exact (rem_6996 epsilon_m__def_79_mknows_current X1).
Defined.

Remark rem_6998 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_81 X1 -> auto___def_82 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_987 X1 X2 H);  intros.
  apply (rem_6981 epsilon_m__def_79_mknows_current X1 X2);  tauto.
  apply (rem_6983 epsilon_m__def_79_mknows_current X1 X2);  tauto.
  apply (rem_6985 epsilon_m__def_79_mknows_current X1 X2);  tauto.
  apply (rem_6987 epsilon_m__def_79_mknows_current X1 X2);  tauto.
  apply (rem_6989 epsilon_m__def_79_mknows_current X1 X2);  tauto.
  apply (rem_6991 epsilon_m__def_79_mknows_current X1 X2);  tauto.
  apply (rem_6993 epsilon_m__def_79_mknows_current X1 X2);  tauto.
  apply (rem_6995 epsilon_m__def_79_mknows_current X1 X2);  tauto.
  apply (rem_6997 epsilon_m__def_79_mknows_current X1 X2);  tauto.
Defined.

Remark rem_6999 : (forall X:term, auto___def_79 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto_knows_current (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_79_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_766 X1 X2 H);  intros.
  apply (rem_6998 epsilon_m__def_79_mknows_current X1 X2);  tauto.
Defined.

Remark rem_7000 : forall X1:term, auto___def_79 X1 -> auto_knows_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_79_mknows_current 1.
  intro X. case X.
   intro H. elim (rem_778  H).
   intro H. elim (rem_770  H).
  intros X1 X2. intro H. elim (rem_783 X1 X2 H).
  intros X1 X2;  exact (rem_6999 epsilon_m__def_79_mknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_781 X1 X2 H).
  intros X1 X2. intro H. elim (rem_782 X1 X2 H).
   intro H. elim (rem_787  H).
  intros X1 X2. intro H. elim (rem_791 X1 X2 H).
   intro H. elim (rem_788  H).
  intros X1 X2. intro H. elim (rem_790 X1 X2 H).
  intros X1 X2. intro H. elim (rem_771 X1 X2 H).
  intros X1 X2. intro H. elim (rem_768 X1 X2 H).
  intros X1 X2. intro H. elim (rem_780 X1 X2 H).
  intros X1. intro H. elim (rem_774 X1 H).
  intros X1 X2. intro H. elim (rem_777 X1 X2 H).
  intros X1 X2. intro H. elim (rem_776 X1 X2 H).
   intro H. elim (rem_779  H).
   intro H. elim (rem_775  H).
  intros X1 X2. intro H. elim (rem_773 X1 X2 H).
  intros X1 X2. intro H. elim (rem_772 X1 X2 H).
  intros X1. intro H. elim (rem_784 X1 H).
   intro H. elim (rem_789  H).
  intros X1 X2. intro H. elim (rem_786 X1 X2 H).
  intros X1 X2. intro H. elim (rem_769 X1 X2 H).
   intro H. elim (rem_785  H).
Qed.

Remark rem_7001 : forall X1 X2:term, auto___def_79 X2 -> auto___def_80 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7000 X2)). tauto.
Qed.

Remark rem_7002 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_17 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mknows_current. exact (rem_5506).
Defined.

Remark rem_7003 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___type_2 X2 -> auto___def_17 X1 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_17 X1 -> False). clear  epsilon_m__def_75_mknows_current. tauto.
  exact (rem_7002 epsilon_m__def_75_mknows_current X1).
Defined.

Remark rem_7004 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_36 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mknows_current. exact (rem_5511).
Defined.

Remark rem_7005 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_36 X1 -> False). clear  epsilon_m__def_75_mknows_current. tauto.
  exact (rem_7004 epsilon_m__def_75_mknows_current X1).
Defined.

Remark rem_7006 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mknows_current. exact (rem_5516).
Defined.

Remark rem_7007 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_21 X1 -> False). clear  epsilon_m__def_75_mknows_current. tauto.
  exact (rem_7006 epsilon_m__def_75_mknows_current X1).
Defined.

Remark rem_7008 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto_knows_current X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mknows_current. exact (rem_5526).
Defined.

Remark rem_7009 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto_knows_current X1 -> False). clear  epsilon_m__def_75_mknows_current. tauto.
  exact (rem_7008 epsilon_m__def_75_mknows_current X1).
Defined.

Remark rem_7010 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___type_22 X1 -> auto___def_77 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mknows_current. exact (rem_5531).
Defined.

Remark rem_7011 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2.
  cut (auto___type_22 X1 -> auto___def_77 X1 -> False). clear  epsilon_m__def_75_mknows_current. tauto.
  exact (rem_7010 epsilon_m__def_75_mknows_current X1).
Defined.

Remark rem_7012 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_88 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mknows_current. exact (rem_5536).
Defined.

Remark rem_7013 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_89 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> auto___def_88 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_88 X1 -> False). clear  epsilon_m__def_75_mknows_current. tauto.
  exact (rem_7012 epsilon_m__def_75_mknows_current X1).
Defined.

Remark rem_7014 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_24 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mknows_current. exact (rem_5593).
Defined.

Remark rem_7015 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_25 X2 -> auto___def_24 X1 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_24 X1 -> False). clear  epsilon_m__def_75_mknows_current. tauto.
  exact (rem_7014 epsilon_m__def_75_mknows_current X1).
Defined.

Remark rem_7016 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___type_7 X1 -> auto___def_77 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mknows_current. exact (rem_5598).
Defined.

Remark rem_7017 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_44 X2 -> auto___type_17 X2 -> auto___type_7 X1 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2.
  cut (auto___type_7 X1 -> auto___def_77 X1 -> False). clear  epsilon_m__def_75_mknows_current. tauto.
  exact (rem_7016 epsilon_m__def_75_mknows_current X1).
Defined.

Remark rem_7018 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_77 X1 -> auto___def_84 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_75_mknows_current. exact (rem_5603).
Defined.

Remark rem_7019 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_17 X2 -> auto___def_77 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2.
  cut (auto___def_77 X1 -> auto___def_84 X1 -> False). clear  epsilon_m__def_75_mknows_current. tauto.
  exact (rem_7018 epsilon_m__def_75_mknows_current X1).
Defined.

Remark rem_7020 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_77 X1 -> auto___type_17 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_987 X1 X2 H);  intros.
  apply (rem_7003 epsilon_m__def_75_mknows_current X1 X2);  tauto.
  apply (rem_7005 epsilon_m__def_75_mknows_current X1 X2);  tauto.
  apply (rem_7007 epsilon_m__def_75_mknows_current X1 X2);  tauto.
  apply (rem_7009 epsilon_m__def_75_mknows_current X1 X2);  tauto.
  apply (rem_7011 epsilon_m__def_75_mknows_current X1 X2);  tauto.
  apply (rem_7013 epsilon_m__def_75_mknows_current X1 X2);  tauto.
  apply (rem_7015 epsilon_m__def_75_mknows_current X1 X2);  tauto.
  apply (rem_7017 epsilon_m__def_75_mknows_current X1 X2);  tauto.
  apply (rem_7019 epsilon_m__def_75_mknows_current X1 X2);  tauto.
Defined.

Remark rem_7021 : (forall X:term, auto___def_75 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_75 (crypt X1 X2) -> auto_knows_current (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_75_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_731 X1 X2 H);  intros.
  apply (rem_7020 epsilon_m__def_75_mknows_current X1 X2);  tauto.
Defined.

Remark rem_7022 : forall X1:term, auto___def_75 X1 -> auto_knows_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_75_mknows_current 1.
  intro X. case X.
   intro H. elim (rem_743  H).
   intro H. elim (rem_735  H).
  intros X1 X2. intro H. elim (rem_748 X1 X2 H).
  intros X1 X2;  exact (rem_7021 epsilon_m__def_75_mknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_746 X1 X2 H).
  intros X1 X2. intro H. elim (rem_747 X1 X2 H).
   intro H. elim (rem_752  H).
  intros X1 X2. intro H. elim (rem_756 X1 X2 H).
   intro H. elim (rem_753  H).
  intros X1 X2. intro H. elim (rem_755 X1 X2 H).
  intros X1 X2. intro H. elim (rem_736 X1 X2 H).
  intros X1 X2. intro H. elim (rem_733 X1 X2 H).
  intros X1 X2. intro H. elim (rem_745 X1 X2 H).
  intros X1. intro H. elim (rem_739 X1 H).
  intros X1 X2. intro H. elim (rem_742 X1 X2 H).
  intros X1 X2. intro H. elim (rem_741 X1 X2 H).
   intro H. elim (rem_744  H).
   intro H. elim (rem_740  H).
  intros X1 X2. intro H. elim (rem_738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_737 X1 X2 H).
  intros X1. intro H. elim (rem_749 X1 H).
   intro H. elim (rem_754  H).
  intros X1 X2. intro H. elim (rem_751 X1 X2 H).
  intros X1 X2. intro H. elim (rem_734 X1 X2 H).
   intro H. elim (rem_750  H).
Qed.

Remark rem_7023 : forall X1 X2:term, auto___def_75 X2 -> auto___def_76 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7022 X2)). tauto.
Qed.

Remark rem_7024 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current (enc X2 X1) -> auto_testable_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_669 X2 X1 H);  intros.
  apply (rem_6979 X1 X2);  tauto.
  apply (rem_6902 X1 X2);  tauto.
  apply (rem_7001 X1 X2);  tauto.
  apply (rem_7023 X1 X2);  tauto.
Qed.

Remark rem_7025 : forall X1 X2:term, auto_testable_current (enc X2 X1) -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_testable_current (enc X2 X1) -> auto_testable_current X1). tauto. exact (rem_7024 X1 X2).
Qed.

Remark rem_7026 : (forall X:term, auto___def_117 X -> auto___def_114 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_117_p__def_114.  tauto.
Defined.

Remark rem_7027 : (forall X:term, auto___def_117 X -> auto___def_114 X)
    -> auto___def_114 prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_117_p__def_114.  case (rem_7026 epsilon_m__def_117_p__def_114). clear  epsilon_m__def_117_p__def_114. intros. apply trans___def_114_prv_1;  tauto.
 clear  epsilon_m__def_117_p__def_114. tauto.
Defined.

Remark rem_7028 : auto___def_117 prv -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7029 : (forall X:term, auto___def_117 X -> auto___def_114 X)
    -> auto___def_117 prv -> auto___def_114 prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_117_p__def_114. intro H. intros.
  elim (rem_7028 H);  intros.
  apply (rem_7027 epsilon_m__def_117_p__def_114);  tauto.
Defined.

Remark rem_7030 : forall X1 X2:term, auto___def_117 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7031 : forall X1 X2:term, auto___def_117 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7032 : forall X1 X2:term, auto___def_117 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7033 : auto___def_117 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7034 : forall X1 X2:term, auto___def_117 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7035 : forall X1 X2:term, auto___def_117 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7036 : forall X1 X2:term, auto___def_117 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7037 : forall X1:term, auto___def_117 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7038 : auto___def_117 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7039 : forall X1 X2:term, auto___def_117 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7040 : forall X1 X2:term, auto___def_117 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7041 : auto___def_117 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7042 : forall X1 X2:term, auto___def_117 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7043 : forall X1 X2:term, auto___def_117 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7044 : forall X1 X2:term, auto___def_117 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7045 : forall X1 X2:term, auto___def_117 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7046 : forall X1:term, auto___def_117 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7047 : auto___def_117 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7048 : forall X1 X2:term, auto___def_117 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7049 : auto___def_117 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7050 : auto___def_117 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7051 : auto___def_117 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7052 : forall X1 X2:term, auto___def_117 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7053 : forall X1 X2:term, auto___def_117 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7054 : forall X1:term, auto___def_117 X1 -> auto___def_114 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_117_p__def_114 1.
  intro X. case X.
   intro H. elim (rem_7041  H).
   intro H. elim (rem_7033  H).
  intros X1 X2. intro H. elim (rem_7045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7030 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7043 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7044 X1 X2 H).
   intro H. elim (rem_7049  H).
  intros X1 X2. intro H. elim (rem_7053 X1 X2 H).
   intro H. elim (rem_7050  H).
  intros X1 X2. intro H. elim (rem_7052 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7034 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7031 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7042 X1 X2 H).
  intros X1. intro H. elim (rem_7037 X1 H).
  intros X1 X2. intro H. elim (rem_7040 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7039 X1 X2 H).
  exact (rem_7029 epsilon_m__def_117_p__def_114 ).
   intro H. elim (rem_7038  H).
  intros X1 X2. intro H. elim (rem_7036 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7035 X1 X2 H).
  intros X1. intro H. elim (rem_7046 X1 H).
   intro H. elim (rem_7051  H).
  intros X1 X2. intro H. elim (rem_7048 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7032 X1 X2 H).
   intro H. elim (rem_7047  H).
Qed.

Remark rem_7055 : forall X1 X2:term, auto___def_117 X1 -> auto___type_29 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_117 X1 -> auto___def_114 X1). tauto. exact (rem_7054 X1).
Qed.

Remark rem_7056 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7057 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_29_p__def_66. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_7056 epsilon_m__type_29_p__def_66 X1).
Defined.

Remark rem_7058 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7059 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_29_p__def_66. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_7058 epsilon_m__type_29_p__def_66 X2).
Defined.

Remark rem_7060 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_29_p__def_66. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_7057 epsilon_m__type_29_p__def_66 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_7059 epsilon_m__type_29_p__def_66 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7061 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___def_66 (session_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_29_p__def_66. intros X1 X2. intros A1 A2.
  case (rem_7060 epsilon_m__type_29_p__def_66 X1 X2 A1 A2). clear  epsilon_m__type_29_p__def_66 A1 A2. intros. apply trans___def_66_session_old_1;  tauto.
 clear  epsilon_m__type_29_p__def_66 A1 A2. tauto.
Defined.

Remark rem_7062 : forall X1 X2:term, auto___type_29 (session_old X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7063 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> forall X1 X2:term, auto___type_29 (session_old X1 X2) -> auto___def_66 (session_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_29_p__def_66. intros X1 X2. intro H. intros.
  elim (rem_7062 X1 X2 H);  intros.
  apply (rem_7061 epsilon_m__type_29_p__def_66 X1 X2);  tauto.
Defined.

Remark rem_7064 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_29_p__def_66.  tauto.
Defined.

Remark rem_7065 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> auto___def_66 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_29_p__def_66.  case (rem_7064 epsilon_m__type_29_p__def_66). clear  epsilon_m__type_29_p__def_66. intros. apply trans___def_66_bob_1;  tauto.
 clear  epsilon_m__type_29_p__def_66. tauto.
Defined.

Remark rem_7066 : auto___type_29 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7067 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> auto___type_29 bob -> auto___def_66 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_29_p__def_66. intro H. intros.
  elim (rem_7066 H);  intros.
  apply (rem_7065 epsilon_m__type_29_p__def_66);  tauto.
Defined.

Remark rem_7068 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> auto___def_66 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_29_p__def_66.  case (rem_7064 epsilon_m__type_29_p__def_66). clear  epsilon_m__type_29_p__def_66. intros. apply trans___def_66_alice_1;  tauto.
 clear  epsilon_m__type_29_p__def_66. tauto.
Defined.

Remark rem_7069 : auto___type_29 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7070 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> auto___type_29 alice -> auto___def_66 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_29_p__def_66. intro H. intros.
  elim (rem_7069 H);  intros.
  apply (rem_7068 epsilon_m__type_29_p__def_66);  tauto.
Defined.

Remark rem_7071 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> auto___def_66 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_29_p__def_66.  case (rem_7064 epsilon_m__type_29_p__def_66). clear  epsilon_m__type_29_p__def_66. intros. apply trans___def_66_i_1;  tauto.
 clear  epsilon_m__type_29_p__def_66. tauto.
Defined.

Remark rem_7072 : auto___type_29 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7073 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> auto___type_29 i -> auto___def_66 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_29_p__def_66. intro H. intros.
  elim (rem_7072 H);  intros.
  apply (rem_7071 epsilon_m__type_29_p__def_66);  tauto.
Defined.

Remark rem_7074 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> auto___def_66 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_29_p__def_66.  case (rem_7064 epsilon_m__type_29_p__def_66). clear  epsilon_m__type_29_p__def_66. intros. apply trans___def_66_server_1;  tauto.
 clear  epsilon_m__type_29_p__def_66. tauto.
Defined.

Remark rem_7075 : auto___type_29 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7076 : (forall X:term, auto___type_29 X -> auto___def_66 X)
    -> auto___type_29 server -> auto___def_66 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_29_p__def_66. intro H. intros.
  elim (rem_7075 H);  intros.
  apply (rem_7074 epsilon_m__type_29_p__def_66);  tauto.
Defined.

Remark rem_7077 : forall X1 X2:term, auto___type_29 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7078 : forall X1 X2:term, auto___type_29 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7079 : forall X1 X2:term, auto___type_29 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7080 : forall X1 X2:term, auto___type_29 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7081 : forall X1 X2:term, auto___type_29 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7082 : forall X1:term, auto___type_29 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7083 : auto___type_29 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7084 : forall X1 X2:term, auto___type_29 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7085 : forall X1 X2:term, auto___type_29 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7086 : auto___type_29 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7087 : forall X1 X2:term, auto___type_29 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7088 : forall X1 X2:term, auto___type_29 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7089 : forall X1 X2:term, auto___type_29 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7090 : forall X1 X2:term, auto___type_29 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7091 : forall X1:term, auto___type_29 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7092 : auto___type_29 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7093 : forall X1 X2:term, auto___type_29 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7094 : auto___type_29 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7095 : forall X1 X2:term, auto___type_29 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7096 : forall X1 X2:term, auto___type_29 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7097 : forall X2:term, auto___type_29 X2 -> auto___def_66 X2. (* Induct. *)
Proof.
  fix epsilon_m__type_29_p__def_66 1.
  intro X. case X.
  exact (rem_7070 epsilon_m__type_29_p__def_66 ).
  exact (rem_7067 epsilon_m__type_29_p__def_66 ).
  intros X1 X2. intro H. elim (rem_7090 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7077 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7088 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7089 X1 X2 H).
  exact (rem_7073 epsilon_m__type_29_p__def_66 ).
  intros X1 X2. intro H. elim (rem_7096 X1 X2 H).
   intro H. elim (rem_7094  H).
  intros X1 X2. intro H. elim (rem_7095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7079 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7078 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7087 X1 X2 H).
  intros X1. intro H. elim (rem_7082 X1 H).
  intros X1 X2. intro H. elim (rem_7085 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7084 X1 X2 H).
   intro H. elim (rem_7086  H).
   intro H. elim (rem_7083  H).
  intros X1 X2. intro H. elim (rem_7081 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7080 X1 X2 H).
  intros X1. intro H. elim (rem_7091 X1 H).
  exact (rem_7076 epsilon_m__type_29_p__def_66 ).
  intros X1 X2. intro H. elim (rem_7093 X1 X2 H).
  intros X1 X2;  exact (rem_7063 epsilon_m__type_29_p__def_66 X1 X2).
   intro H. elim (rem_7092  H).
Qed.

Remark rem_7098 : forall X1 X2:term, auto___def_117 X1 -> auto___type_29 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_29 X2 -> auto___def_66 X2). tauto. exact (rem_7097 X2).
Qed.

Remark rem_7099 : forall X1 X2:term, auto___def_117 X1 -> auto___type_29 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_7055 X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_7098 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_7100 : forall X1 X2:term, auto___def_117 X1 -> auto___type_29 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_7099 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_current_key_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7101 : forall X1 X2:term, auto___type_29 X2 -> auto___def_117 X1 -> auto_testable_current (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_117 X1 -> auto___type_29 X2 -> auto_testable_current (key X1 X2)). tauto. exact (rem_7100 X1 X2).
Qed.

Remark rem_7102 : forall X1:term, auto_testable_old (s X1) -> auto_testable_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_127 X1 H);  intros.
  apply (rem_5129 X1);  tauto.
Qed.

Remark rem_7103 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_5004 X1 X2).
Qed.

Remark rem_7104 : forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1034 X1 X2 H);  intros.
  apply (rem_7103 X1 X2);  tauto.
Qed.

Remark rem_7105 : forall X1:term, auto___type_24 X1 -> auto___type_24 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_7106 : forall X1 X2:term, auto___def_108 X2 -> auto___type_24 X1 -> auto___type_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_24 X1 -> auto___type_24 X1). tauto. exact (rem_7105 X1).
Qed.

Remark rem_7107 : forall X2:term, auto___def_108 X2 -> auto___def_108 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_7108 : forall X1 X2:term, auto___def_108 X2 -> auto___type_24 X1 -> auto___def_108 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_108 X2 -> auto___def_108 X2). tauto. exact (rem_7107 X2).
Qed.

Remark rem_7109 : forall X1 X2:term, auto___def_108 X2 -> auto___type_24 X1 -> (auto___type_24 X1 /\ auto___def_108 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_24 X1). 2:apply (rem_7106 X1 X2);  assumption.
  cut (auto___def_108 X2). 2:apply (rem_7108 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_7110 : forall X1 X2:term, auto___def_108 X2 -> auto___type_24 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_7109 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7111 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5144 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_dec_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7112 : auto_agent bob. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans_agent_bob_1;  tauto.
 tauto.
Qed.

Remark rem_7113 : (forall X:term, auto___def_58 X -> auto___def_55 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_58_p__def_55.  tauto.
Defined.

Remark rem_7114 : (forall X:term, auto___def_58 X -> auto___def_55 X)
    -> auto___def_55 prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_58_p__def_55.  case (rem_7113 epsilon_m__def_58_p__def_55). clear  epsilon_m__def_58_p__def_55. intros. apply trans___def_55_prv_1;  tauto.
 clear  epsilon_m__def_58_p__def_55. tauto.
Defined.

Remark rem_7115 : auto___def_58 prv -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7116 : (forall X:term, auto___def_58 X -> auto___def_55 X)
    -> auto___def_58 prv -> auto___def_55 prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_58_p__def_55. intro H. intros.
  elim (rem_7115 H);  intros.
  apply (rem_7114 epsilon_m__def_58_p__def_55);  tauto.
Defined.

Remark rem_7117 : forall X1 X2:term, auto___def_58 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7118 : forall X1 X2:term, auto___def_58 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7119 : forall X1 X2:term, auto___def_58 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7120 : auto___def_58 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7121 : forall X1 X2:term, auto___def_58 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7122 : forall X1 X2:term, auto___def_58 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7123 : forall X1 X2:term, auto___def_58 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7124 : forall X1:term, auto___def_58 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7125 : auto___def_58 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7126 : forall X1 X2:term, auto___def_58 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7127 : forall X1 X2:term, auto___def_58 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7128 : auto___def_58 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7129 : forall X1 X2:term, auto___def_58 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7130 : forall X1 X2:term, auto___def_58 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7131 : forall X1 X2:term, auto___def_58 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7132 : forall X1 X2:term, auto___def_58 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7133 : forall X1:term, auto___def_58 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7134 : auto___def_58 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7135 : forall X1 X2:term, auto___def_58 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7136 : auto___def_58 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7137 : auto___def_58 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7138 : auto___def_58 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7139 : forall X1 X2:term, auto___def_58 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7140 : forall X1 X2:term, auto___def_58 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7141 : forall X1:term, auto___def_58 X1 -> auto___def_55 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_58_p__def_55 1.
  intro X. case X.
   intro H. elim (rem_7128  H).
   intro H. elim (rem_7120  H).
  intros X1 X2. intro H. elim (rem_7132 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7117 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7130 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7131 X1 X2 H).
   intro H. elim (rem_7136  H).
  intros X1 X2. intro H. elim (rem_7140 X1 X2 H).
   intro H. elim (rem_7137  H).
  intros X1 X2. intro H. elim (rem_7139 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7121 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7118 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7129 X1 X2 H).
  intros X1. intro H. elim (rem_7124 X1 H).
  intros X1 X2. intro H. elim (rem_7127 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7126 X1 X2 H).
  exact (rem_7116 epsilon_m__def_58_p__def_55 ).
   intro H. elim (rem_7125  H).
  intros X1 X2. intro H. elim (rem_7123 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7122 X1 X2 H).
  intros X1. intro H. elim (rem_7133 X1 H).
   intro H. elim (rem_7138  H).
  intros X1 X2. intro H. elim (rem_7135 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7119 X1 X2 H).
   intro H. elim (rem_7134  H).
Qed.

Remark rem_7142 : forall X1 X2:term, auto___def_58 X1 -> auto___type_14 X2 -> auto___def_55 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_58 X1 -> auto___def_55 X1). tauto. exact (rem_7141 X1).
Qed.

Remark rem_7143 : (forall X:term, auto___type_14 X -> auto___def_4 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_14_p__def_4.  tauto.
Defined.

Remark rem_7144 : (forall X:term, auto___type_14 X -> auto___def_4 X)
    -> auto___def_4 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_p__def_4.  case (rem_7143 epsilon_m__type_14_p__def_4). clear  epsilon_m__type_14_p__def_4. intros. apply trans___def_4_bob_1;  tauto.
 clear  epsilon_m__type_14_p__def_4. tauto.
Defined.

Remark rem_7145 : auto___type_14 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7146 : (forall X:term, auto___type_14 X -> auto___def_4 X)
    -> auto___type_14 bob -> auto___def_4 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_p__def_4. intro H. intros.
  elim (rem_7145 H);  intros.
  apply (rem_7144 epsilon_m__type_14_p__def_4);  tauto.
Defined.

Remark rem_7147 : (forall X:term, auto___type_14 X -> auto___def_4 X)
    -> auto___def_4 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_p__def_4.  case (rem_7143 epsilon_m__type_14_p__def_4). clear  epsilon_m__type_14_p__def_4. intros. apply trans___def_4_alice_1;  tauto.
 clear  epsilon_m__type_14_p__def_4. tauto.
Defined.

Remark rem_7148 : auto___type_14 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7149 : (forall X:term, auto___type_14 X -> auto___def_4 X)
    -> auto___type_14 alice -> auto___def_4 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_p__def_4. intro H. intros.
  elim (rem_7148 H);  intros.
  apply (rem_7147 epsilon_m__type_14_p__def_4);  tauto.
Defined.

Remark rem_7150 : (forall X:term, auto___type_14 X -> auto___def_4 X)
    -> auto___def_4 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_p__def_4.  case (rem_7143 epsilon_m__type_14_p__def_4). clear  epsilon_m__type_14_p__def_4. intros. apply trans___def_4_i_1;  tauto.
 clear  epsilon_m__type_14_p__def_4. tauto.
Defined.

Remark rem_7151 : auto___type_14 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7152 : (forall X:term, auto___type_14 X -> auto___def_4 X)
    -> auto___type_14 i -> auto___def_4 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_p__def_4. intro H. intros.
  elim (rem_7151 H);  intros.
  apply (rem_7150 epsilon_m__type_14_p__def_4);  tauto.
Defined.

Remark rem_7153 : (forall X:term, auto___type_14 X -> auto___def_4 X)
    -> auto___def_4 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_p__def_4.  case (rem_7143 epsilon_m__type_14_p__def_4). clear  epsilon_m__type_14_p__def_4. intros. apply trans___def_4_server_1;  tauto.
 clear  epsilon_m__type_14_p__def_4. tauto.
Defined.

Remark rem_7154 : auto___type_14 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7155 : (forall X:term, auto___type_14 X -> auto___def_4 X)
    -> auto___type_14 server -> auto___def_4 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_p__def_4. intro H. intros.
  elim (rem_7154 H);  intros.
  apply (rem_7153 epsilon_m__type_14_p__def_4);  tauto.
Defined.

Remark rem_7156 : forall X1 X2:term, auto___type_14 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7157 : forall X1 X2:term, auto___type_14 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7158 : forall X1 X2:term, auto___type_14 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7159 : forall X1 X2:term, auto___type_14 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7160 : forall X1 X2:term, auto___type_14 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7161 : forall X1 X2:term, auto___type_14 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7162 : forall X1:term, auto___type_14 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7163 : auto___type_14 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7164 : forall X1 X2:term, auto___type_14 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7165 : forall X1 X2:term, auto___type_14 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7166 : auto___type_14 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7167 : forall X1 X2:term, auto___type_14 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7168 : forall X1 X2:term, auto___type_14 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7169 : forall X1 X2:term, auto___type_14 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7170 : forall X1 X2:term, auto___type_14 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7171 : forall X1:term, auto___type_14 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7172 : auto___type_14 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7173 : forall X1 X2:term, auto___type_14 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7174 : auto___type_14 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7175 : forall X1 X2:term, auto___type_14 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7176 : forall X1 X2:term, auto___type_14 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7177 : forall X2:term, auto___type_14 X2 -> auto___def_4 X2. (* Induct. *)
Proof.
  fix epsilon_m__type_14_p__def_4 1.
  intro X. case X.
  exact (rem_7149 epsilon_m__type_14_p__def_4 ).
  exact (rem_7146 epsilon_m__type_14_p__def_4 ).
  intros X1 X2. intro H. elim (rem_7170 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7156 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7168 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7169 X1 X2 H).
  exact (rem_7152 epsilon_m__type_14_p__def_4 ).
  intros X1 X2. intro H. elim (rem_7176 X1 X2 H).
   intro H. elim (rem_7174  H).
  intros X1 X2. intro H. elim (rem_7175 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7159 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7157 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7167 X1 X2 H).
  intros X1. intro H. elim (rem_7162 X1 H).
  intros X1 X2. intro H. elim (rem_7165 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7164 X1 X2 H).
   intro H. elim (rem_7166  H).
   intro H. elim (rem_7163  H).
  intros X1 X2. intro H. elim (rem_7161 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7160 X1 X2 H).
  intros X1. intro H. elim (rem_7171 X1 H).
  exact (rem_7155 epsilon_m__type_14_p__def_4 ).
  intros X1 X2. intro H. elim (rem_7173 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7158 X1 X2 H).
   intro H. elim (rem_7172  H).
Qed.

Remark rem_7178 : forall X1 X2:term, auto___def_58 X1 -> auto___type_14 X2 -> auto___def_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_14 X2 -> auto___def_4 X2). tauto. exact (rem_7177 X2).
Qed.

Remark rem_7179 : forall X1 X2:term, auto___def_58 X1 -> auto___type_14 X2 -> (auto___def_55 X1 /\ auto___def_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_55 X1). 2:apply (rem_7142 X1 X2);  assumption.
  cut (auto___def_4 X2). 2:apply (rem_7178 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_7180 : forall X1 X2:term, auto___def_58 X1 -> auto___type_14 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_7179 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_old_key_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7181 : forall X1 X2:term, auto___type_14 X2 -> auto___def_58 X1 -> auto_testable_old (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_58 X1 -> auto___type_14 X2 -> auto_testable_old (key X1 X2)). tauto. exact (rem_7180 X1 X2).
Qed.

Remark rem_7182 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6768 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7183 : forall X1:term, auto___def_19 X1 -> auto___def_19 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_7184 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_19 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_19 X1 -> auto___def_19 X1). tauto. exact (rem_7183 X1).
Qed.

Remark rem_7185 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto___def_20 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_20 X2 -> auto___def_20 X2). tauto. exact (rem_1253 X2).
Qed.

Remark rem_7186 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> (auto___def_19 X1 /\ auto___def_20 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_19 X1). 2:apply (rem_7184 X1 X2);  assumption.
  cut (auto___def_20 X2). 2:apply (rem_7185 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_7187 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_knows_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_7186 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_enc_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7188 : forall X1 X2:term, auto___def_20 X2 -> auto___def_19 X1 -> auto_knows_old (enc X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_19 X1 -> auto___def_20 X2 -> auto_knows_old (enc X1 X2)). tauto. exact (rem_7187 X1 X2).
Qed.

Remark rem_7189 : forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_276 X1);  assumption.
  tauto.
Qed.

Remark rem_7190 : forall X1:term, auto_knows_old X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_7189 X1 A1). clear  A1. intros. apply trans_knows_old_s_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_7191 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_5132 X1 X2).
Qed.

Remark rem_7192 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old (dec X1 X2) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_2448 X1 X2 H);  intros.
  apply (rem_7191 X1 X2);  tauto.
Qed.

Remark rem_7193 : forall X1 X2:term, auto_knows_old (dec X1 X2) -> auto_knows_old X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old (dec X1 X2) -> auto_knows_old X1). tauto. exact (rem_7192 X1 X2).
Qed.

Remark rem_7194 : auto_knows_current nil. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans_knows_current_nil_1;  tauto.
 tauto.
Qed.

Remark rem_7195 : (forall X:term, auto___type_1 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_1_pknows_old.  tauto.
Defined.

Remark rem_7196 : (forall X:term, auto___type_1 X -> auto_knows_old X)
    -> auto_knows_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_1_pknows_old.  case (rem_7195 epsilon_m__type_1_pknows_old). clear  epsilon_m__type_1_pknows_old. intros. apply trans_knows_old_bob_1;  tauto.
 clear  epsilon_m__type_1_pknows_old. tauto.
Defined.

Remark rem_7197 : auto___type_1 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7198 : (forall X:term, auto___type_1 X -> auto_knows_old X)
    -> auto___type_1 bob -> auto_knows_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_1_pknows_old. intro H. intros.
  elim (rem_7197 H);  intros.
  apply (rem_7196 epsilon_m__type_1_pknows_old);  tauto.
Defined.

Remark rem_7199 : (forall X:term, auto___type_1 X -> auto_knows_old X)
    -> auto_knows_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_1_pknows_old.  case (rem_7195 epsilon_m__type_1_pknows_old). clear  epsilon_m__type_1_pknows_old. intros. apply trans_knows_old_alice_1;  tauto.
 clear  epsilon_m__type_1_pknows_old. tauto.
Defined.

Remark rem_7200 : auto___type_1 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7201 : (forall X:term, auto___type_1 X -> auto_knows_old X)
    -> auto___type_1 alice -> auto_knows_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_1_pknows_old. intro H. intros.
  elim (rem_7200 H);  intros.
  apply (rem_7199 epsilon_m__type_1_pknows_old);  tauto.
Defined.

Remark rem_7202 : (forall X:term, auto___type_1 X -> auto_knows_old X)
    -> auto_knows_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_1_pknows_old.  case (rem_7195 epsilon_m__type_1_pknows_old). clear  epsilon_m__type_1_pknows_old. intros. apply trans_knows_old_i_1;  tauto.
 clear  epsilon_m__type_1_pknows_old. tauto.
Defined.

Remark rem_7203 : auto___type_1 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7204 : (forall X:term, auto___type_1 X -> auto_knows_old X)
    -> auto___type_1 i -> auto_knows_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_1_pknows_old. intro H. intros.
  elim (rem_7203 H);  intros.
  apply (rem_7202 epsilon_m__type_1_pknows_old);  tauto.
Defined.

Remark rem_7205 : (forall X:term, auto___type_1 X -> auto_knows_old X)
    -> auto_knows_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_1_pknows_old.  case (rem_7195 epsilon_m__type_1_pknows_old). clear  epsilon_m__type_1_pknows_old. intros. apply trans_knows_old_server_1;  tauto.
 clear  epsilon_m__type_1_pknows_old. tauto.
Defined.

Remark rem_7206 : auto___type_1 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7207 : (forall X:term, auto___type_1 X -> auto_knows_old X)
    -> auto___type_1 server -> auto_knows_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_1_pknows_old. intro H. intros.
  elim (rem_7206 H);  intros.
  apply (rem_7205 epsilon_m__type_1_pknows_old);  tauto.
Defined.

Remark rem_7208 : forall X1 X2:term, auto___type_1 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7209 : forall X1 X2:term, auto___type_1 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7210 : forall X1 X2:term, auto___type_1 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7211 : forall X1 X2:term, auto___type_1 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7212 : forall X1 X2:term, auto___type_1 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7213 : forall X1 X2:term, auto___type_1 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7214 : forall X1:term, auto___type_1 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7215 : auto___type_1 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7216 : forall X1 X2:term, auto___type_1 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7217 : forall X1 X2:term, auto___type_1 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7218 : auto___type_1 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7219 : forall X1 X2:term, auto___type_1 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7220 : forall X1 X2:term, auto___type_1 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7221 : forall X1 X2:term, auto___type_1 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7222 : forall X1 X2:term, auto___type_1 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7223 : forall X1:term, auto___type_1 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7224 : auto___type_1 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7225 : forall X1 X2:term, auto___type_1 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7226 : auto___type_1 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7227 : forall X1 X2:term, auto___type_1 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7228 : forall X1 X2:term, auto___type_1 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7229 : forall X1:term, auto___type_1 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__type_1_pknows_old 1.
  intro X. case X.
  exact (rem_7201 epsilon_m__type_1_pknows_old ).
  exact (rem_7198 epsilon_m__type_1_pknows_old ).
  intros X1 X2. intro H. elim (rem_7222 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7208 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7220 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7221 X1 X2 H).
  exact (rem_7204 epsilon_m__type_1_pknows_old ).
  intros X1 X2. intro H. elim (rem_7228 X1 X2 H).
   intro H. elim (rem_7226  H).
  intros X1 X2. intro H. elim (rem_7227 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7211 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7209 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7219 X1 X2 H).
  intros X1. intro H. elim (rem_7214 X1 H).
  intros X1 X2. intro H. elim (rem_7217 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7216 X1 X2 H).
   intro H. elim (rem_7218  H).
   intro H. elim (rem_7215  H).
  intros X1 X2. intro H. elim (rem_7213 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7212 X1 X2 H).
  intros X1. intro H. elim (rem_7223 X1 H).
  exact (rem_7207 epsilon_m__type_1_pknows_old ).
  intros X1 X2. intro H. elim (rem_7225 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7210 X1 X2 H).
   intro H. elim (rem_7224  H).
Qed.

Remark rem_7230 : forall X1 X2:term, auto___def_7 X2 -> auto___type_1 X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_1 X1 -> auto_knows_old X1). tauto. exact (rem_7229 X1).
Qed.

Remark rem_7231 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X1:term, auto___def_10 X1 -> auto___def_10 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7232 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_10 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_8_pknows_old. intros X1 X2.
  cut (auto___def_10 X1 -> auto___def_10 X1). tauto. exact (rem_7231 epsilon_m__def_8_pknows_old X1).
Defined.

Remark rem_7233 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X2:term, auto___def_11 X2 -> auto___def_11 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7234 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto___def_11 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_8_pknows_old. intros X1 X2.
  cut (auto___def_11 X2 -> auto___def_11 X2). tauto. exact (rem_7233 epsilon_m__def_8_pknows_old X2).
Defined.

Remark rem_7235 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> (auto___def_10 X1 /\ auto___def_11 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_8_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_10 X1). 2:apply (rem_7232 epsilon_m__def_8_pknows_old X1 X2);  assumption.
  cut (auto___def_11 X2). 2:apply (rem_7234 epsilon_m__def_8_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7236 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_knows_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_8_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_7235 epsilon_m__def_8_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_8_pknows_old A1 A2. intros. apply trans_knows_old_enc_1;  tauto.
 clear  epsilon_m__def_8_pknows_old A1 A2. tauto.
Defined.

Remark rem_7237 : forall X1 X2:term, auto___def_8 (enc X1 X2) -> or_1
    (auto___def_10 X1 /\ auto___def_11 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7238 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_8 (enc X1 X2) -> auto_knows_old (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_8_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_7237 X1 X2 H);  intros.
  apply (rem_7236 epsilon_m__def_8_pknows_old X1 X2);  tauto.
Defined.

Remark rem_7239 : forall X1 X2:term, auto___def_8 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7240 : forall X1 X2:term, auto___def_8 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7241 : forall X1 X2:term, auto___def_8 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7242 : auto___def_8 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7243 : forall X1 X2:term, auto___def_8 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7244 : forall X1 X2:term, auto___def_8 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7245 : forall X1 X2:term, auto___def_8 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7246 : forall X1:term, auto___def_8 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7247 : auto___def_8 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7248 : forall X1 X2:term, auto___def_8 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7249 : forall X1 X2:term, auto___def_8 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7250 : auto___def_8 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7251 : auto___def_8 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7252 : forall X1 X2:term, auto___def_8 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7253 : forall X1 X2:term, auto___def_8 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7254 : forall X1 X2:term, auto___def_8 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7255 : forall X1:term, auto___def_8 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7256 : auto___def_8 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7257 : forall X1 X2:term, auto___def_8 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7258 : auto___def_8 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7259 : auto___def_8 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7260 : auto___def_8 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7261 : forall X1 X2:term, auto___def_8 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7262 : forall X1 X2:term, auto___def_8 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7263 : forall X1:term, auto___def_8 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_8_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_7250  H).
   intro H. elim (rem_7242  H).
  intros X1 X2. intro H. elim (rem_7254 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7239 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7253 X1 X2 H).
  intros X1 X2;  exact (rem_7238 epsilon_m__def_8_pknows_old X1 X2).
   intro H. elim (rem_7258  H).
  intros X1 X2. intro H. elim (rem_7262 X1 X2 H).
   intro H. elim (rem_7259  H).
  intros X1 X2. intro H. elim (rem_7261 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7243 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7240 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7252 X1 X2 H).
  intros X1. intro H. elim (rem_7246 X1 H).
  intros X1 X2. intro H. elim (rem_7249 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7248 X1 X2 H).
   intro H. elim (rem_7251  H).
   intro H. elim (rem_7247  H).
  intros X1 X2. intro H. elim (rem_7245 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7244 X1 X2 H).
  intros X1. intro H. elim (rem_7255 X1 H).
   intro H. elim (rem_7260  H).
  intros X1 X2. intro H. elim (rem_7257 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7241 X1 X2 H).
   intro H. elim (rem_7256  H).
Qed.

Remark rem_7264 : (forall X:term, auto___def_7 X -> auto_knows_old X)
    -> forall X1:term, auto___def_8 X1 -> auto_knows_old X1. (* Cut history. *)
Proof.  intros epsilon_m__def_7_pknows_old. exact (rem_7263).
Defined.

Remark rem_7265 : (forall X:term, auto___def_7 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_8 X1 -> auto___def_9 X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_7_pknows_old. intros X1 X2.
  cut (auto___def_8 X1 -> auto_knows_old X1). tauto. exact (rem_7264 epsilon_m__def_7_pknows_old X1).
Defined.

Remark rem_7266 : (forall X:term, auto___def_9 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_9_pknows_old.  tauto.
Defined.

Remark rem_7267 : (forall X:term, auto___def_9 X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_9_pknows_old.  case (rem_7266 epsilon_m__def_9_pknows_old). clear  epsilon_m__def_9_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_m__def_9_pknows_old. tauto.
Defined.

Remark rem_7268 : auto___def_9 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7269 : (forall X:term, auto___def_9 X -> auto_knows_old X)
    -> auto___def_9 nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_9_pknows_old. intro H. intros.
  elim (rem_7268 H);  intros.
  apply (rem_7267 epsilon_m__def_9_pknows_old);  tauto.
Defined.

Remark rem_7270 : forall X1 X2:term, auto___def_9 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7271 : forall X1 X2:term, auto___def_9 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7272 : forall X1 X2:term, auto___def_9 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7273 : auto___def_9 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7274 : forall X1 X2:term, auto___def_9 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7275 : forall X1 X2:term, auto___def_9 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7276 : forall X1 X2:term, auto___def_9 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7277 : forall X1:term, auto___def_9 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7278 : auto___def_9 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7279 : forall X1 X2:term, auto___def_9 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7280 : forall X1 X2:term, auto___def_9 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7281 : auto___def_9 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7282 : auto___def_9 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7283 : forall X1 X2:term, auto___def_9 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7284 : forall X1 X2:term, auto___def_9 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7285 : forall X1 X2:term, auto___def_9 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7286 : forall X1 X2:term, auto___def_9 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7287 : forall X1:term, auto___def_9 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7288 : auto___def_9 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7289 : forall X1 X2:term, auto___def_9 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7290 : auto___def_9 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7291 : auto___def_9 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7292 : forall X1 X2:term, auto___def_9 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7293 : forall X1 X2:term, auto___def_9 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7294 : forall X2:term, auto___def_9 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_9_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_7281  H).
   intro H. elim (rem_7273  H).
  intros X1 X2. intro H. elim (rem_7286 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7270 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7284 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7285 X1 X2 H).
   intro H. elim (rem_7290  H).
  intros X1 X2. intro H. elim (rem_7293 X1 X2 H).
  exact (rem_7269 epsilon_m__def_9_pknows_old ).
  intros X1 X2. intro H. elim (rem_7292 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7274 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7271 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7283 X1 X2 H).
  intros X1. intro H. elim (rem_7277 X1 H).
  intros X1 X2. intro H. elim (rem_7280 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7279 X1 X2 H).
   intro H. elim (rem_7282  H).
   intro H. elim (rem_7278  H).
  intros X1 X2. intro H. elim (rem_7276 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7275 X1 X2 H).
  intros X1. intro H. elim (rem_7287 X1 H).
   intro H. elim (rem_7291  H).
  intros X1 X2. intro H. elim (rem_7289 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7272 X1 X2 H).
   intro H. elim (rem_7288  H).
Qed.

Remark rem_7295 : (forall X:term, auto___def_7 X -> auto_knows_old X)
    -> forall X2:term, auto___def_9 X2 -> auto_knows_old X2. (* Cut history. *)
Proof.  intros epsilon_m__def_7_pknows_old. exact (rem_7294).
Defined.

Remark rem_7296 : (forall X:term, auto___def_7 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_8 X1 -> auto___def_9 X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_7_pknows_old. intros X1 X2.
  cut (auto___def_9 X2 -> auto_knows_old X2). tauto. exact (rem_7295 epsilon_m__def_7_pknows_old X2).
Defined.

Remark rem_7297 : (forall X:term, auto___def_7 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_8 X1 -> auto___def_9 X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_7_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_7265 epsilon_m__def_7_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_7296 epsilon_m__def_7_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7298 : (forall X:term, auto___def_7 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_8 X1 -> auto___def_9 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_7_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_7297 epsilon_m__def_7_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_7_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__def_7_pknows_old A1 A2. tauto.
Defined.

Remark rem_7299 : forall X1 X2:term, auto___def_7 (cons X1 X2) -> or_1
    (auto___def_8 X1 /\ auto___def_9 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7300 : (forall X:term, auto___def_7 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_7 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_7_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_7299 X1 X2 H);  intros.
  apply (rem_7298 epsilon_m__def_7_pknows_old X1 X2);  tauto.
Defined.

Remark rem_7301 : forall X1 X2:term, auto___def_7 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7302 : forall X1 X2:term, auto___def_7 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7303 : forall X1 X2:term, auto___def_7 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7304 : auto___def_7 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7305 : forall X1 X2:term, auto___def_7 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7306 : forall X1 X2:term, auto___def_7 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7307 : forall X1 X2:term, auto___def_7 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7308 : forall X1:term, auto___def_7 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7309 : auto___def_7 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7310 : forall X1 X2:term, auto___def_7 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7311 : forall X1 X2:term, auto___def_7 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7312 : auto___def_7 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7313 : auto___def_7 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7314 : forall X1 X2:term, auto___def_7 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7315 : forall X1 X2:term, auto___def_7 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7316 : forall X1 X2:term, auto___def_7 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7317 : forall X1:term, auto___def_7 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7318 : auto___def_7 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7319 : forall X1 X2:term, auto___def_7 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7320 : auto___def_7 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7321 : auto___def_7 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7322 : auto___def_7 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7323 : forall X1 X2:term, auto___def_7 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7324 : forall X1 X2:term, auto___def_7 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7325 : forall X2:term, auto___def_7 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_7_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_7312  H).
   intro H. elim (rem_7304  H).
  intros X1 X2;  exact (rem_7300 epsilon_m__def_7_pknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_7301 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7316 X1 X2 H).
   intro H. elim (rem_7320  H).
  intros X1 X2. intro H. elim (rem_7324 X1 X2 H).
   intro H. elim (rem_7321  H).
  intros X1 X2. intro H. elim (rem_7323 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7305 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7302 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7314 X1 X2 H).
  intros X1. intro H. elim (rem_7308 X1 H).
  intros X1 X2. intro H. elim (rem_7311 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7310 X1 X2 H).
   intro H. elim (rem_7313  H).
   intro H. elim (rem_7309  H).
  intros X1 X2. intro H. elim (rem_7307 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7306 X1 X2 H).
  intros X1. intro H. elim (rem_7317 X1 H).
   intro H. elim (rem_7322  H).
  intros X1 X2. intro H. elim (rem_7319 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7303 X1 X2 H).
   intro H. elim (rem_7318  H).
Qed.

Remark rem_7326 : forall X1 X2:term, auto___def_7 X2 -> auto___type_1 X1 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_7 X2 -> auto_knows_old X2). tauto. exact (rem_7325 X2).
Qed.

Remark rem_7327 : forall X1 X2:term, auto___def_7 X2 -> auto___type_1 X1 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_7230 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_7326 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_7328 : forall X1 X2:term, auto___def_7 X2 -> auto___type_1 X1 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_7327 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7329 : forall X1:term, auto_knows_old X1 -> auto_knows_old (p X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_7189 X1 A1). clear  A1. intros. apply trans_knows_old_p_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_7330 : (forall X:term, auto___def_10 X -> auto_knows_old X -> False)
    -> forall X1:term, auto___def_61 X1 -> auto___def_12 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_10_mknows_old. exact (rem_6967).
Defined.

Remark rem_7331 : (forall X:term, auto___def_10 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_62 X2 -> auto___def_12 X1 -> auto___def_13 X2 -> auto___def_61 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_10_mknows_old. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_12 X1 -> False). clear  epsilon_m__def_10_mknows_old. tauto.
  exact (rem_7330 epsilon_m__def_10_mknows_old X1).
Defined.

Remark rem_7332 : (forall X:term, auto_agent X -> auto___def_13 X -> False)
    -> auto___def_13 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_13. intro H. intros.
  elim (rem_1765 H);  intros.
Defined.

Remark rem_7333 : (forall X:term, auto_agent X -> auto___def_13 X -> False)
    -> auto_agent bob -> auto___def_13 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_13. intro H. intros.
  elim (rem_1083 H);  intros.
  apply (rem_7332 epsilon_magent_m__def_13);  tauto.
Defined.

Remark rem_7334 : (forall X:term, auto_agent X -> auto___def_13 X -> False)
    -> auto___def_13 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_13. intro H. intros.
  elim (rem_1773 H);  intros.
Defined.

Remark rem_7335 : (forall X:term, auto_agent X -> auto___def_13 X -> False)
    -> auto_agent alice -> auto___def_13 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_13. intro H. intros.
  elim (rem_1086 H);  intros.
  apply (rem_7334 epsilon_magent_m__def_13);  tauto.
Defined.

Remark rem_7336 : (forall X:term, auto_agent X -> auto___def_13 X -> False)
    -> auto___def_13 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_13. intro H. intros.
  elim (rem_1782 H);  intros.
Defined.

Remark rem_7337 : (forall X:term, auto_agent X -> auto___def_13 X -> False)
    -> auto_agent i -> auto___def_13 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_13. intro H. intros.
  elim (rem_1089 H);  intros.
  apply (rem_7336 epsilon_magent_m__def_13);  tauto.
Defined.

Remark rem_7338 : (forall X:term, auto_agent X -> auto___def_13 X -> False)
    -> auto___def_13 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_13. intro H. intros.
  elim (rem_1784 H);  intros.
Defined.

Remark rem_7339 : (forall X:term, auto_agent X -> auto___def_13 X -> False)
    -> auto_agent server -> auto___def_13 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_m__def_13. intro H. intros.
  elim (rem_1092 H);  intros.
  apply (rem_7338 epsilon_magent_m__def_13);  tauto.
Defined.

Remark rem_7340 : forall X2:term, auto_agent X2 -> auto___def_13 X2 -> False. (* Induct. *)
Proof.
  fix epsilon_magent_m__def_13 1.
  intro X. case X.
  exact (rem_7335 epsilon_magent_m__def_13 ).
  exact (rem_7333 epsilon_magent_m__def_13 ).
  intros X1 X2. intro H. elim (rem_1108 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1094 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1106 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1107 X1 X2 H).
  exact (rem_7337 epsilon_magent_m__def_13 ).
  intros X1 X2. intro H. elim (rem_1114 X1 X2 H).
   intro H. elim (rem_1112  H).
  intros X1 X2. intro H. elim (rem_1113 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1097 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1095 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1105 X1 X2 H).
  intros X1. intro H. elim (rem_1100 X1 H).
  intros X1 X2. intro H. elim (rem_1103 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1102 X1 X2 H).
   intro H. elim (rem_1104  H).
   intro H. elim (rem_1101  H).
  intros X1 X2. intro H. elim (rem_1099 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1098 X1 X2 H).
  intros X1. intro H. elim (rem_1109 X1 H).
  exact (rem_7339 epsilon_magent_m__def_13 ).
  intros X1 X2. intro H. elim (rem_1111 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1096 X1 X2 H).
   intro H. elim (rem_1110  H).
Qed.

Remark rem_7341 : (forall X:term, auto___def_10 X -> auto_knows_old X -> False)
    -> forall X2:term, auto_agent X2 -> auto___def_13 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_10_mknows_old. exact (rem_7340).
Defined.

Remark rem_7342 : (forall X:term, auto___def_10 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_51 X1 -> auto_agent X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_10_mknows_old. intros X1 X2.
  cut (auto_agent X2 -> auto___def_13 X2 -> False). clear  epsilon_m__def_10_mknows_old. tauto.
  exact (rem_7341 epsilon_m__def_10_mknows_old X2).
Defined.

Remark rem_7343 : (forall X:term, auto___def_10 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto___def_12 X1 -> auto___def_13 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_10_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1361 X1 X2 H);  intros.
  apply (rem_7331 epsilon_m__def_10_mknows_old X1 X2);  tauto.
  apply (rem_7342 epsilon_m__def_10_mknows_old X1 X2);  tauto.
Defined.

Remark rem_7344 : (forall X:term, auto___def_10 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_10 (key X1 X2) -> auto_knows_old (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_10_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_3175 X1 X2 H);  intros.
  apply (rem_7343 epsilon_m__def_10_mknows_old X1 X2);  tauto.
Defined.

Remark rem_7345 : forall X1:term, auto___def_10 X1 -> auto_knows_old X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_10_mknows_old 1.
  intro X. case X.
   intro H. elim (rem_3187  H).
   intro H. elim (rem_3179  H).
  intros X1 X2. intro H. elim (rem_3192 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1818 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3190 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3191 X1 X2 H).
   intro H. elim (rem_3196  H).
  intros X1 X2;  exact (rem_7344 epsilon_m__def_10_mknows_old X1 X2).
   intro H. elim (rem_3197  H).
  intros X1 X2. intro H. elim (rem_3199 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3180 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3177 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3189 X1 X2 H).
  intros X1. intro H. elim (rem_3183 X1 H).
  intros X1 X2. intro H. elim (rem_3186 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3185 X1 X2 H).
   intro H. elim (rem_3188  H).
   intro H. elim (rem_3184  H).
  intros X1 X2. intro H. elim (rem_3182 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3181 X1 X2 H).
  intros X1. intro H. elim (rem_3193 X1 H).
   intro H. elim (rem_3198  H).
  intros X1 X2. intro H. elim (rem_3195 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3178 X1 X2 H).
   intro H. elim (rem_3194  H).
Qed.

Remark rem_7346 : forall X1 X2:term, auto___def_10 X2 -> auto___def_11 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7345 X2)). tauto.
Qed.

Remark rem_7347 : (forall X:term, auto___def_17 X -> auto___def_36 X -> False)
    -> forall X1 X2:term, auto___def_36 (r_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_m__def_36. intros X1 X2. intro H. intros.
  elim (rem_2316 X1 X2 H);  intros.
Defined.

Remark rem_7348 : (forall X:term, auto___def_17 X -> auto___def_36 X -> False)
    -> forall X1 X2:term, auto___def_17 (r_old X1 X2) -> auto___def_36 (r_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_m__def_36. intros X1 X2. intro H. intros.
  elim (rem_1322 X1 X2 H);  intros.
  apply (rem_7347 epsilon_m__def_17_m__def_36 X1 X2);  tauto.
Defined.

Remark rem_7349 : forall X1:term, auto___def_17 X1 -> auto___def_36 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_17_m__def_36 1.
  intro X. case X.
   intro H. elim (rem_1334  H).
   intro H. elim (rem_1327  H).
  intros X1 X2. intro H. elim (rem_1339 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1337 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1338 X1 X2 H).
   intro H. elim (rem_1343  H).
  intros X1 X2. intro H. elim (rem_1347 X1 X2 H).
   intro H. elim (rem_1344  H).
  intros X1 X2. intro H. elim (rem_1346 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1325 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1336 X1 X2 H).
  intros X1. intro H. elim (rem_1330 X1 H).
  intros X1 X2. intro H. elim (rem_1333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1332 X1 X2 H).
   intro H. elim (rem_1335  H).
   intro H. elim (rem_1331  H).
  intros X1 X2. intro H. elim (rem_1329 X1 X2 H).
  intros X1 X2;  exact (rem_7348 epsilon_m__def_17_m__def_36 X1 X2).
  intros X1. intro H. elim (rem_1340 X1 H).
   intro H. elim (rem_1345  H).
  intros X1 X2. intro H. elim (rem_1342 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1326 X1 X2 H).
   intro H. elim (rem_1341  H).
Qed.

Remark rem_7350 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___def_17 X1 -> auto___def_36 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_old_m__def_15. exact (rem_7349).
Defined.

Remark rem_7351 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_2 X2 -> auto___def_17 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_36 X1 -> False). clear  epsilon_mknows_old_m__def_15. tauto.
  exact (rem_7350 epsilon_mknows_old_m__def_15 X1).
Defined.

Remark rem_7352 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_7351 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7353 : (forall X:term, auto___def_24 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (noncea_old X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1328 X1 X2 H);  intros.
Defined.

Remark rem_7354 : (forall X:term, auto___def_24 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_24 (noncea_old X1 X2) -> auto___def_17 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_2007 X1 X2 H);  intros.
  apply (rem_7353 epsilon_m__def_24_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7355 : forall X1:term, auto___def_24 X1 -> auto___def_17 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_24_m__def_17 1.
  intro X. case X.
   intro H. elim (rem_2019  H).
   intro H. elim (rem_2012  H).
  intros X1 X2. intro H. elim (rem_1937 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2009 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2022 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2023 X1 X2 H).
   intro H. elim (rem_2027  H).
  intros X1 X2. intro H. elim (rem_2031 X1 X2 H).
   intro H. elim (rem_2028  H).
  intros X1 X2. intro H. elim (rem_2030 X1 X2 H).
  intros X1 X2;  exact (rem_7354 epsilon_m__def_24_m__def_17 X1 X2).
  intros X1 X2. intro H. elim (rem_2010 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2021 X1 X2 H).
  intros X1. intro H. elim (rem_2015 X1 H).
  intros X1 X2. intro H. elim (rem_2018 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2017 X1 X2 H).
   intro H. elim (rem_2020  H).
   intro H. elim (rem_2016  H).
  intros X1 X2. intro H. elim (rem_2014 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2013 X1 X2 H).
  intros X1. intro H. elim (rem_2024 X1 H).
   intro H. elim (rem_2029  H).
  intros X1 X2. intro H. elim (rem_2026 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2011 X1 X2 H).
   intro H. elim (rem_2025  H).
Qed.

Remark rem_7356 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___def_24 X1 -> auto___def_17 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_old_m__def_15. exact (rem_7355).
Defined.

Remark rem_7357 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_25 X2 -> auto___type_2 X2 -> auto___def_24 X1 -> auto___def_17 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_17 X1 -> False). clear  epsilon_mknows_old_m__def_15. tauto.
  exact (rem_7356 epsilon_mknows_old_m__def_15 X1).
Defined.

Remark rem_7358 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_7357 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7359 : (forall X:term, auto___type_7 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (nonceb_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1336 X1 X2 H);  intros.
Defined.

Remark rem_7360 : (forall X:term, auto___type_7 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> auto___def_17 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_2043 X1 X2 H);  intros.
  apply (rem_7359 epsilon_m__type_7_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7361 : forall X1:term, auto___type_7 X1 -> auto___def_17 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_7_m__def_17 1.
  intro X. case X.
   intro H. elim (rem_2056  H).
   intro H. elim (rem_2048  H).
  intros X1 X2. intro H. elim (rem_1939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2058 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2059 X1 X2 H).
   intro H. elim (rem_2063  H).
  intros X1 X2. intro H. elim (rem_2067 X1 X2 H).
   intro H. elim (rem_2064  H).
  intros X1 X2. intro H. elim (rem_2066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2046 X1 X2 H).
  intros X1 X2;  exact (rem_7360 epsilon_m__type_7_m__def_17 X1 X2).
  intros X1. intro H. elim (rem_2052 X1 H).
  intros X1 X2. intro H. elim (rem_2055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2054 X1 X2 H).
   intro H. elim (rem_2057  H).
   intro H. elim (rem_2053  H).
  intros X1 X2. intro H. elim (rem_2051 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2050 X1 X2 H).
  intros X1. intro H. elim (rem_2060 X1 H).
   intro H. elim (rem_2065  H).
  intros X1 X2. intro H. elim (rem_2062 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2047 X1 X2 H).
   intro H. elim (rem_2061  H).
Qed.

Remark rem_7362 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___type_7 X1 -> auto___def_17 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_old_m__def_15. exact (rem_7361).
Defined.

Remark rem_7363 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_44 X2 -> auto___type_2 X2 -> auto___def_17 X1 -> auto___type_7 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2.
  cut (auto___type_7 X1 -> auto___def_17 X1 -> False). clear  epsilon_mknows_old_m__def_15. tauto.
  exact (rem_7362 epsilon_mknows_old_m__def_15 X1).
Defined.

Remark rem_7364 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_7363 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7365 : (forall X:term, auto___def_17 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto_knows_old (r_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_2500 X1 X2 H);  intros.
Defined.

Remark rem_7366 : (forall X:term, auto___def_17 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_17 (r_old X1 X2) -> auto_knows_old (r_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1322 X1 X2 H);  intros.
  apply (rem_7365 epsilon_m__def_17_mknows_old X1 X2);  tauto.
Defined.

Remark rem_7367 : forall X1:term, auto___def_17 X1 -> auto_knows_old X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_17_mknows_old 1.
  intro X. case X.
   intro H. elim (rem_1334  H).
   intro H. elim (rem_1327  H).
  intros X1 X2. intro H. elim (rem_1339 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1337 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1338 X1 X2 H).
   intro H. elim (rem_1343  H).
  intros X1 X2. intro H. elim (rem_1347 X1 X2 H).
   intro H. elim (rem_1344  H).
  intros X1 X2. intro H. elim (rem_1346 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1325 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1336 X1 X2 H).
  intros X1. intro H. elim (rem_1330 X1 H).
  intros X1 X2. intro H. elim (rem_1333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1332 X1 X2 H).
   intro H. elim (rem_1335  H).
   intro H. elim (rem_1331  H).
  intros X1 X2. intro H. elim (rem_1329 X1 X2 H).
  intros X1 X2;  exact (rem_7366 epsilon_m__def_17_mknows_old X1 X2).
  intros X1. intro H. elim (rem_1340 X1 H).
   intro H. elim (rem_1345  H).
  intros X1 X2. intro H. elim (rem_1342 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1326 X1 X2 H).
   intro H. elim (rem_1341  H).
Qed.

Remark rem_7368 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___def_17 X1 -> auto_knows_old X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_old_m__def_15. exact (rem_7367).
Defined.

Remark rem_7369 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_2 X2 -> auto___def_17 X1 -> auto_knows_old X2 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2.
  cut (auto___def_17 X1 -> auto_knows_old X1 -> False). clear  epsilon_mknows_old_m__def_15. tauto.
  exact (rem_7368 epsilon_mknows_old_m__def_15 X1).
Defined.

Remark rem_7370 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_7369 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7371 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto___def_15 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1860 X1 X2 H);  intros.
  apply (rem_7352 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
  apply (rem_7358 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
  apply (rem_7364 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
  apply (rem_7370 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7372 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> auto___def_15 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intro H. intros.
  elim (rem_3212 H);  intros.
Defined.

Remark rem_7373 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> auto_knows_old bob -> auto___def_15 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intro H. intros.
  elim (rem_2438 H);  intros.
  apply (rem_7372 epsilon_mknows_old_m__def_15);  tauto.
Defined.

Remark rem_7374 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___def_15 (p X1) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1. intro H. intros.
  elim (rem_3216 X1 H);  intros.
Defined.

Remark rem_7375 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto_knows_old (p X1) -> auto___def_15 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1. intro H. intros.
  elim (rem_2442 X1 H);  intros.
  apply (rem_7374 epsilon_mknows_old_m__def_15 X1);  tauto.
Defined.

Remark rem_7376 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> auto___def_15 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intro H. intros.
  elim (rem_3220 H);  intros.
Defined.

Remark rem_7377 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> auto_knows_old alice -> auto___def_15 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intro H. intros.
  elim (rem_2445 H);  intros.
  apply (rem_7376 epsilon_mknows_old_m__def_15);  tauto.
Defined.

Remark rem_7378 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (dec X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3223 X1 X2 H);  intros.
Defined.

Remark rem_7379 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_knows_old (dec X1 X2) -> auto___def_15 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_2448 X1 X2 H);  intros.
  apply (rem_7378 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7380 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (enc X1 X2) -> auto___def_10 X1 -> auto___def_11 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3224 X1 X2 H);  intros.
Defined.

Remark rem_7381 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (enc X1 X2) -> auto___def_15 X1 -> auto___def_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3224 X1 X2 H);  intros.
Defined.

Remark rem_7382 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (enc X1 X2) -> auto___def_19 X1 -> auto___def_20 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3224 X1 X2 H);  intros.
Defined.

Remark rem_7383 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (enc X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3224 X1 X2 H);  intros.
Defined.

Remark rem_7384 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_knows_old (enc X1 X2) -> auto___def_15 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1290 X1 X2 H);  intros.
  apply (rem_7380 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
  apply (rem_7381 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
  apply (rem_7382 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
  apply (rem_7383 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7385 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (cons X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3225 X1 X2 H);  intros.
Defined.

Remark rem_7386 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto___def_15 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1263 X1 X2 H);  intros.
  apply (rem_7385 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7387 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___def_15 (s X1) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1. intro H. intros.
  elim (rem_3226 X1 H);  intros.
Defined.

Remark rem_7388 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto_knows_old (s X1) -> auto___def_15 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1. intro H. intros.
  elim (rem_2473 X1 H);  intros.
  apply (rem_7387 epsilon_mknows_old_m__def_15 X1);  tauto.
Defined.

Remark rem_7389 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> auto___def_15 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intro H. intros.
  elim (rem_3229 H);  intros.
Defined.

Remark rem_7390 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> auto_knows_old i -> auto___def_15 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intro H. intros.
  elim (rem_2476 H);  intros.
  apply (rem_7389 epsilon_mknows_old_m__def_15);  tauto.
Defined.

Remark rem_7391 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> auto___def_15 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intro H. intros.
  elim (rem_3230 H);  intros.
Defined.

Remark rem_7392 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> auto_knows_old nil -> auto___def_15 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intro H. intros.
  elim (rem_2479 H);  intros.
  apply (rem_7391 epsilon_mknows_old_m__def_15);  tauto.
Defined.

Remark rem_7393 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> auto___def_15 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intro H. intros.
  elim (rem_3231 H);  intros.
Defined.

Remark rem_7394 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> auto_knows_old server -> auto___def_15 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intro H. intros.
  elim (rem_2482 H);  intros.
  apply (rem_7393 epsilon_mknows_old_m__def_15);  tauto.
Defined.

Remark rem_7395 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (key X1 X2) -> auto___def_61 X1 -> auto___def_62 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3233 X1 X2 H);  intros.
Defined.

Remark rem_7396 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3233 X1 X2 H);  intros.
Defined.

Remark rem_7397 : (forall X:term, auto_knows_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto___def_15 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1361 X1 X2 H);  intros.
  apply (rem_7395 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
  apply (rem_7396 epsilon_mknows_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7398 : forall X1:term, auto_knows_old X1 -> auto___def_15 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_old_m__def_15 1.
  intro X. case X.
  exact (rem_7377 epsilon_mknows_old_m__def_15 ).
  exact (rem_7373 epsilon_mknows_old_m__def_15 ).
  intros X1 X2;  exact (rem_7386 epsilon_mknows_old_m__def_15 X1 X2).
  intros X1 X2;  exact (rem_7371 epsilon_mknows_old_m__def_15 X1 X2).
  intros X1 X2;  exact (rem_7379 epsilon_mknows_old_m__def_15 X1 X2).
  intros X1 X2;  exact (rem_7384 epsilon_mknows_old_m__def_15 X1 X2).
  exact (rem_7390 epsilon_mknows_old_m__def_15 ).
  intros X1 X2;  exact (rem_7397 epsilon_mknows_old_m__def_15 X1 X2).
  exact (rem_7392 epsilon_mknows_old_m__def_15 ).
  intros X1 X2. intro H. elim (rem_2508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2505 X1 X2 H).
  intros X1;  exact (rem_7375 epsilon_mknows_old_m__def_15 X1).
  intros X1 X2. intro H. elim (rem_2503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1287 X1 X2 H).
   intro H. elim (rem_2504  H).
   intro H. elim (rem_2502  H).
  intros X1 X2. intro H. elim (rem_2501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2500 X1 X2 H).
  intros X1;  exact (rem_7388 epsilon_mknows_old_m__def_15 X1).
  exact (rem_7394 epsilon_mknows_old_m__def_15 ).
  intros X1 X2. intro H. elim (rem_2507 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2498 X1 X2 H).
   intro H. elim (rem_2506  H).
Qed.

Remark rem_7399 : forall X1 X2:term, auto___def_15 X2 -> auto___def_16 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7398 X2)). tauto.
Qed.

Remark rem_7400 : (forall X:term, auto___def_36 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (cons X1 X2) -> auto___type_6 X1 -> auto___def_38 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_36_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2540 X1 X2 H);  intros.
Defined.

Remark rem_7401 : (forall X:term, auto___def_36 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_36 (cons X1 X2) -> auto___def_21 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_36_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_1935 X1 X2 H);  intros.
  apply (rem_7400 epsilon_m__def_36_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7402 : forall X1:term, auto___def_36 X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_36_m__def_21 1.
  intro X. case X.
   intro H. elim (rem_1993  H).
   intro H. elim (rem_1990  H).
  intros X1 X2;  exact (rem_7401 epsilon_m__def_36_m__def_21 X1 X2).
  intros X1 X2. intro H. elim (rem_2312 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2325 X1 X2 H).
   intro H. elim (rem_1984  H).
  intros X1 X2. intro H. elim (rem_2331 X1 X2 H).
   intro H. elim (rem_2329  H).
  intros X1 X2. intro H. elim (rem_2330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2313 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2323 X1 X2 H).
  intros X1. intro H. elim (rem_2318 X1 H).
  intros X1 X2. intro H. elim (rem_2321 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2320 X1 X2 H).
   intro H. elim (rem_2322  H).
   intro H. elim (rem_2319  H).
  intros X1 X2. intro H. elim (rem_2317 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2316 X1 X2 H).
  intros X1. intro H. elim (rem_2326 X1 H).
   intro H. elim (rem_1998  H).
  intros X1 X2. intro H. elim (rem_2328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2314 X1 X2 H).
   intro H. elim (rem_2327  H).
Qed.

Remark rem_7403 : (forall X:term, auto___def_19 X -> auto_knows_old X -> False)
    -> forall X1:term, auto___def_36 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_19_mknows_old. exact (rem_7402).
Defined.

Remark rem_7404 : (forall X:term, auto___def_19 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_19_mknows_old. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_21 X1 -> False). clear  epsilon_m__def_19_mknows_old. tauto.
  exact (rem_7403 epsilon_m__def_19_mknows_old X1).
Defined.

Remark rem_7405 : forall X1 X2:term, auto___def_21 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7406 : (forall X:term, auto___def_24 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (noncea_old X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7405 X1 X2 H);  intros.
Defined.

Remark rem_7407 : (forall X:term, auto___def_24 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_24 (noncea_old X1 X2) -> auto___def_21 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2007 X1 X2 H);  intros.
  apply (rem_7406 epsilon_m__def_24_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7408 : forall X1:term, auto___def_24 X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_24_m__def_21 1.
  intro X. case X.
   intro H. elim (rem_2019  H).
   intro H. elim (rem_2012  H).
  intros X1 X2. intro H. elim (rem_1937 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2009 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2022 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2023 X1 X2 H).
   intro H. elim (rem_2027  H).
  intros X1 X2. intro H. elim (rem_2031 X1 X2 H).
   intro H. elim (rem_2028  H).
  intros X1 X2. intro H. elim (rem_2030 X1 X2 H).
  intros X1 X2;  exact (rem_7407 epsilon_m__def_24_m__def_21 X1 X2).
  intros X1 X2. intro H. elim (rem_2010 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2021 X1 X2 H).
  intros X1. intro H. elim (rem_2015 X1 H).
  intros X1 X2. intro H. elim (rem_2018 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2017 X1 X2 H).
   intro H. elim (rem_2020  H).
   intro H. elim (rem_2016  H).
  intros X1 X2. intro H. elim (rem_2014 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2013 X1 X2 H).
  intros X1. intro H. elim (rem_2024 X1 H).
   intro H. elim (rem_2029  H).
  intros X1 X2. intro H. elim (rem_2026 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2011 X1 X2 H).
   intro H. elim (rem_2025  H).
Qed.

Remark rem_7409 : (forall X:term, auto___def_19 X -> auto_knows_old X -> False)
    -> forall X1:term, auto___def_24 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_19_mknows_old. exact (rem_7408).
Defined.

Remark rem_7410 : (forall X:term, auto___def_19 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_25 X2 -> auto___def_24 X1 -> auto___def_22 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_19_mknows_old. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_21 X1 -> False). clear  epsilon_m__def_19_mknows_old. tauto.
  exact (rem_7409 epsilon_m__def_19_mknows_old X1).
Defined.

Remark rem_7411 : forall X1 X2:term, auto___def_21 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7412 : (forall X:term, auto___type_7 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (nonceb_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7411 X1 X2 H);  intros.
Defined.

Remark rem_7413 : (forall X:term, auto___type_7 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> auto___def_21 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2043 X1 X2 H);  intros.
  apply (rem_7412 epsilon_m__type_7_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7414 : forall X1:term, auto___type_7 X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_7_m__def_21 1.
  intro X. case X.
   intro H. elim (rem_2056  H).
   intro H. elim (rem_2048  H).
  intros X1 X2. intro H. elim (rem_1939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2058 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2059 X1 X2 H).
   intro H. elim (rem_2063  H).
  intros X1 X2. intro H. elim (rem_2067 X1 X2 H).
   intro H. elim (rem_2064  H).
  intros X1 X2. intro H. elim (rem_2066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2046 X1 X2 H).
  intros X1 X2;  exact (rem_7413 epsilon_m__type_7_m__def_21 X1 X2).
  intros X1. intro H. elim (rem_2052 X1 H).
  intros X1 X2. intro H. elim (rem_2055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2054 X1 X2 H).
   intro H. elim (rem_2057  H).
   intro H. elim (rem_2053  H).
  intros X1 X2. intro H. elim (rem_2051 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2050 X1 X2 H).
  intros X1. intro H. elim (rem_2060 X1 H).
   intro H. elim (rem_2065  H).
  intros X1 X2. intro H. elim (rem_2062 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2047 X1 X2 H).
   intro H. elim (rem_2061  H).
Qed.

Remark rem_7415 : (forall X:term, auto___def_19 X -> auto_knows_old X -> False)
    -> forall X1:term, auto___type_7 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_19_mknows_old. exact (rem_7414).
Defined.

Remark rem_7416 : (forall X:term, auto___def_19 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_44 X2 -> auto___def_22 X2 -> auto___type_7 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_19_mknows_old. intros X1 X2.
  cut (auto___type_7 X1 -> auto___def_21 X1 -> False). clear  epsilon_m__def_19_mknows_old. tauto.
  exact (rem_7415 epsilon_m__def_19_mknows_old X1).
Defined.

Remark rem_7417 : forall X1 X2:term, auto___def_21 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7418 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7419 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7420 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7421 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7422 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto___def_21 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_1860 X1 X2 H);  intros.
  apply (rem_7418 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
  apply (rem_7419 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
  apply (rem_7420 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
  apply (rem_7421 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7423 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> auto___def_21 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intro H. intros.
  elim (rem_1966 H);  intros.
Defined.

Remark rem_7424 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> auto_knows_old bob -> auto___def_21 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intro H. intros.
  elim (rem_2438 H);  intros.
  apply (rem_7423 epsilon_mknows_old_m__def_21);  tauto.
Defined.

Remark rem_7425 : forall X1:term, auto___def_21 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7426 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1:term, auto___def_21 (p X1) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1. intro H. intros.
  elim (rem_7425 X1 H);  intros.
Defined.

Remark rem_7427 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1:term, auto_knows_old (p X1) -> auto___def_21 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1. intro H. intros.
  elim (rem_2442 X1 H);  intros.
  apply (rem_7426 epsilon_mknows_old_m__def_21 X1);  tauto.
Defined.

Remark rem_7428 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> auto___def_21 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intro H. intros.
  elim (rem_1969 H);  intros.
Defined.

Remark rem_7429 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> auto_knows_old alice -> auto___def_21 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intro H. intros.
  elim (rem_2445 H);  intros.
  apply (rem_7428 epsilon_mknows_old_m__def_21);  tauto.
Defined.

Remark rem_7430 : forall X1 X2:term, auto___def_21 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7431 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (dec X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7430 X1 X2 H);  intros.
Defined.

Remark rem_7432 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto_knows_old (dec X1 X2) -> auto___def_21 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2448 X1 X2 H);  intros.
  apply (rem_7431 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7433 : forall X1 X2:term, auto___def_21 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7434 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto___def_10 X1 -> auto___def_11 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7435 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto___def_15 X1 -> auto___def_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7436 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto___def_19 X1 -> auto___def_20 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7437 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7438 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto_knows_old (enc X1 X2) -> auto___def_21 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_1290 X1 X2 H);  intros.
  apply (rem_7434 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
  apply (rem_7435 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
  apply (rem_7436 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
  apply (rem_7437 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7439 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (cons X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2540 X1 X2 H);  intros.
Defined.

Remark rem_7440 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto___def_21 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_1263 X1 X2 H);  intros.
  apply (rem_7439 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7441 : forall X1:term, auto___def_21 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7442 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1:term, auto___def_21 (s X1) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1. intro H. intros.
  elim (rem_7441 X1 H);  intros.
Defined.

Remark rem_7443 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1:term, auto_knows_old (s X1) -> auto___def_21 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1. intro H. intros.
  elim (rem_2473 X1 H);  intros.
  apply (rem_7442 epsilon_mknows_old_m__def_21 X1);  tauto.
Defined.

Remark rem_7444 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> auto___def_21 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intro H. intros.
  elim (rem_1960 H);  intros.
Defined.

Remark rem_7445 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> auto_knows_old i -> auto___def_21 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intro H. intros.
  elim (rem_2476 H);  intros.
  apply (rem_7444 epsilon_mknows_old_m__def_21);  tauto.
Defined.

Remark rem_7446 : auto___def_21 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7447 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> auto___def_21 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intro H. intros.
  elim (rem_7446 H);  intros.
Defined.

Remark rem_7448 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> auto_knows_old nil -> auto___def_21 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intro H. intros.
  elim (rem_2479 H);  intros.
  apply (rem_7447 epsilon_mknows_old_m__def_21);  tauto.
Defined.

Remark rem_7449 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> auto___def_21 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intro H. intros.
  elim (rem_1974 H);  intros.
Defined.

Remark rem_7450 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> auto_knows_old server -> auto___def_21 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intro H. intros.
  elim (rem_2482 H);  intros.
  apply (rem_7449 epsilon_mknows_old_m__def_21);  tauto.
Defined.

Remark rem_7451 : forall X1 X2:term, auto___def_21 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7452 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (key X1 X2) -> auto___def_61 X1 -> auto___def_62 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7451 X1 X2 H);  intros.
Defined.

Remark rem_7453 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7451 X1 X2 H);  intros.
Defined.

Remark rem_7454 : (forall X:term, auto_knows_old X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto___def_21 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_1361 X1 X2 H);  intros.
  apply (rem_7452 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
  apply (rem_7453 epsilon_mknows_old_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7455 : forall X1:term, auto_knows_old X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_old_m__def_21 1.
  intro X. case X.
  exact (rem_7429 epsilon_mknows_old_m__def_21 ).
  exact (rem_7424 epsilon_mknows_old_m__def_21 ).
  intros X1 X2;  exact (rem_7440 epsilon_mknows_old_m__def_21 X1 X2).
  intros X1 X2;  exact (rem_7422 epsilon_mknows_old_m__def_21 X1 X2).
  intros X1 X2;  exact (rem_7432 epsilon_mknows_old_m__def_21 X1 X2).
  intros X1 X2;  exact (rem_7438 epsilon_mknows_old_m__def_21 X1 X2).
  exact (rem_7445 epsilon_mknows_old_m__def_21 ).
  intros X1 X2;  exact (rem_7454 epsilon_mknows_old_m__def_21 X1 X2).
  exact (rem_7448 epsilon_mknows_old_m__def_21 ).
  intros X1 X2. intro H. elim (rem_2508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2505 X1 X2 H).
  intros X1;  exact (rem_7427 epsilon_mknows_old_m__def_21 X1).
  intros X1 X2. intro H. elim (rem_2503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1287 X1 X2 H).
   intro H. elim (rem_2504  H).
   intro H. elim (rem_2502  H).
  intros X1 X2. intro H. elim (rem_2501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2500 X1 X2 H).
  intros X1;  exact (rem_7443 epsilon_mknows_old_m__def_21 X1).
  exact (rem_7450 epsilon_mknows_old_m__def_21 ).
  intros X1 X2. intro H. elim (rem_2507 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2498 X1 X2 H).
   intro H. elim (rem_2506  H).
Qed.

Remark rem_7456 : (forall X:term, auto___def_19 X -> auto_knows_old X -> False)
    -> forall X1:term, auto_knows_old X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_19_mknows_old. exact (rem_7455).
Defined.

Remark rem_7457 : (forall X:term, auto___def_19 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto_knows_old X1 -> auto___def_22 X2 -> auto_knows_old X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_19_mknows_old. intros X1 X2.
  cut (auto_knows_old X1 -> auto___def_21 X1 -> False). clear  epsilon_m__def_19_mknows_old. tauto.
  exact (rem_7456 epsilon_m__def_19_mknows_old X1).
Defined.

Remark rem_7458 : (forall X:term, auto___def_19 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_19_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1860 X1 X2 H);  intros.
  apply (rem_7404 epsilon_m__def_19_mknows_old X1 X2);  tauto.
  apply (rem_7410 epsilon_m__def_19_mknows_old X1 X2);  tauto.
  apply (rem_7416 epsilon_m__def_19_mknows_old X1 X2);  tauto.
  apply (rem_7457 epsilon_m__def_19_mknows_old X1 X2);  tauto.
Defined.

Remark rem_7459 : (forall X:term, auto___def_19 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_19 (crypt X1 X2) -> auto_knows_old (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_19_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1840 X1 X2 H);  intros.
  apply (rem_7458 epsilon_m__def_19_mknows_old X1 X2);  tauto.
Defined.

Remark rem_7460 : forall X1:term, auto___def_19 X1 -> auto_knows_old X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_19_mknows_old 1.
  intro X. case X.
   intro H. elim (rem_3152  H).
   intro H. elim (rem_3144  H).
  intros X1 X2. intro H. elim (rem_3157 X1 X2 H).
  intros X1 X2;  exact (rem_7459 epsilon_m__def_19_mknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_3155 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3156 X1 X2 H).
   intro H. elim (rem_3161  H).
  intros X1 X2. intro H. elim (rem_3165 X1 X2 H).
   intro H. elim (rem_3162  H).
  intros X1 X2. intro H. elim (rem_3164 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3145 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3142 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3154 X1 X2 H).
  intros X1. intro H. elim (rem_3148 X1 H).
  intros X1 X2. intro H. elim (rem_3151 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3150 X1 X2 H).
   intro H. elim (rem_3153  H).
   intro H. elim (rem_3149  H).
  intros X1 X2. intro H. elim (rem_3147 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3146 X1 X2 H).
  intros X1. intro H. elim (rem_3158 X1 H).
   intro H. elim (rem_3163  H).
  intros X1 X2. intro H. elim (rem_3160 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3143 X1 X2 H).
   intro H. elim (rem_3159  H).
Qed.

Remark rem_7461 : forall X1 X2:term, auto___def_19 X2 -> auto___def_20 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7460 X2)). tauto.
Qed.

Remark rem_7462 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old (enc X2 X1) -> auto_testable_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_118 X2 X1 H);  intros.
  apply (rem_7346 X1 X2);  tauto.
  apply (rem_7399 X1 X2);  tauto.
  apply (rem_7461 X1 X2);  tauto.
  apply (rem_6752 X1 X2);  tauto.
Qed.

Remark rem_7463 : forall X1 X2:term, auto_testable_old (enc X2 X1) -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_testable_old (enc X2 X1) -> auto_testable_old X1). tauto. exact (rem_7462 X1 X2).
Qed.

Remark rem_7464 : (forall X:term, auto___type_1 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_1_pknows_current.  tauto.
Defined.

Remark rem_7465 : (forall X:term, auto___type_1 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_1_pknows_current.  case (rem_7464 epsilon_m__type_1_pknows_current). clear  epsilon_m__type_1_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_1_pknows_current. tauto.
Defined.

Remark rem_7466 : (forall X:term, auto___type_1 X -> auto_knows_current X)
    -> auto___type_1 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_1_pknows_current. intro H. intros.
  elim (rem_7197 H);  intros.
  apply (rem_7465 epsilon_m__type_1_pknows_current);  tauto.
Defined.

Remark rem_7467 : (forall X:term, auto___type_1 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_1_pknows_current.  case (rem_7464 epsilon_m__type_1_pknows_current). clear  epsilon_m__type_1_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_1_pknows_current. tauto.
Defined.

Remark rem_7468 : (forall X:term, auto___type_1 X -> auto_knows_current X)
    -> auto___type_1 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_1_pknows_current. intro H. intros.
  elim (rem_7200 H);  intros.
  apply (rem_7467 epsilon_m__type_1_pknows_current);  tauto.
Defined.

Remark rem_7469 : (forall X:term, auto___type_1 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_1_pknows_current.  case (rem_7464 epsilon_m__type_1_pknows_current). clear  epsilon_m__type_1_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_1_pknows_current. tauto.
Defined.

Remark rem_7470 : (forall X:term, auto___type_1 X -> auto_knows_current X)
    -> auto___type_1 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_1_pknows_current. intro H. intros.
  elim (rem_7203 H);  intros.
  apply (rem_7469 epsilon_m__type_1_pknows_current);  tauto.
Defined.

Remark rem_7471 : (forall X:term, auto___type_1 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_1_pknows_current.  case (rem_7464 epsilon_m__type_1_pknows_current). clear  epsilon_m__type_1_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_1_pknows_current. tauto.
Defined.

Remark rem_7472 : (forall X:term, auto___type_1 X -> auto_knows_current X)
    -> auto___type_1 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_1_pknows_current. intro H. intros.
  elim (rem_7206 H);  intros.
  apply (rem_7471 epsilon_m__type_1_pknows_current);  tauto.
Defined.

Remark rem_7473 : forall X1:term, auto___type_1 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_1_pknows_current 1.
  intro X. case X.
  exact (rem_7468 epsilon_m__type_1_pknows_current ).
  exact (rem_7466 epsilon_m__type_1_pknows_current ).
  intros X1 X2. intro H. elim (rem_7222 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7208 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7220 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7221 X1 X2 H).
  exact (rem_7470 epsilon_m__type_1_pknows_current ).
  intros X1 X2. intro H. elim (rem_7228 X1 X2 H).
   intro H. elim (rem_7226  H).
  intros X1 X2. intro H. elim (rem_7227 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7211 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7209 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7219 X1 X2 H).
  intros X1. intro H. elim (rem_7214 X1 H).
  intros X1 X2. intro H. elim (rem_7217 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7216 X1 X2 H).
   intro H. elim (rem_7218  H).
   intro H. elim (rem_7215  H).
  intros X1 X2. intro H. elim (rem_7213 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7212 X1 X2 H).
  intros X1. intro H. elim (rem_7223 X1 H).
  exact (rem_7472 epsilon_m__type_1_pknows_current ).
  intros X1 X2. intro H. elim (rem_7225 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7210 X1 X2 H).
   intro H. elim (rem_7224  H).
Qed.

Remark rem_7474 : forall X1 X2:term, auto___def_69 X2 -> auto___type_1 X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_1 X1 -> auto_knows_current X1). tauto. exact (rem_7473 X1).
Qed.

Remark rem_7475 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7476 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_70_pknows_current. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_7475 epsilon_m__def_70_pknows_current X1).
Defined.

Remark rem_7477 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7478 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_70_pknows_current. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_7477 epsilon_m__def_70_pknows_current X2).
Defined.

Remark rem_7479 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_70_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_7476 epsilon_m__def_70_pknows_current X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_7478 epsilon_m__def_70_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7480 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto_knows_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_70_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7479 epsilon_m__def_70_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_70_pknows_current A1 A2. intros. apply trans_knows_current_enc_1;  tauto.
 clear  epsilon_m__def_70_pknows_current A1 A2. tauto.
Defined.

Remark rem_7481 : forall X1 X2:term, auto___def_70 (enc X1 X2) -> or_1
    (auto___def_71 X1 /\ auto___def_72 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7482 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 (enc X1 X2) -> auto_knows_current (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_70_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7481 X1 X2 H);  intros.
  apply (rem_7480 epsilon_m__def_70_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7483 : forall X1 X2:term, auto___def_70 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7484 : forall X1 X2:term, auto___def_70 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7485 : forall X1 X2:term, auto___def_70 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7486 : auto___def_70 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7487 : forall X1 X2:term, auto___def_70 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7488 : forall X1 X2:term, auto___def_70 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7489 : forall X1 X2:term, auto___def_70 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7490 : forall X1:term, auto___def_70 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7491 : auto___def_70 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7492 : forall X1 X2:term, auto___def_70 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7493 : forall X1 X2:term, auto___def_70 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7494 : auto___def_70 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7495 : auto___def_70 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7496 : forall X1 X2:term, auto___def_70 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7497 : forall X1 X2:term, auto___def_70 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7498 : forall X1 X2:term, auto___def_70 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7499 : forall X1:term, auto___def_70 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7500 : auto___def_70 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7501 : forall X1 X2:term, auto___def_70 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7502 : auto___def_70 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7503 : auto___def_70 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7504 : auto___def_70 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7505 : forall X1 X2:term, auto___def_70 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7506 : forall X1 X2:term, auto___def_70 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7507 : forall X1:term, auto___def_70 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_70_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7494  H).
   intro H. elim (rem_7486  H).
  intros X1 X2. intro H. elim (rem_7498 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7483 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7497 X1 X2 H).
  intros X1 X2;  exact (rem_7482 epsilon_m__def_70_pknows_current X1 X2).
   intro H. elim (rem_7502  H).
  intros X1 X2. intro H. elim (rem_7506 X1 X2 H).
   intro H. elim (rem_7503  H).
  intros X1 X2. intro H. elim (rem_7505 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7487 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7484 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7496 X1 X2 H).
  intros X1. intro H. elim (rem_7490 X1 H).
  intros X1 X2. intro H. elim (rem_7493 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7492 X1 X2 H).
   intro H. elim (rem_7495  H).
   intro H. elim (rem_7491  H).
  intros X1 X2. intro H. elim (rem_7489 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7488 X1 X2 H).
  intros X1. intro H. elim (rem_7499 X1 H).
   intro H. elim (rem_7504  H).
  intros X1 X2. intro H. elim (rem_7501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7485 X1 X2 H).
   intro H. elim (rem_7500  H).
Qed.

Remark rem_7508 : (forall X:term, auto___def_69 X -> auto_knows_current X)
    -> forall X1:term, auto___def_70 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_69_pknows_current. exact (rem_7507).
Defined.

Remark rem_7509 : (forall X:term, auto___def_69 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_9 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_69_pknows_current. intros X1 X2.
  cut (auto___def_70 X1 -> auto_knows_current X1). tauto. exact (rem_7508 epsilon_m__def_69_pknows_current X1).
Defined.

Remark rem_7510 : (forall X:term, auto___def_9 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_9_pknows_current.  tauto.
Defined.

Remark rem_7511 : (forall X:term, auto___def_9 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_9_pknows_current.  case (rem_7510 epsilon_m__def_9_pknows_current). clear  epsilon_m__def_9_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__def_9_pknows_current. tauto.
Defined.

Remark rem_7512 : (forall X:term, auto___def_9 X -> auto_knows_current X)
    -> auto___def_9 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_9_pknows_current. intro H. intros.
  elim (rem_7268 H);  intros.
  apply (rem_7511 epsilon_m__def_9_pknows_current);  tauto.
Defined.

Remark rem_7513 : forall X2:term, auto___def_9 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_9_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7281  H).
   intro H. elim (rem_7273  H).
  intros X1 X2. intro H. elim (rem_7286 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7270 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7284 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7285 X1 X2 H).
   intro H. elim (rem_7290  H).
  intros X1 X2. intro H. elim (rem_7293 X1 X2 H).
  exact (rem_7512 epsilon_m__def_9_pknows_current ).
  intros X1 X2. intro H. elim (rem_7292 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7274 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7271 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7283 X1 X2 H).
  intros X1. intro H. elim (rem_7277 X1 H).
  intros X1 X2. intro H. elim (rem_7280 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7279 X1 X2 H).
   intro H. elim (rem_7282  H).
   intro H. elim (rem_7278  H).
  intros X1 X2. intro H. elim (rem_7276 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7275 X1 X2 H).
  intros X1. intro H. elim (rem_7287 X1 H).
   intro H. elim (rem_7291  H).
  intros X1 X2. intro H. elim (rem_7289 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7272 X1 X2 H).
   intro H. elim (rem_7288  H).
Qed.

Remark rem_7514 : (forall X:term, auto___def_69 X -> auto_knows_current X)
    -> forall X2:term, auto___def_9 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_69_pknows_current. exact (rem_7513).
Defined.

Remark rem_7515 : (forall X:term, auto___def_69 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_9 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_69_pknows_current. intros X1 X2.
  cut (auto___def_9 X2 -> auto_knows_current X2). tauto. exact (rem_7514 epsilon_m__def_69_pknows_current X2).
Defined.

Remark rem_7516 : (forall X:term, auto___def_69 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_9 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_69_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7509 epsilon_m__def_69_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7515 epsilon_m__def_69_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7517 : (forall X:term, auto___def_69 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_9 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_69_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7516 epsilon_m__def_69_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_69_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_69_pknows_current A1 A2. tauto.
Defined.

Remark rem_7518 : forall X1 X2:term, auto___def_69 (cons X1 X2) -> or_1
    (auto___def_70 X1 /\ auto___def_9 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7519 : (forall X:term, auto___def_69 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_69 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_69_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7518 X1 X2 H);  intros.
  apply (rem_7517 epsilon_m__def_69_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7520 : forall X1 X2:term, auto___def_69 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7521 : forall X1 X2:term, auto___def_69 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7522 : forall X1 X2:term, auto___def_69 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7523 : auto___def_69 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7524 : forall X1 X2:term, auto___def_69 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7525 : forall X1 X2:term, auto___def_69 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7526 : forall X1 X2:term, auto___def_69 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7527 : forall X1:term, auto___def_69 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7528 : auto___def_69 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7529 : forall X1 X2:term, auto___def_69 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7530 : forall X1 X2:term, auto___def_69 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7531 : auto___def_69 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7532 : auto___def_69 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7533 : forall X1 X2:term, auto___def_69 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7534 : forall X1 X2:term, auto___def_69 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7535 : forall X1 X2:term, auto___def_69 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7536 : forall X1:term, auto___def_69 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7537 : auto___def_69 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7538 : forall X1 X2:term, auto___def_69 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7539 : auto___def_69 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7540 : auto___def_69 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7541 : auto___def_69 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7542 : forall X1 X2:term, auto___def_69 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7543 : forall X1 X2:term, auto___def_69 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7544 : forall X2:term, auto___def_69 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_69_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7531  H).
   intro H. elim (rem_7523  H).
  intros X1 X2;  exact (rem_7519 epsilon_m__def_69_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_7520 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7534 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7535 X1 X2 H).
   intro H. elim (rem_7539  H).
  intros X1 X2. intro H. elim (rem_7543 X1 X2 H).
   intro H. elim (rem_7540  H).
  intros X1 X2. intro H. elim (rem_7542 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7524 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7521 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7533 X1 X2 H).
  intros X1. intro H. elim (rem_7527 X1 H).
  intros X1 X2. intro H. elim (rem_7530 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7529 X1 X2 H).
   intro H. elim (rem_7532  H).
   intro H. elim (rem_7528  H).
  intros X1 X2. intro H. elim (rem_7526 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7525 X1 X2 H).
  intros X1. intro H. elim (rem_7536 X1 H).
   intro H. elim (rem_7541  H).
  intros X1 X2. intro H. elim (rem_7538 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7522 X1 X2 H).
   intro H. elim (rem_7537  H).
Qed.

Remark rem_7545 : forall X1 X2:term, auto___def_69 X2 -> auto___type_1 X1 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_69 X2 -> auto_knows_current X2). tauto. exact (rem_7544 X2).
Qed.

Remark rem_7546 : forall X1 X2:term, auto___def_69 X2 -> auto___type_1 X1 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7474 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7545 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_7547 : forall X1 X2:term, auto___def_69 X2 -> auto___type_1 X1 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_7546 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7548 : forall X1:term, auto_knows_current (p X1) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_998 X1 H);  intros.
  apply (rem_288 X1);  tauto.
Qed.

Remark rem_7549 : (forall X:term, auto___def_60 X -> auto___def_12 X -> False)
    -> auto___def_12 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_60_m__def_12. intro H. intros.
  elim (rem_1315 H);  intros.
Defined.

Remark rem_7550 : auto___def_60 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7551 : (forall X:term, auto___def_60 X -> auto___def_12 X -> False)
    -> auto___def_60 sym -> auto___def_12 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_60_m__def_12. intro H. intros.
  elim (rem_7550 H);  intros.
  apply (rem_7549 epsilon_m__def_60_m__def_12);  tauto.
Defined.

Remark rem_7552 : forall X1 X2:term, auto___def_60 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7553 : forall X1 X2:term, auto___def_60 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7554 : forall X1 X2:term, auto___def_60 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7555 : auto___def_60 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7556 : forall X1 X2:term, auto___def_60 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7557 : forall X1 X2:term, auto___def_60 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7558 : forall X1 X2:term, auto___def_60 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7559 : forall X1:term, auto___def_60 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7560 : auto___def_60 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7561 : forall X1 X2:term, auto___def_60 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7562 : forall X1 X2:term, auto___def_60 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7563 : auto___def_60 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7564 : auto___def_60 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7565 : forall X1 X2:term, auto___def_60 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7566 : forall X1 X2:term, auto___def_60 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7567 : forall X1 X2:term, auto___def_60 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7568 : forall X1 X2:term, auto___def_60 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7569 : forall X1:term, auto___def_60 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7570 : forall X1 X2:term, auto___def_60 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7571 : auto___def_60 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7572 : auto___def_60 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7573 : auto___def_60 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7574 : forall X1 X2:term, auto___def_60 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7575 : forall X1 X2:term, auto___def_60 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7576 : forall X1:term, auto___def_60 X1 -> auto___def_12 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_60_m__def_12 1.
  intro X. case X.
   intro H. elim (rem_7563  H).
   intro H. elim (rem_7555  H).
  intros X1 X2. intro H. elim (rem_7568 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7552 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7566 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7567 X1 X2 H).
   intro H. elim (rem_7571  H).
  intros X1 X2. intro H. elim (rem_7575 X1 X2 H).
   intro H. elim (rem_7572  H).
  intros X1 X2. intro H. elim (rem_7574 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7556 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7553 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7565 X1 X2 H).
  intros X1. intro H. elim (rem_7559 X1 H).
  intros X1 X2. intro H. elim (rem_7562 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7561 X1 X2 H).
   intro H. elim (rem_7564  H).
   intro H. elim (rem_7560  H).
  intros X1 X2. intro H. elim (rem_7558 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7557 X1 X2 H).
  intros X1. intro H. elim (rem_7569 X1 H).
   intro H. elim (rem_7573  H).
  intros X1 X2. intro H. elim (rem_7570 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7554 X1 X2 H).
  exact (rem_7551 epsilon_m__def_60_m__def_12 ).
Qed.

Remark rem_7577 : (forall X:term, auto___def_10 X -> auto_testable_old X -> False)
    -> forall X1:term, auto___def_60 X1 -> auto___def_12 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_10_mtestable_old. exact (rem_7576).
Defined.

Remark rem_7578 : (forall X:term, auto___def_10 X -> auto_testable_old X -> False)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_60 X1 -> auto___type_16 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_10_mtestable_old. intros X1 X2.
  cut (auto___def_60 X1 -> auto___def_12 X1 -> False). clear  epsilon_m__def_10_mtestable_old. tauto.
  exact (rem_7577 epsilon_m__def_10_mtestable_old X1).
Defined.

Remark rem_7579 : (forall X:term, auto___def_55 X -> auto___def_12 X -> False)
    -> auto___def_12 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_55_m__def_12. intro H. intros.
  elim (rem_2149 H);  intros.
Defined.

Remark rem_7580 : auto___def_55 prv -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7581 : (forall X:term, auto___def_55 X -> auto___def_12 X -> False)
    -> auto___def_55 prv -> auto___def_12 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_55_m__def_12. intro H. intros.
  elim (rem_7580 H);  intros.
  apply (rem_7579 epsilon_m__def_55_m__def_12);  tauto.
Defined.

Remark rem_7582 : forall X1 X2:term, auto___def_55 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7583 : forall X1 X2:term, auto___def_55 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7584 : forall X1 X2:term, auto___def_55 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7585 : auto___def_55 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7586 : forall X1 X2:term, auto___def_55 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7587 : forall X1 X2:term, auto___def_55 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7588 : forall X1 X2:term, auto___def_55 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7589 : forall X1:term, auto___def_55 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7590 : auto___def_55 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7591 : forall X1 X2:term, auto___def_55 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7592 : forall X1 X2:term, auto___def_55 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7593 : auto___def_55 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7594 : forall X1 X2:term, auto___def_55 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7595 : forall X1 X2:term, auto___def_55 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7596 : forall X1 X2:term, auto___def_55 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7597 : forall X1 X2:term, auto___def_55 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7598 : forall X1:term, auto___def_55 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7599 : auto___def_55 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7600 : forall X1 X2:term, auto___def_55 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7601 : auto___def_55 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7602 : auto___def_55 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7603 : auto___def_55 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7604 : forall X1 X2:term, auto___def_55 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7605 : forall X1 X2:term, auto___def_55 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7606 : forall X1:term, auto___def_55 X1 -> auto___def_12 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_55_m__def_12 1.
  intro X. case X.
   intro H. elim (rem_7593  H).
   intro H. elim (rem_7585  H).
  intros X1 X2. intro H. elim (rem_7597 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7582 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7595 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7596 X1 X2 H).
   intro H. elim (rem_7601  H).
  intros X1 X2. intro H. elim (rem_7605 X1 X2 H).
   intro H. elim (rem_7602  H).
  intros X1 X2. intro H. elim (rem_7604 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7586 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7583 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7594 X1 X2 H).
  intros X1. intro H. elim (rem_7589 X1 H).
  intros X1 X2. intro H. elim (rem_7592 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7591 X1 X2 H).
  exact (rem_7581 epsilon_m__def_55_m__def_12 ).
   intro H. elim (rem_7590  H).
  intros X1 X2. intro H. elim (rem_7588 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7587 X1 X2 H).
  intros X1. intro H. elim (rem_7598 X1 H).
   intro H. elim (rem_7603  H).
  intros X1 X2. intro H. elim (rem_7600 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7584 X1 X2 H).
   intro H. elim (rem_7599  H).
Qed.

Remark rem_7607 : (forall X:term, auto___def_10 X -> auto_testable_old X -> False)
    -> forall X1:term, auto___def_55 X1 -> auto___def_12 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_10_mtestable_old. exact (rem_7606).
Defined.

Remark rem_7608 : (forall X:term, auto___def_10 X -> auto_testable_old X -> False)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_12 X1 -> auto___def_13 X2 -> auto___def_4 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_10_mtestable_old. intros X1 X2.
  cut (auto___def_55 X1 -> auto___def_12 X1 -> False). clear  epsilon_m__def_10_mtestable_old. tauto.
  exact (rem_7607 epsilon_m__def_10_mtestable_old X1).
Defined.

Remark rem_7609 : (forall X:term, auto___def_10 X -> auto_testable_old X -> False)
    -> forall X2:term, auto_agent X2 -> auto___def_13 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_10_mtestable_old. exact (rem_7340).
Defined.

Remark rem_7610 : (forall X:term, auto___def_10 X -> auto_testable_old X -> False)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_51 X1 -> auto_agent X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_10_mtestable_old. intros X1 X2.
  cut (auto_agent X2 -> auto___def_13 X2 -> False). clear  epsilon_m__def_10_mtestable_old. tauto.
  exact (rem_7609 epsilon_m__def_10_mtestable_old X2).
Defined.

Remark rem_7611 : (forall X:term, auto___def_10 X -> auto_testable_old X -> False)
    -> forall X1 X2:term, auto_testable_old (key X1 X2) -> auto___def_12 X1 -> auto___def_13 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_10_mtestable_old. intros X1 X2. intro H. intros.
  elim (rem_156 X1 X2 H);  intros.
  apply (rem_7578 epsilon_m__def_10_mtestable_old X1 X2);  tauto.
  apply (rem_7608 epsilon_m__def_10_mtestable_old X1 X2);  tauto.
  apply (rem_7610 epsilon_m__def_10_mtestable_old X1 X2);  tauto.
Defined.

Remark rem_7612 : (forall X:term, auto___def_10 X -> auto_testable_old X -> False)
    -> forall X1 X2:term, auto___def_10 (key X1 X2) -> auto_testable_old (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_10_mtestable_old. intros X1 X2. intro H. intros.
  elim (rem_3175 X1 X2 H);  intros.
  apply (rem_7611 epsilon_m__def_10_mtestable_old X1 X2);  tauto.
Defined.

Remark rem_7613 : forall X1:term, auto___def_10 X1 -> auto_testable_old X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_10_mtestable_old 1.
  intro X. case X.
   intro H. elim (rem_3187  H).
   intro H. elim (rem_3179  H).
  intros X1 X2. intro H. elim (rem_3192 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1818 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3190 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3191 X1 X2 H).
   intro H. elim (rem_3196  H).
  intros X1 X2;  exact (rem_7612 epsilon_m__def_10_mtestable_old X1 X2).
   intro H. elim (rem_3197  H).
  intros X1 X2. intro H. elim (rem_3199 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3180 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3177 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3189 X1 X2 H).
  intros X1. intro H. elim (rem_3183 X1 H).
  intros X1 X2. intro H. elim (rem_3186 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3185 X1 X2 H).
   intro H. elim (rem_3188  H).
   intro H. elim (rem_3184  H).
  intros X1 X2. intro H. elim (rem_3182 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3181 X1 X2 H).
  intros X1. intro H. elim (rem_3193 X1 H).
   intro H. elim (rem_3198  H).
  intros X1 X2. intro H. elim (rem_3195 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3178 X1 X2 H).
   intro H. elim (rem_3194  H).
Qed.

Remark rem_7614 : forall X1 X2:term, auto___def_10 X2 -> auto___def_11 X1 -> auto_testable_old X2 -> auto_knows_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7613 X2)). tauto.
Qed.

Remark rem_7615 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___def_17 X1 -> auto___def_36 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_15. exact (rem_7349).
Defined.

Remark rem_7616 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_2 X2 -> auto___def_17 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_36 X1 -> False). clear  epsilon_mtestable_old_m__def_15. tauto.
  exact (rem_7615 epsilon_mtestable_old_m__def_15 X1).
Defined.

Remark rem_7617 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_7616 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7618 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7619 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto___type_12 X1 -> auto___def_54 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7620 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7621 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto___type_11 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7622 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7623 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7624 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_12 (crypt X1 X2) -> auto___def_17 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_4373 X1 X2 H);  intros.
  apply (rem_7618 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7619 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7620 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7621 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7622 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7623 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7625 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> auto___def_17 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intro H. intros.
  elim (rem_1327 H);  intros.
Defined.

Remark rem_7626 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> auto___type_12 bob -> auto___def_17 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intro H. intros.
  elim (rem_4377 H);  intros.
  apply (rem_7625 epsilon_m__type_12_m__def_17);  tauto.
Defined.

Remark rem_7627 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1:term, auto___def_17 (p X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1. intro H. intros.
  elim (rem_1330 X1 H);  intros.
Defined.

Remark rem_7628 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1:term, auto___type_12 (p X1) -> auto___def_17 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1. intro H. intros.
  elim (rem_4382 X1 H);  intros.
  apply (rem_7627 epsilon_m__type_12_m__def_17 X1);  tauto.
Defined.

Remark rem_7629 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> auto___def_17 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intro H. intros.
  elim (rem_1334 H);  intros.
Defined.

Remark rem_7630 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> auto___type_12 alice -> auto___def_17 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intro H. intros.
  elim (rem_4385 H);  intros.
  apply (rem_7629 epsilon_m__type_12_m__def_17);  tauto.
Defined.

Remark rem_7631 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (dec X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1337 X1 X2 H);  intros.
Defined.

Remark rem_7632 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_12 (dec X1 X2) -> auto___def_17 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_4391 X1 X2 H);  intros.
  apply (rem_7631 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7633 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (enc X1 X2) -> auto___def_10 X1 -> auto___def_11 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1338 X1 X2 H);  intros.
Defined.

Remark rem_7634 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (enc X1 X2) -> auto___def_15 X1 -> auto___def_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1338 X1 X2 H);  intros.
Defined.

Remark rem_7635 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (enc X1 X2) -> auto___def_19 X1 -> auto___def_20 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1338 X1 X2 H);  intros.
Defined.

Remark rem_7636 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (enc X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1338 X1 X2 H);  intros.
Defined.

Remark rem_7637 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_12 (enc X1 X2) -> auto___def_17 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_4412 X1 X2 H);  intros.
  apply (rem_7633 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7634 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7635 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7636 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7638 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (cons X1 X2) -> auto_testable_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1339 X1 X2 H);  intros.
Defined.

Remark rem_7639 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (cons X1 X2) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1339 X1 X2 H);  intros.
Defined.

Remark rem_7640 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_12 (cons X1 X2) -> auto___def_17 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_4418 X1 X2 H);  intros.
  apply (rem_7638 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7639 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7641 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1:term, auto___def_17 (s X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1. intro H. intros.
  elim (rem_1340 X1 H);  intros.
Defined.

Remark rem_7642 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1:term, auto___type_12 (s X1) -> auto___def_17 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1. intro H. intros.
  elim (rem_4421 X1 H);  intros.
  apply (rem_7641 epsilon_m__type_12_m__def_17 X1);  tauto.
Defined.

Remark rem_7643 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> auto___def_17 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intro H. intros.
  elim (rem_1343 H);  intros.
Defined.

Remark rem_7644 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> auto___type_12 i -> auto___def_17 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intro H. intros.
  elim (rem_4424 H);  intros.
  apply (rem_7643 epsilon_m__type_12_m__def_17);  tauto.
Defined.

Remark rem_7645 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> auto___def_17 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intro H. intros.
  elim (rem_1344 H);  intros.
Defined.

Remark rem_7646 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> auto___type_12 nil -> auto___def_17 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intro H. intros.
  elim (rem_4427 H);  intros.
  apply (rem_7645 epsilon_m__type_12_m__def_17);  tauto.
Defined.

Remark rem_7647 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> auto___def_17 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intro H. intros.
  elim (rem_1345 H);  intros.
Defined.

Remark rem_7648 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> auto___type_12 server -> auto___def_17 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intro H. intros.
  elim (rem_4430 H);  intros.
  apply (rem_7647 epsilon_m__type_12_m__def_17);  tauto.
Defined.

Remark rem_7649 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (key X1 X2) -> auto___def_60 X1 -> auto___type_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1347 X1 X2 H);  intros.
Defined.

Remark rem_7650 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (key X1 X2) -> auto___def_55 X1 -> auto___def_4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1347 X1 X2 H);  intros.
Defined.

Remark rem_7651 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1347 X1 X2 H);  intros.
Defined.

Remark rem_7652 : (forall X:term, auto___type_12 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_12 (key X1 X2) -> auto___def_17 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_4450 X1 X2 H);  intros.
  apply (rem_7649 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7650 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
  apply (rem_7651 epsilon_m__type_12_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7653 : forall X1:term, auto___type_12 X1 -> auto___def_17 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_12_m__def_17 1.
  intro X. case X.
  exact (rem_7630 epsilon_m__type_12_m__def_17 ).
  exact (rem_7626 epsilon_m__type_12_m__def_17 ).
  intros X1 X2;  exact (rem_7640 epsilon_m__type_12_m__def_17 X1 X2).
  intros X1 X2;  exact (rem_7624 epsilon_m__type_12_m__def_17 X1 X2).
  intros X1 X2;  exact (rem_7632 epsilon_m__type_12_m__def_17 X1 X2).
  intros X1 X2;  exact (rem_7637 epsilon_m__type_12_m__def_17 X1 X2).
  exact (rem_7644 epsilon_m__type_12_m__def_17 ).
  intros X1 X2;  exact (rem_7652 epsilon_m__type_12_m__def_17 X1 X2).
  exact (rem_7646 epsilon_m__type_12_m__def_17 ).
  intros X1 X2. intro H. elim (rem_4464 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4454 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4452 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4461 X1 X2 H).
  intros X1;  exact (rem_7628 epsilon_m__type_12_m__def_17 X1).
  intros X1 X2. intro H. elim (rem_4459 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4458 X1 X2 H).
   intro H. elim (rem_4460  H).
   intro H. elim (rem_4457  H).
  intros X1 X2. intro H. elim (rem_4456 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4455 X1 X2 H).
  intros X1;  exact (rem_7642 epsilon_m__type_12_m__def_17 X1).
  exact (rem_7648 epsilon_m__type_12_m__def_17 ).
  intros X1 X2. intro H. elim (rem_4463 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4453 X1 X2 H).
   intro H. elim (rem_4462  H).
Qed.

Remark rem_7654 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___type_12 X1 -> auto___def_17 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_15. exact (rem_7653).
Defined.

Remark rem_7655 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_54 X2 -> auto___type_12 X1 -> auto___type_2 X2 -> auto___def_17 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2.
  cut (auto___type_12 X1 -> auto___def_17 X1 -> False). clear  epsilon_mtestable_old_m__def_15. tauto.
  exact (rem_7654 epsilon_mtestable_old_m__def_15 X1).
Defined.

Remark rem_7656 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto___type_12 X1 -> auto___def_54 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_7655 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7657 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___def_24 X1 -> auto___def_17 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_15. exact (rem_7355).
Defined.

Remark rem_7658 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_25 X2 -> auto___type_2 X2 -> auto___def_24 X1 -> auto___def_17 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_17 X1 -> False). clear  epsilon_mtestable_old_m__def_15. tauto.
  exact (rem_7657 epsilon_mtestable_old_m__def_15 X1).
Defined.

Remark rem_7659 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_7658 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7660 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7661 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto___type_12 X1 -> auto___def_54 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7662 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7663 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto___type_11 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7664 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7665 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (crypt X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1324 X1 X2 H);  intros.
Defined.

Remark rem_7666 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_11 (crypt X1 X2) -> auto___def_17 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_4589 X1 X2 H);  intros.
  apply (rem_7660 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7661 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7662 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7663 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7664 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7665 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7667 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> auto___def_17 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intro H. intros.
  elim (rem_1327 H);  intros.
Defined.

Remark rem_7668 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> auto___type_11 bob -> auto___def_17 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intro H. intros.
  elim (rem_4593 H);  intros.
  apply (rem_7667 epsilon_m__type_11_m__def_17);  tauto.
Defined.

Remark rem_7669 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1:term, auto___def_17 (p X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1. intro H. intros.
  elim (rem_1330 X1 H);  intros.
Defined.

Remark rem_7670 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1:term, auto___type_11 (p X1) -> auto___def_17 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1. intro H. intros.
  elim (rem_4598 X1 H);  intros.
  apply (rem_7669 epsilon_m__type_11_m__def_17 X1);  tauto.
Defined.

Remark rem_7671 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> auto___def_17 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intro H. intros.
  elim (rem_1334 H);  intros.
Defined.

Remark rem_7672 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> auto___type_11 alice -> auto___def_17 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intro H. intros.
  elim (rem_4601 H);  intros.
  apply (rem_7671 epsilon_m__type_11_m__def_17);  tauto.
Defined.

Remark rem_7673 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (dec X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1337 X1 X2 H);  intros.
Defined.

Remark rem_7674 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_11 (dec X1 X2) -> auto___def_17 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_4607 X1 X2 H);  intros.
  apply (rem_7673 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7675 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (enc X1 X2) -> auto___def_10 X1 -> auto___def_11 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1338 X1 X2 H);  intros.
Defined.

Remark rem_7676 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (enc X1 X2) -> auto___def_15 X1 -> auto___def_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1338 X1 X2 H);  intros.
Defined.

Remark rem_7677 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (enc X1 X2) -> auto___def_19 X1 -> auto___def_20 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1338 X1 X2 H);  intros.
Defined.

Remark rem_7678 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (enc X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1338 X1 X2 H);  intros.
Defined.

Remark rem_7679 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_11 (enc X1 X2) -> auto___def_17 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_4628 X1 X2 H);  intros.
  apply (rem_7675 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7676 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7677 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7678 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7680 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (cons X1 X2) -> auto_testable_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1339 X1 X2 H);  intros.
Defined.

Remark rem_7681 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (cons X1 X2) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1339 X1 X2 H);  intros.
Defined.

Remark rem_7682 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_11 (cons X1 X2) -> auto___def_17 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_4634 X1 X2 H);  intros.
  apply (rem_7680 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7681 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7683 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1:term, auto___def_17 (s X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1. intro H. intros.
  elim (rem_1340 X1 H);  intros.
Defined.

Remark rem_7684 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1:term, auto___type_11 (s X1) -> auto___def_17 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1. intro H. intros.
  elim (rem_4637 X1 H);  intros.
  apply (rem_7683 epsilon_m__type_11_m__def_17 X1);  tauto.
Defined.

Remark rem_7685 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> auto___def_17 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intro H. intros.
  elim (rem_1343 H);  intros.
Defined.

Remark rem_7686 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> auto___type_11 i -> auto___def_17 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intro H. intros.
  elim (rem_4640 H);  intros.
  apply (rem_7685 epsilon_m__type_11_m__def_17);  tauto.
Defined.

Remark rem_7687 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> auto___def_17 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intro H. intros.
  elim (rem_1344 H);  intros.
Defined.

Remark rem_7688 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> auto___type_11 nil -> auto___def_17 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intro H. intros.
  elim (rem_4643 H);  intros.
  apply (rem_7687 epsilon_m__type_11_m__def_17);  tauto.
Defined.

Remark rem_7689 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> auto___def_17 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intro H. intros.
  elim (rem_1345 H);  intros.
Defined.

Remark rem_7690 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> auto___type_11 server -> auto___def_17 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intro H. intros.
  elim (rem_4646 H);  intros.
  apply (rem_7689 epsilon_m__type_11_m__def_17);  tauto.
Defined.

Remark rem_7691 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (key X1 X2) -> auto___def_60 X1 -> auto___type_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1347 X1 X2 H);  intros.
Defined.

Remark rem_7692 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (key X1 X2) -> auto___def_55 X1 -> auto___def_4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1347 X1 X2 H);  intros.
Defined.

Remark rem_7693 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___def_17 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_1347 X1 X2 H);  intros.
Defined.

Remark rem_7694 : (forall X:term, auto___type_11 X -> auto___def_17 X -> False)
    -> forall X1 X2:term, auto___type_11 (key X1 X2) -> auto___def_17 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_17. intros X1 X2. intro H. intros.
  elim (rem_4666 X1 X2 H);  intros.
  apply (rem_7691 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7692 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
  apply (rem_7693 epsilon_m__type_11_m__def_17 X1 X2);  tauto.
Defined.

Remark rem_7695 : forall X1:term, auto___type_11 X1 -> auto___def_17 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_11_m__def_17 1.
  intro X. case X.
  exact (rem_7672 epsilon_m__type_11_m__def_17 ).
  exact (rem_7668 epsilon_m__type_11_m__def_17 ).
  intros X1 X2;  exact (rem_7682 epsilon_m__type_11_m__def_17 X1 X2).
  intros X1 X2;  exact (rem_7666 epsilon_m__type_11_m__def_17 X1 X2).
  intros X1 X2;  exact (rem_7674 epsilon_m__type_11_m__def_17 X1 X2).
  intros X1 X2;  exact (rem_7679 epsilon_m__type_11_m__def_17 X1 X2).
  exact (rem_7686 epsilon_m__type_11_m__def_17 ).
  intros X1 X2;  exact (rem_7694 epsilon_m__type_11_m__def_17 X1 X2).
  exact (rem_7688 epsilon_m__type_11_m__def_17 ).
  intros X1 X2. intro H. elim (rem_4680 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4670 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4668 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4677 X1 X2 H).
  intros X1;  exact (rem_7670 epsilon_m__type_11_m__def_17 X1).
  intros X1 X2. intro H. elim (rem_4675 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4674 X1 X2 H).
   intro H. elim (rem_4676  H).
   intro H. elim (rem_4673  H).
  intros X1 X2. intro H. elim (rem_4672 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4671 X1 X2 H).
  intros X1;  exact (rem_7684 epsilon_m__type_11_m__def_17 X1).
  exact (rem_7690 epsilon_m__type_11_m__def_17 ).
  intros X1 X2. intro H. elim (rem_4679 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4669 X1 X2 H).
   intro H. elim (rem_4678  H).
Qed.

Remark rem_7696 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___type_11 X1 -> auto___def_17 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_15. exact (rem_7695).
Defined.

Remark rem_7697 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___type_2 X2 -> auto___def_17 X1 -> auto___def_52 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2.
  cut (auto___type_11 X1 -> auto___def_17 X1 -> False). clear  epsilon_mtestable_old_m__def_15. tauto.
  exact (rem_7696 epsilon_mtestable_old_m__def_15 X1).
Defined.

Remark rem_7698 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto___type_11 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_7697 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7699 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___type_7 X1 -> auto___def_17 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_15. exact (rem_7361).
Defined.

Remark rem_7700 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_44 X2 -> auto___type_2 X2 -> auto___def_17 X1 -> auto___type_7 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2.
  cut (auto___type_7 X1 -> auto___def_17 X1 -> False). clear  epsilon_mtestable_old_m__def_15. tauto.
  exact (rem_7699 epsilon_mtestable_old_m__def_15 X1).
Defined.

Remark rem_7701 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_7700 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7702 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___def_17 X1 -> auto_knows_old X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_15. exact (rem_7367).
Defined.

Remark rem_7703 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_2 X2 -> auto___def_17 X1 -> auto_knows_old X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2.
  cut (auto___def_17 X1 -> auto_knows_old X1 -> False). clear  epsilon_mtestable_old_m__def_15. tauto.
  exact (rem_7702 epsilon_mtestable_old_m__def_15 X1).
Defined.

Remark rem_7704 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (crypt X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_1833 X1 X2 H);  intros.
  apply (rem_7703 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7705 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_testable_old (crypt X1 X2) -> auto___def_15 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_79 X1 X2 H);  intros.
  apply (rem_7617 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7656 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7659 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7698 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7701 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7704 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7706 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> auto___def_15 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intro H. intros.
  elim (rem_3212 H);  intros.
Defined.

Remark rem_7707 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> auto_testable_old bob -> auto___def_15 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intro H. intros.
  elim (rem_83 H);  intros.
  apply (rem_7706 epsilon_mtestable_old_m__def_15);  tauto.
Defined.

Remark rem_7708 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___def_15 (p X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1. intro H. intros.
  elim (rem_3216 X1 H);  intros.
Defined.

Remark rem_7709 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto_testable_old (p X1) -> auto___def_15 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1. intro H. intros.
  elim (rem_88 X1 H);  intros.
  apply (rem_7708 epsilon_mtestable_old_m__def_15 X1);  tauto.
Defined.

Remark rem_7710 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> auto___def_15 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intro H. intros.
  elim (rem_3220 H);  intros.
Defined.

Remark rem_7711 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> auto_testable_old alice -> auto___def_15 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intro H. intros.
  elim (rem_91 H);  intros.
  apply (rem_7710 epsilon_mtestable_old_m__def_15);  tauto.
Defined.

Remark rem_7712 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (dec X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3223 X1 X2 H);  intros.
Defined.

Remark rem_7713 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_testable_old (dec X1 X2) -> auto___def_15 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_97 X1 X2 H);  intros.
  apply (rem_7712 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7714 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (enc X1 X2) -> auto___def_10 X1 -> auto___def_11 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3224 X1 X2 H);  intros.
Defined.

Remark rem_7715 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (enc X1 X2) -> auto___def_15 X1 -> auto___def_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3224 X1 X2 H);  intros.
Defined.

Remark rem_7716 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (enc X1 X2) -> auto___def_19 X1 -> auto___def_20 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3224 X1 X2 H);  intros.
Defined.

Remark rem_7717 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (enc X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3224 X1 X2 H);  intros.
Defined.

Remark rem_7718 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_testable_old (enc X1 X2) -> auto___def_15 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_118 X1 X2 H);  intros.
  apply (rem_7714 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7715 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7716 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7717 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7719 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (cons X1 X2) -> auto_testable_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3225 X1 X2 H);  intros.
Defined.

Remark rem_7720 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (cons X1 X2) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3225 X1 X2 H);  intros.
Defined.

Remark rem_7721 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_testable_old (cons X1 X2) -> auto___def_15 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_124 X1 X2 H);  intros.
  apply (rem_7719 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7720 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7722 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto___def_15 (s X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1. intro H. intros.
  elim (rem_3226 X1 H);  intros.
Defined.

Remark rem_7723 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1:term, auto_testable_old (s X1) -> auto___def_15 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1. intro H. intros.
  elim (rem_127 X1 H);  intros.
  apply (rem_7722 epsilon_mtestable_old_m__def_15 X1);  tauto.
Defined.

Remark rem_7724 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> auto___def_15 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intro H. intros.
  elim (rem_3229 H);  intros.
Defined.

Remark rem_7725 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> auto_testable_old i -> auto___def_15 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intro H. intros.
  elim (rem_130 H);  intros.
  apply (rem_7724 epsilon_mtestable_old_m__def_15);  tauto.
Defined.

Remark rem_7726 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> auto___def_15 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intro H. intros.
  elim (rem_3230 H);  intros.
Defined.

Remark rem_7727 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> auto_testable_old nil -> auto___def_15 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intro H. intros.
  elim (rem_133 H);  intros.
  apply (rem_7726 epsilon_mtestable_old_m__def_15);  tauto.
Defined.

Remark rem_7728 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> auto___def_15 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intro H. intros.
  elim (rem_3231 H);  intros.
Defined.

Remark rem_7729 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> auto_testable_old server -> auto___def_15 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intro H. intros.
  elim (rem_136 H);  intros.
  apply (rem_7728 epsilon_mtestable_old_m__def_15);  tauto.
Defined.

Remark rem_7730 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (key X1 X2) -> auto___def_60 X1 -> auto___type_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3233 X1 X2 H);  intros.
Defined.

Remark rem_7731 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (key X1 X2) -> auto___def_55 X1 -> auto___def_4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3233 X1 X2 H);  intros.
Defined.

Remark rem_7732 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto___def_15 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_3233 X1 X2 H);  intros.
Defined.

Remark rem_7733 : (forall X:term, auto_testable_old X -> auto___def_15 X -> False)
    -> forall X1 X2:term, auto_testable_old (key X1 X2) -> auto___def_15 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_15. intros X1 X2. intro H. intros.
  elim (rem_156 X1 X2 H);  intros.
  apply (rem_7730 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7731 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
  apply (rem_7732 epsilon_mtestable_old_m__def_15 X1 X2);  tauto.
Defined.

Remark rem_7734 : forall X1:term, auto_testable_old X1 -> auto___def_15 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mtestable_old_m__def_15 1.
  intro X. case X.
  exact (rem_7711 epsilon_mtestable_old_m__def_15 ).
  exact (rem_7707 epsilon_mtestable_old_m__def_15 ).
  intros X1 X2;  exact (rem_7721 epsilon_mtestable_old_m__def_15 X1 X2).
  intros X1 X2;  exact (rem_7705 epsilon_mtestable_old_m__def_15 X1 X2).
  intros X1 X2;  exact (rem_7713 epsilon_mtestable_old_m__def_15 X1 X2).
  intros X1 X2;  exact (rem_7718 epsilon_mtestable_old_m__def_15 X1 X2).
  exact (rem_7725 epsilon_mtestable_old_m__def_15 ).
  intros X1 X2;  exact (rem_7733 epsilon_mtestable_old_m__def_15 X1 X2).
  exact (rem_7727 epsilon_mtestable_old_m__def_15 ).
  intros X1 X2. intro H. elim (rem_170 X1 X2 H).
  intros X1 X2. intro H. elim (rem_160 X1 X2 H).
  intros X1 X2. intro H. elim (rem_158 X1 X2 H).
  intros X1 X2. intro H. elim (rem_167 X1 X2 H).
  intros X1;  exact (rem_7709 epsilon_mtestable_old_m__def_15 X1).
  intros X1 X2. intro H. elim (rem_165 X1 X2 H).
  intros X1 X2. intro H. elim (rem_164 X1 X2 H).
   intro H. elim (rem_166  H).
   intro H. elim (rem_163  H).
  intros X1 X2. intro H. elim (rem_162 X1 X2 H).
  intros X1 X2. intro H. elim (rem_161 X1 X2 H).
  intros X1;  exact (rem_7723 epsilon_mtestable_old_m__def_15 X1).
  exact (rem_7729 epsilon_mtestable_old_m__def_15 ).
  intros X1 X2. intro H. elim (rem_169 X1 X2 H).
  intros X1 X2. intro H. elim (rem_159 X1 X2 H).
   intro H. elim (rem_168  H).
Qed.

Remark rem_7735 : forall X1 X2:term, auto___def_15 X2 -> auto___def_16 X1 -> auto_testable_old X2 -> auto_knows_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7734 X2)). tauto.
Qed.

Remark rem_7736 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1:term, auto___def_36 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_19. exact (rem_7402).
Defined.

Remark rem_7737 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_21 X1 -> False). clear  epsilon_mtestable_old_m__def_19. tauto.
  exact (rem_7736 epsilon_mtestable_old_m__def_19 X1).
Defined.

Remark rem_7738 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_1840 X1 X2 H);  intros.
  apply (rem_7737 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7739 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7740 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___type_12 X1 -> auto___def_54 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7741 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7742 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___type_11 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7743 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7744 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7745 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_12 (crypt X1 X2) -> auto___def_21 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_4373 X1 X2 H);  intros.
  apply (rem_7739 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7740 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7741 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7742 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7743 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7744 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7746 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> auto___def_21 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intro H. intros.
  elim (rem_1966 H);  intros.
Defined.

Remark rem_7747 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> auto___type_12 bob -> auto___def_21 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intro H. intros.
  elim (rem_4377 H);  intros.
  apply (rem_7746 epsilon_m__type_12_m__def_21);  tauto.
Defined.

Remark rem_7748 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1:term, auto___def_21 (p X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1. intro H. intros.
  elim (rem_7425 X1 H);  intros.
Defined.

Remark rem_7749 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1:term, auto___type_12 (p X1) -> auto___def_21 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1. intro H. intros.
  elim (rem_4382 X1 H);  intros.
  apply (rem_7748 epsilon_m__type_12_m__def_21 X1);  tauto.
Defined.

Remark rem_7750 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> auto___def_21 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intro H. intros.
  elim (rem_1969 H);  intros.
Defined.

Remark rem_7751 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> auto___type_12 alice -> auto___def_21 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intro H. intros.
  elim (rem_4385 H);  intros.
  apply (rem_7750 epsilon_m__type_12_m__def_21);  tauto.
Defined.

Remark rem_7752 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (dec X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7430 X1 X2 H);  intros.
Defined.

Remark rem_7753 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_12 (dec X1 X2) -> auto___def_21 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_4391 X1 X2 H);  intros.
  apply (rem_7752 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7754 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto___def_10 X1 -> auto___def_11 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7755 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto___def_15 X1 -> auto___def_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7756 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto___def_19 X1 -> auto___def_20 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7757 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7758 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_12 (enc X1 X2) -> auto___def_21 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_4412 X1 X2 H);  intros.
  apply (rem_7754 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7755 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7756 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7757 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7759 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (cons X1 X2) -> auto_testable_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2540 X1 X2 H);  intros.
Defined.

Remark rem_7760 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (cons X1 X2) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2540 X1 X2 H);  intros.
Defined.

Remark rem_7761 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_12 (cons X1 X2) -> auto___def_21 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_4418 X1 X2 H);  intros.
  apply (rem_7759 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7760 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7762 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1:term, auto___def_21 (s X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1. intro H. intros.
  elim (rem_7441 X1 H);  intros.
Defined.

Remark rem_7763 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1:term, auto___type_12 (s X1) -> auto___def_21 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1. intro H. intros.
  elim (rem_4421 X1 H);  intros.
  apply (rem_7762 epsilon_m__type_12_m__def_21 X1);  tauto.
Defined.

Remark rem_7764 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> auto___def_21 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intro H. intros.
  elim (rem_1960 H);  intros.
Defined.

Remark rem_7765 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> auto___type_12 i -> auto___def_21 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intro H. intros.
  elim (rem_4424 H);  intros.
  apply (rem_7764 epsilon_m__type_12_m__def_21);  tauto.
Defined.

Remark rem_7766 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> auto___def_21 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intro H. intros.
  elim (rem_7446 H);  intros.
Defined.

Remark rem_7767 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> auto___type_12 nil -> auto___def_21 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intro H. intros.
  elim (rem_4427 H);  intros.
  apply (rem_7766 epsilon_m__type_12_m__def_21);  tauto.
Defined.

Remark rem_7768 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> auto___def_21 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intro H. intros.
  elim (rem_1974 H);  intros.
Defined.

Remark rem_7769 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> auto___type_12 server -> auto___def_21 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intro H. intros.
  elim (rem_4430 H);  intros.
  apply (rem_7768 epsilon_m__type_12_m__def_21);  tauto.
Defined.

Remark rem_7770 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (key X1 X2) -> auto___def_60 X1 -> auto___type_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7451 X1 X2 H);  intros.
Defined.

Remark rem_7771 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (key X1 X2) -> auto___def_55 X1 -> auto___def_4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7451 X1 X2 H);  intros.
Defined.

Remark rem_7772 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7451 X1 X2 H);  intros.
Defined.

Remark rem_7773 : (forall X:term, auto___type_12 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_12 (key X1 X2) -> auto___def_21 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_4450 X1 X2 H);  intros.
  apply (rem_7770 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7771 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
  apply (rem_7772 epsilon_m__type_12_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7774 : forall X1:term, auto___type_12 X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_12_m__def_21 1.
  intro X. case X.
  exact (rem_7751 epsilon_m__type_12_m__def_21 ).
  exact (rem_7747 epsilon_m__type_12_m__def_21 ).
  intros X1 X2;  exact (rem_7761 epsilon_m__type_12_m__def_21 X1 X2).
  intros X1 X2;  exact (rem_7745 epsilon_m__type_12_m__def_21 X1 X2).
  intros X1 X2;  exact (rem_7753 epsilon_m__type_12_m__def_21 X1 X2).
  intros X1 X2;  exact (rem_7758 epsilon_m__type_12_m__def_21 X1 X2).
  exact (rem_7765 epsilon_m__type_12_m__def_21 ).
  intros X1 X2;  exact (rem_7773 epsilon_m__type_12_m__def_21 X1 X2).
  exact (rem_7767 epsilon_m__type_12_m__def_21 ).
  intros X1 X2. intro H. elim (rem_4464 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4454 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4452 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4461 X1 X2 H).
  intros X1;  exact (rem_7749 epsilon_m__type_12_m__def_21 X1).
  intros X1 X2. intro H. elim (rem_4459 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4458 X1 X2 H).
   intro H. elim (rem_4460  H).
   intro H. elim (rem_4457  H).
  intros X1 X2. intro H. elim (rem_4456 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4455 X1 X2 H).
  intros X1;  exact (rem_7763 epsilon_m__type_12_m__def_21 X1).
  exact (rem_7769 epsilon_m__type_12_m__def_21 ).
  intros X1 X2. intro H. elim (rem_4463 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4453 X1 X2 H).
   intro H. elim (rem_4462  H).
Qed.

Remark rem_7775 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1:term, auto___type_12 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_19. exact (rem_7774).
Defined.

Remark rem_7776 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_54 X2 -> auto___type_12 X1 -> auto___def_22 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2.
  cut (auto___type_12 X1 -> auto___def_21 X1 -> False). clear  epsilon_mtestable_old_m__def_19. tauto.
  exact (rem_7775 epsilon_mtestable_old_m__def_19 X1).
Defined.

Remark rem_7777 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (crypt X1 X2) -> auto___type_12 X1 -> auto___def_54 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_1840 X1 X2 H);  intros.
  apply (rem_7776 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7778 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1:term, auto___def_24 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_19. exact (rem_7408).
Defined.

Remark rem_7779 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_25 X2 -> auto___def_24 X1 -> auto___def_22 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_21 X1 -> False). clear  epsilon_mtestable_old_m__def_19. tauto.
  exact (rem_7778 epsilon_mtestable_old_m__def_19 X1).
Defined.

Remark rem_7780 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_1840 X1 X2 H);  intros.
  apply (rem_7779 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7781 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7782 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___type_12 X1 -> auto___def_54 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7783 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7784 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___type_11 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7785 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7786 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (crypt X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7417 X1 X2 H);  intros.
Defined.

Remark rem_7787 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_11 (crypt X1 X2) -> auto___def_21 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_4589 X1 X2 H);  intros.
  apply (rem_7781 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7782 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7783 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7784 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7785 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7786 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7788 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> auto___def_21 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intro H. intros.
  elim (rem_1966 H);  intros.
Defined.

Remark rem_7789 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> auto___type_11 bob -> auto___def_21 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intro H. intros.
  elim (rem_4593 H);  intros.
  apply (rem_7788 epsilon_m__type_11_m__def_21);  tauto.
Defined.

Remark rem_7790 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1:term, auto___def_21 (p X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1. intro H. intros.
  elim (rem_7425 X1 H);  intros.
Defined.

Remark rem_7791 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1:term, auto___type_11 (p X1) -> auto___def_21 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1. intro H. intros.
  elim (rem_4598 X1 H);  intros.
  apply (rem_7790 epsilon_m__type_11_m__def_21 X1);  tauto.
Defined.

Remark rem_7792 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> auto___def_21 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intro H. intros.
  elim (rem_1969 H);  intros.
Defined.

Remark rem_7793 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> auto___type_11 alice -> auto___def_21 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intro H. intros.
  elim (rem_4601 H);  intros.
  apply (rem_7792 epsilon_m__type_11_m__def_21);  tauto.
Defined.

Remark rem_7794 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (dec X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7430 X1 X2 H);  intros.
Defined.

Remark rem_7795 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_11 (dec X1 X2) -> auto___def_21 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_4607 X1 X2 H);  intros.
  apply (rem_7794 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7796 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto___def_10 X1 -> auto___def_11 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7797 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto___def_15 X1 -> auto___def_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7798 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto___def_19 X1 -> auto___def_20 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7799 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (enc X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7433 X1 X2 H);  intros.
Defined.

Remark rem_7800 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_11 (enc X1 X2) -> auto___def_21 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_4628 X1 X2 H);  intros.
  apply (rem_7796 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7797 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7798 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7799 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7801 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (cons X1 X2) -> auto_testable_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2540 X1 X2 H);  intros.
Defined.

Remark rem_7802 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (cons X1 X2) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_2540 X1 X2 H);  intros.
Defined.

Remark rem_7803 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_11 (cons X1 X2) -> auto___def_21 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_4634 X1 X2 H);  intros.
  apply (rem_7801 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7802 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7804 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1:term, auto___def_21 (s X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1. intro H. intros.
  elim (rem_7441 X1 H);  intros.
Defined.

Remark rem_7805 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1:term, auto___type_11 (s X1) -> auto___def_21 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1. intro H. intros.
  elim (rem_4637 X1 H);  intros.
  apply (rem_7804 epsilon_m__type_11_m__def_21 X1);  tauto.
Defined.

Remark rem_7806 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> auto___def_21 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intro H. intros.
  elim (rem_1960 H);  intros.
Defined.

Remark rem_7807 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> auto___type_11 i -> auto___def_21 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intro H. intros.
  elim (rem_4640 H);  intros.
  apply (rem_7806 epsilon_m__type_11_m__def_21);  tauto.
Defined.

Remark rem_7808 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> auto___def_21 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intro H. intros.
  elim (rem_7446 H);  intros.
Defined.

Remark rem_7809 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> auto___type_11 nil -> auto___def_21 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intro H. intros.
  elim (rem_4643 H);  intros.
  apply (rem_7808 epsilon_m__type_11_m__def_21);  tauto.
Defined.

Remark rem_7810 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> auto___def_21 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intro H. intros.
  elim (rem_1974 H);  intros.
Defined.

Remark rem_7811 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> auto___type_11 server -> auto___def_21 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intro H. intros.
  elim (rem_4646 H);  intros.
  apply (rem_7810 epsilon_m__type_11_m__def_21);  tauto.
Defined.

Remark rem_7812 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (key X1 X2) -> auto___def_60 X1 -> auto___type_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7451 X1 X2 H);  intros.
Defined.

Remark rem_7813 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (key X1 X2) -> auto___def_55 X1 -> auto___def_4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7451 X1 X2 H);  intros.
Defined.

Remark rem_7814 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___def_21 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_7451 X1 X2 H);  intros.
Defined.

Remark rem_7815 : (forall X:term, auto___type_11 X -> auto___def_21 X -> False)
    -> forall X1 X2:term, auto___type_11 (key X1 X2) -> auto___def_21 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_m__def_21. intros X1 X2. intro H. intros.
  elim (rem_4666 X1 X2 H);  intros.
  apply (rem_7812 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7813 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
  apply (rem_7814 epsilon_m__type_11_m__def_21 X1 X2);  tauto.
Defined.

Remark rem_7816 : forall X1:term, auto___type_11 X1 -> auto___def_21 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__type_11_m__def_21 1.
  intro X. case X.
  exact (rem_7793 epsilon_m__type_11_m__def_21 ).
  exact (rem_7789 epsilon_m__type_11_m__def_21 ).
  intros X1 X2;  exact (rem_7803 epsilon_m__type_11_m__def_21 X1 X2).
  intros X1 X2;  exact (rem_7787 epsilon_m__type_11_m__def_21 X1 X2).
  intros X1 X2;  exact (rem_7795 epsilon_m__type_11_m__def_21 X1 X2).
  intros X1 X2;  exact (rem_7800 epsilon_m__type_11_m__def_21 X1 X2).
  exact (rem_7807 epsilon_m__type_11_m__def_21 ).
  intros X1 X2;  exact (rem_7815 epsilon_m__type_11_m__def_21 X1 X2).
  exact (rem_7809 epsilon_m__type_11_m__def_21 ).
  intros X1 X2. intro H. elim (rem_4680 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4670 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4668 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4677 X1 X2 H).
  intros X1;  exact (rem_7791 epsilon_m__type_11_m__def_21 X1).
  intros X1 X2. intro H. elim (rem_4675 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4674 X1 X2 H).
   intro H. elim (rem_4676  H).
   intro H. elim (rem_4673  H).
  intros X1 X2. intro H. elim (rem_4672 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4671 X1 X2 H).
  intros X1;  exact (rem_7805 epsilon_m__type_11_m__def_21 X1).
  exact (rem_7811 epsilon_m__type_11_m__def_21 ).
  intros X1 X2. intro H. elim (rem_4679 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4669 X1 X2 H).
   intro H. elim (rem_4678  H).
Qed.

Remark rem_7817 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1:term, auto___type_11 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_19. exact (rem_7816).
Defined.

Remark rem_7818 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___type_11 X1 -> auto___def_52 X2 -> auto___def_22 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2.
  cut (auto___type_11 X1 -> auto___def_21 X1 -> False). clear  epsilon_mtestable_old_m__def_19. tauto.
  exact (rem_7817 epsilon_mtestable_old_m__def_19 X1).
Defined.

Remark rem_7819 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (crypt X1 X2) -> auto___type_11 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_1840 X1 X2 H);  intros.
  apply (rem_7818 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7820 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1:term, auto___type_7 X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_19. exact (rem_7414).
Defined.

Remark rem_7821 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_44 X2 -> auto___def_22 X2 -> auto___type_7 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2.
  cut (auto___type_7 X1 -> auto___def_21 X1 -> False). clear  epsilon_mtestable_old_m__def_19. tauto.
  exact (rem_7820 epsilon_mtestable_old_m__def_19 X1).
Defined.

Remark rem_7822 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_1840 X1 X2 H);  intros.
  apply (rem_7821 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7823 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1:term, auto_knows_old X1 -> auto___def_21 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mtestable_old_m__def_19. exact (rem_7455).
Defined.

Remark rem_7824 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_21 X1 -> auto_knows_old X1 -> auto___def_22 X2 -> auto_knows_old X2 -> False. (* Split. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2.
  cut (auto_knows_old X1 -> auto___def_21 X1 -> False). clear  epsilon_mtestable_old_m__def_19. tauto.
  exact (rem_7823 epsilon_mtestable_old_m__def_19 X1).
Defined.

Remark rem_7825 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (crypt X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_1840 X1 X2 H);  intros.
  apply (rem_7824 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7826 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto_testable_old (crypt X1 X2) -> auto___def_19 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_79 X1 X2 H);  intros.
  apply (rem_7738 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7777 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7780 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7819 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7822 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7825 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7827 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> auto___def_19 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intro H. intros.
  elim (rem_3144 H);  intros.
Defined.

Remark rem_7828 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> auto_testable_old bob -> auto___def_19 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intro H. intros.
  elim (rem_83 H);  intros.
  apply (rem_7827 epsilon_mtestable_old_m__def_19);  tauto.
Defined.

Remark rem_7829 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1:term, auto___def_19 (p X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1. intro H. intros.
  elim (rem_3148 X1 H);  intros.
Defined.

Remark rem_7830 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1:term, auto_testable_old (p X1) -> auto___def_19 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1. intro H. intros.
  elim (rem_88 X1 H);  intros.
  apply (rem_7829 epsilon_mtestable_old_m__def_19 X1);  tauto.
Defined.

Remark rem_7831 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> auto___def_19 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intro H. intros.
  elim (rem_3152 H);  intros.
Defined.

Remark rem_7832 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> auto_testable_old alice -> auto___def_19 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intro H. intros.
  elim (rem_91 H);  intros.
  apply (rem_7831 epsilon_mtestable_old_m__def_19);  tauto.
Defined.

Remark rem_7833 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (dec X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_3155 X1 X2 H);  intros.
Defined.

Remark rem_7834 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto_testable_old (dec X1 X2) -> auto___def_19 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_97 X1 X2 H);  intros.
  apply (rem_7833 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7835 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (enc X1 X2) -> auto___def_10 X1 -> auto___def_11 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_3156 X1 X2 H);  intros.
Defined.

Remark rem_7836 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (enc X1 X2) -> auto___def_15 X1 -> auto___def_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_3156 X1 X2 H);  intros.
Defined.

Remark rem_7837 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (enc X1 X2) -> auto___def_19 X1 -> auto___def_20 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_3156 X1 X2 H);  intros.
Defined.

Remark rem_7838 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (enc X1 X2) -> auto_testable_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_3156 X1 X2 H);  intros.
Defined.

Remark rem_7839 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto_testable_old (enc X1 X2) -> auto___def_19 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_118 X1 X2 H);  intros.
  apply (rem_7835 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7836 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7837 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7838 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7840 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (cons X1 X2) -> auto_testable_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_3157 X1 X2 H);  intros.
Defined.

Remark rem_7841 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (cons X1 X2) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_3157 X1 X2 H);  intros.
Defined.

Remark rem_7842 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto_testable_old (cons X1 X2) -> auto___def_19 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_124 X1 X2 H);  intros.
  apply (rem_7840 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7841 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7843 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1:term, auto___def_19 (s X1) -> auto_testable_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1. intro H. intros.
  elim (rem_3158 X1 H);  intros.
Defined.

Remark rem_7844 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1:term, auto_testable_old (s X1) -> auto___def_19 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1. intro H. intros.
  elim (rem_127 X1 H);  intros.
  apply (rem_7843 epsilon_mtestable_old_m__def_19 X1);  tauto.
Defined.

Remark rem_7845 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> auto___def_19 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intro H. intros.
  elim (rem_3161 H);  intros.
Defined.

Remark rem_7846 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> auto_testable_old i -> auto___def_19 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intro H. intros.
  elim (rem_130 H);  intros.
  apply (rem_7845 epsilon_mtestable_old_m__def_19);  tauto.
Defined.

Remark rem_7847 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> auto___def_19 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intro H. intros.
  elim (rem_3162 H);  intros.
Defined.

Remark rem_7848 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> auto_testable_old nil -> auto___def_19 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intro H. intros.
  elim (rem_133 H);  intros.
  apply (rem_7847 epsilon_mtestable_old_m__def_19);  tauto.
Defined.

Remark rem_7849 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> auto___def_19 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intro H. intros.
  elim (rem_3163 H);  intros.
Defined.

Remark rem_7850 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> auto_testable_old server -> auto___def_19 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intro H. intros.
  elim (rem_136 H);  intros.
  apply (rem_7849 epsilon_mtestable_old_m__def_19);  tauto.
Defined.

Remark rem_7851 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (key X1 X2) -> auto___def_60 X1 -> auto___type_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_3165 X1 X2 H);  intros.
Defined.

Remark rem_7852 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (key X1 X2) -> auto___def_55 X1 -> auto___def_4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_3165 X1 X2 H);  intros.
Defined.

Remark rem_7853 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto___def_19 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_3165 X1 X2 H);  intros.
Defined.

Remark rem_7854 : (forall X:term, auto_testable_old X -> auto___def_19 X -> False)
    -> forall X1 X2:term, auto_testable_old (key X1 X2) -> auto___def_19 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mtestable_old_m__def_19. intros X1 X2. intro H. intros.
  elim (rem_156 X1 X2 H);  intros.
  apply (rem_7851 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7852 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
  apply (rem_7853 epsilon_mtestable_old_m__def_19 X1 X2);  tauto.
Defined.

Remark rem_7855 : forall X1:term, auto_testable_old X1 -> auto___def_19 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mtestable_old_m__def_19 1.
  intro X. case X.
  exact (rem_7832 epsilon_mtestable_old_m__def_19 ).
  exact (rem_7828 epsilon_mtestable_old_m__def_19 ).
  intros X1 X2;  exact (rem_7842 epsilon_mtestable_old_m__def_19 X1 X2).
  intros X1 X2;  exact (rem_7826 epsilon_mtestable_old_m__def_19 X1 X2).
  intros X1 X2;  exact (rem_7834 epsilon_mtestable_old_m__def_19 X1 X2).
  intros X1 X2;  exact (rem_7839 epsilon_mtestable_old_m__def_19 X1 X2).
  exact (rem_7846 epsilon_mtestable_old_m__def_19 ).
  intros X1 X2;  exact (rem_7854 epsilon_mtestable_old_m__def_19 X1 X2).
  exact (rem_7848 epsilon_mtestable_old_m__def_19 ).
  intros X1 X2. intro H. elim (rem_170 X1 X2 H).
  intros X1 X2. intro H. elim (rem_160 X1 X2 H).
  intros X1 X2. intro H. elim (rem_158 X1 X2 H).
  intros X1 X2. intro H. elim (rem_167 X1 X2 H).
  intros X1;  exact (rem_7830 epsilon_mtestable_old_m__def_19 X1).
  intros X1 X2. intro H. elim (rem_165 X1 X2 H).
  intros X1 X2. intro H. elim (rem_164 X1 X2 H).
   intro H. elim (rem_166  H).
   intro H. elim (rem_163  H).
  intros X1 X2. intro H. elim (rem_162 X1 X2 H).
  intros X1 X2. intro H. elim (rem_161 X1 X2 H).
  intros X1;  exact (rem_7844 epsilon_mtestable_old_m__def_19 X1).
  exact (rem_7850 epsilon_mtestable_old_m__def_19 ).
  intros X1 X2. intro H. elim (rem_169 X1 X2 H).
  intros X1 X2. intro H. elim (rem_159 X1 X2 H).
   intro H. elim (rem_168  H).
Qed.

Remark rem_7856 : forall X1 X2:term, auto___def_19 X2 -> auto___def_20 X1 -> auto_testable_old X2 -> auto_knows_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7855 X2)). tauto.
Qed.

Remark rem_7857 : forall X1 X2:term, auto_testable_old X2 -> auto_testable_old (enc X2 X1) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_118 X2 X1 H);  intros.
  apply (rem_7614 X1 X2);  tauto.
  apply (rem_7735 X1 X2);  tauto.
  apply (rem_7856 X1 X2);  tauto.
  apply (rem_6731 X1 X2);  tauto.
Qed.

Remark rem_7858 : forall X1 X2:term, auto_testable_old (enc X2 X1) -> auto_testable_old X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_testable_old X2 -> auto_testable_old (enc X2 X1) -> auto_knows_old X1). tauto. exact (rem_7857 X1 X2).
Qed.

Remark rem_7859 : auto_agent server. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans_agent_server_1;  tauto.
 tauto.
Qed.

Remark rem_7860 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old X1 -> auto_testable_old (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5158 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_old_dec_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7861 : (forall X:term, auto___def_17 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7862 : (forall X:term, auto___def_17 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_17_ptestable_current. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_7861 epsilon_m__def_17_ptestable_current X1);  assumption.
  tauto.
Defined.

Remark rem_7863 : (forall X:term, auto___def_17 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_testable_current (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_17_ptestable_current. intros X1 X2. intros A1.
  case (rem_7862 epsilon_m__def_17_ptestable_current X1 A1). clear  epsilon_m__def_17_ptestable_current A1. intros. apply trans_testable_current_r_old_1;  tauto.
 clear  epsilon_m__def_17_ptestable_current A1. tauto.
Defined.

Remark rem_7864 : (forall X:term, auto___def_17 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 (r_old X1 X2) -> auto_testable_current (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1322 X1 X2 H);  intros.
  apply (rem_7863 epsilon_m__def_17_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_7865 : forall X1:term, auto___def_17 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_17_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_1334  H).
   intro H. elim (rem_1327  H).
  intros X1 X2. intro H. elim (rem_1339 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1337 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1338 X1 X2 H).
   intro H. elim (rem_1343  H).
  intros X1 X2. intro H. elim (rem_1347 X1 X2 H).
   intro H. elim (rem_1344  H).
  intros X1 X2. intro H. elim (rem_1346 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1325 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1336 X1 X2 H).
  intros X1. intro H. elim (rem_1330 X1 H).
  intros X1 X2. intro H. elim (rem_1333 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1332 X1 X2 H).
   intro H. elim (rem_1335  H).
   intro H. elim (rem_1331  H).
  intros X1 X2. intro H. elim (rem_1329 X1 X2 H).
  intros X1 X2;  exact (rem_7864 epsilon_m__def_17_ptestable_current X1 X2).
  intros X1. intro H. elim (rem_1340 X1 H).
   intro H. elim (rem_1345  H).
  intros X1 X2. intro H. elim (rem_1342 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1326 X1 X2 H).
   intro H. elim (rem_1341  H).
Qed.

Remark rem_7866 : forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_17 X1 -> auto_testable_current X1). tauto. exact (rem_7865 X1).
Qed.

Remark rem_7867 : (forall X:term, auto___def_40 X -> auto_testable_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_ptestable_current.  tauto.
Defined.

Remark rem_7868 : (forall X:term, auto___def_40 X -> auto_testable_current X)
    -> auto_testable_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_ptestable_current.  case (rem_7867 epsilon_m__def_40_ptestable_current). clear  epsilon_m__def_40_ptestable_current. intros. apply trans_testable_current_nil_1;  tauto.
 clear  epsilon_m__def_40_ptestable_current. tauto.
Defined.

Remark rem_7869 : (forall X:term, auto___def_40 X -> auto_testable_current X)
    -> auto___def_40 nil -> auto_testable_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_ptestable_current. intro H. intros.
  elim (rem_2250 H);  intros.
  apply (rem_7868 epsilon_m__def_40_ptestable_current);  tauto.
Defined.

Remark rem_7870 : forall X2:term, auto___def_40 X2 -> auto_testable_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_40_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_2263  H).
   intro H. elim (rem_2255  H).
  intros X1 X2. intro H. elim (rem_2268 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2252 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2266 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2267 X1 X2 H).
   intro H. elim (rem_2272  H).
  intros X1 X2. intro H. elim (rem_2275 X1 X2 H).
  exact (rem_7869 epsilon_m__def_40_ptestable_current ).
  intros X1 X2. intro H. elim (rem_2274 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2256 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2253 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2265 X1 X2 H).
  intros X1. intro H. elim (rem_2259 X1 H).
  intros X1 X2. intro H. elim (rem_2262 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2261 X1 X2 H).
   intro H. elim (rem_2264  H).
   intro H. elim (rem_2260  H).
  intros X1 X2. intro H. elim (rem_2258 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2257 X1 X2 H).
  intros X1. intro H. elim (rem_2269 X1 H).
   intro H. elim (rem_2273  H).
  intros X1 X2. intro H. elim (rem_2271 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2254 X1 X2 H).
   intro H. elim (rem_2270  H).
Qed.

Remark rem_7871 : (forall X:term, auto___def_38 X -> auto_testable_current X)
    -> forall X2:term, auto___def_40 X2 -> auto_testable_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_38_ptestable_current. exact (rem_7870).
Defined.

Remark rem_7872 : (forall X:term, auto___def_38 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto_testable_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_38_ptestable_current. intros X1 X2.
  cut (auto___def_40 X2 -> auto_testable_current X2). tauto. exact (rem_7871 epsilon_m__def_38_ptestable_current X2).
Defined.

Remark rem_7873 : (forall X:term, auto___def_38 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_38_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X2). 2:apply (rem_7872 epsilon_m__def_38_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7874 : (forall X:term, auto___def_38 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_40 X2 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_38_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7873 epsilon_m__def_38_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_38_ptestable_current A1 A2. intros. apply trans_testable_current_cons_1;  tauto.
 clear  epsilon_m__def_38_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7875 : (forall X:term, auto___def_38 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_38 (cons X1 X2) -> auto_testable_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_38_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1929 X1 X2 H);  intros.
  apply (rem_7874 epsilon_m__def_38_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_7876 : forall X2:term, auto___def_38 X2 -> auto_testable_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_38_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_2293  H).
   intro H. elim (rem_2285  H).
  intros X1 X2;  exact (rem_7875 epsilon_m__def_38_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_2282 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2296 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2297 X1 X2 H).
   intro H. elim (rem_2301  H).
  intros X1 X2. intro H. elim (rem_2305 X1 X2 H).
   intro H. elim (rem_2302  H).
  intros X1 X2. intro H. elim (rem_2304 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2286 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2283 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2295 X1 X2 H).
  intros X1. intro H. elim (rem_2289 X1 H).
  intros X1 X2. intro H. elim (rem_2292 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2291 X1 X2 H).
   intro H. elim (rem_2294  H).
   intro H. elim (rem_2290  H).
  intros X1 X2. intro H. elim (rem_2288 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2287 X1 X2 H).
  intros X1. intro H. elim (rem_2298 X1 H).
   intro H. elim (rem_2303  H).
  intros X1 X2. intro H. elim (rem_2300 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2284 X1 X2 H).
   intro H. elim (rem_2299  H).
Qed.

Remark rem_7877 : (forall X:term, auto___def_36 X -> auto_testable_current X)
    -> forall X2:term, auto___def_38 X2 -> auto_testable_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_36_ptestable_current. exact (rem_7876).
Defined.

Remark rem_7878 : (forall X:term, auto___def_36 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto_testable_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_36_ptestable_current. intros X1 X2.
  cut (auto___def_38 X2 -> auto_testable_current X2). tauto. exact (rem_7877 epsilon_m__def_36_ptestable_current X2).
Defined.

Remark rem_7879 : (forall X:term, auto___def_36 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_36_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X2). 2:apply (rem_7878 epsilon_m__def_36_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7880 : (forall X:term, auto___def_36 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_38 X2 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_36_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7879 epsilon_m__def_36_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_36_ptestable_current A1 A2. intros. apply trans_testable_current_cons_1;  tauto.
 clear  epsilon_m__def_36_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7881 : (forall X:term, auto___def_36 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 (cons X1 X2) -> auto_testable_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_36_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_1935 X1 X2 H);  intros.
  apply (rem_7880 epsilon_m__def_36_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_7882 : forall X1:term, auto___def_36 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_36_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_1993  H).
   intro H. elim (rem_1990  H).
  intros X1 X2;  exact (rem_7881 epsilon_m__def_36_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_2312 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2325 X1 X2 H).
   intro H. elim (rem_1984  H).
  intros X1 X2. intro H. elim (rem_2331 X1 X2 H).
   intro H. elim (rem_2329  H).
  intros X1 X2. intro H. elim (rem_2330 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2313 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2323 X1 X2 H).
  intros X1. intro H. elim (rem_2318 X1 H).
  intros X1 X2. intro H. elim (rem_2321 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2320 X1 X2 H).
   intro H. elim (rem_2322  H).
   intro H. elim (rem_2319  H).
  intros X1 X2. intro H. elim (rem_2317 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2316 X1 X2 H).
  intros X1. intro H. elim (rem_2326 X1 H).
   intro H. elim (rem_1998  H).
  intros X1 X2. intro H. elim (rem_2328 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2314 X1 X2 H).
   intro H. elim (rem_2327  H).
Qed.

Remark rem_7883 : forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_36 X1 -> auto_testable_current X1). tauto. exact (rem_7882 X1).
Qed.

Remark rem_7884 : (forall X:term, auto___def_21 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7885 : (forall X:term, auto___def_21 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_21_ptestable_current. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_7884 epsilon_m__def_21_ptestable_current X1);  assumption.
  tauto.
Defined.

Remark rem_7886 : (forall X:term, auto___def_21 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_testable_current (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_21_ptestable_current. intros X1 X2. intros A1.
  case (rem_7885 epsilon_m__def_21_ptestable_current X1 A1). clear  epsilon_m__def_21_ptestable_current A1. intros. apply trans_testable_current_r_old_1;  tauto.
 clear  epsilon_m__def_21_ptestable_current A1. tauto.
Defined.

Remark rem_7887 : forall X1 X2:term, auto___def_21 (r_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7888 : (forall X:term, auto___def_21 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 (r_old X1 X2) -> auto_testable_current (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_21_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_7887 X1 X2 H);  intros.
  apply (rem_7886 epsilon_m__def_21_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_7889 : forall X1 X2:term, auto___def_21 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7890 : auto___def_21 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7891 : forall X1 X2:term, auto___def_21 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7892 : forall X1 X2:term, auto___def_21 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7893 : auto___def_21 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7894 : auto___def_21 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7895 : forall X1 X2:term, auto___def_21 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7896 : forall X1 X2:term, auto___def_21 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7897 : forall X1:term, auto___def_21 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_21_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_1969  H).
   intro H. elim (rem_1966  H).
  intros X1 X2. intro H. elim (rem_2540 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7417 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7430 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7433 X1 X2 H).
   intro H. elim (rem_1960  H).
  intros X1 X2. intro H. elim (rem_7451 X1 X2 H).
   intro H. elim (rem_7446  H).
  intros X1 X2. intro H. elim (rem_7896 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7405 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7889 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7411 X1 X2 H).
  intros X1. intro H. elim (rem_7425 X1 H).
  intros X1 X2. intro H. elim (rem_7892 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7891 X1 X2 H).
   intro H. elim (rem_7893  H).
   intro H. elim (rem_7890  H).
  intros X1 X2. intro H. elim (rem_5336 X1 X2 H).
  intros X1 X2;  exact (rem_7888 epsilon_m__def_21_ptestable_current X1 X2).
  intros X1. intro H. elim (rem_7441 X1 H).
   intro H. elim (rem_1974  H).
  intros X1 X2. intro H. elim (rem_7895 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2567 X1 X2 H).
   intro H. elim (rem_7894  H).
Qed.

Remark rem_7898 : forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_21 X1 -> auto_testable_current X1). tauto. exact (rem_7897 X1).
Qed.

Remark rem_7899 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7900 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_7899 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7901 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7902 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_7901 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7903 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_7900 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_7902 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7904 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7903 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7905 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7906 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_7905 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7907 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7908 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_7907 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7909 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_7906 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_7908 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7910 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7909 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_2;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7911 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7912 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_7911 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7913 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7914 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_7913 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7915 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_7912 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_7914 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7916 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7915 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_3;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7917 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___type_26 X1 -> auto___type_26 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7918 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_26 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___type_26 X1 -> auto___type_26 X1). tauto. exact (rem_7917 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7919 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_111 X2 -> auto___def_111 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7920 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___def_111 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_111 X2 -> auto___def_111 X2). tauto. exact (rem_7919 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7921 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> (auto___type_26 X1 /\ auto___def_111 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_26 X1). 2:apply (rem_7918 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_111 X2). 2:apply (rem_7920 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7922 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7921 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_4;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7923 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7924 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_7923 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7925 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7926 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_7925 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7927 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7924 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7926 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7928 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7927 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_5;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7929 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7930 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_7929 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7931 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7932 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_7931 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7933 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_7930 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_7932 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7934 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7933 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_6;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7935 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7936 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_7935 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7937 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7938 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_7937 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7939 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_7936 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_7938 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7940 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7939 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_7;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7941 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___type_27 X1 -> auto___type_27 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7942 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_27 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___type_27 X1 -> auto___type_27 X1). tauto. exact (rem_7941 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7943 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_113 X2 -> auto___def_113 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7944 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___def_113 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_113 X2 -> auto___def_113 X2). tauto. exact (rem_7943 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7945 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> (auto___type_27 X1 /\ auto___def_113 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_27 X1). 2:apply (rem_7942 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_113 X2). 2:apply (rem_7944 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7946 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7945 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_8;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7947 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7948 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_7947 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7949 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7950 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_7949 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7951 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_7948 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_7950 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7952 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7951 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_9;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7953 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7954 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_7953 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7955 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7956 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_7955 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7957 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_7954 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_7956 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7958 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7957 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_10;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7959 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7960 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_7959 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7961 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7962 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_7961 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7963 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_7960 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_7962 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7964 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7963 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_11;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7965 : forall X1 X2:term, auto___type_26 (crypt X1 X2) -> or_11
    (auto___def_17 X1 /\ auto___type_2 X2)
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___def_21 X1 /\ auto___def_22 X2)
    (auto___type_26 X1 /\ auto___def_111 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___type_22 X1 /\ auto___def_104 X2)
    (auto___def_88 X1 /\ auto___def_89 X2)
    (auto___type_27 X1 /\ auto___def_113 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto___def_84 X1 /\ auto___def_85 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_11_intro_1; tauto.
  intros. apply or_11_intro_2; tauto.
  intros. apply or_11_intro_3; tauto.
  intros. apply or_11_intro_4; tauto.
  intros. apply or_11_intro_5; tauto.
  intros. apply or_11_intro_6; tauto.
  intros. apply or_11_intro_7; tauto.
  intros. apply or_11_intro_8; tauto.
  intros. apply or_11_intro_9; tauto.
  intros. apply or_11_intro_10; tauto.
  intros. apply or_11_intro_11; tauto.
Qed.

Remark rem_7966 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 (crypt X1 X2) -> auto_testable_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_7965 X1 X2 H);  intros.
  apply (rem_7904 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_7910 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_7916 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_7922 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_7928 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_7934 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_7940 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_7946 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_7952 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_7958 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_7964 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_7967 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current.  tauto.
Defined.

Remark rem_7968 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> auto_testable_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current.  case (rem_7967 epsilon_m__type_26_ptestable_current). clear  epsilon_m__type_26_ptestable_current. intros. apply trans_testable_current_bob_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current. tauto.
Defined.

Remark rem_7969 : auto___type_26 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7970 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> auto___type_26 bob -> auto_testable_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intro H. intros.
  elim (rem_7969 H);  intros.
  apply (rem_7968 epsilon_m__type_26_ptestable_current);  tauto.
Defined.

Remark rem_7971 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.  case (rem_7967 epsilon_m__type_26_ptestable_current). clear  epsilon_m__type_26_ptestable_current. intros. apply trans_testable_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current. tauto.
Defined.

Remark rem_7972 : forall X1 X2:term, auto___type_26 (noncea_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7973 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 (noncea_old X1 X2) -> auto_testable_current (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_7972 X1 X2 H);  intros.
  apply (rem_7971 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_7974 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7975 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_7974 epsilon_m__type_26_ptestable_current X1);  assumption.
  tauto.
Defined.

Remark rem_7976 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_testable_current (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1.
  case (rem_7975 epsilon_m__type_26_ptestable_current X1 A1). clear  epsilon_m__type_26_ptestable_current A1. intros. apply trans_testable_current_r_old_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1. tauto.
Defined.

Remark rem_7977 : forall X1 X2:term, auto___type_26 (r_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7978 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 (r_old X1 X2) -> auto_testable_current (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_7977 X1 X2 H);  intros.
  apply (rem_7976 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_7979 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7980 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1. intros A1.
  cut (auto_testable_current X1). 2:apply (rem_7979 epsilon_m__type_26_ptestable_current X1);  assumption.
  tauto.
Defined.

Remark rem_7981 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1. intros A1.
  case (rem_7980 epsilon_m__type_26_ptestable_current X1 A1). clear  epsilon_m__type_26_ptestable_current A1. intros. apply trans_testable_current_p_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1. tauto.
Defined.

Remark rem_7982 : forall X1:term, auto___type_26 (p X1) -> or_1
    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7983 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___type_26 (p X1) -> auto_testable_current (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1. intro H. intros.
  elim (rem_7982 X1 H);  intros.
  apply (rem_7981 epsilon_m__type_26_ptestable_current X1);  tauto.
Defined.

Remark rem_7984 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.  case (rem_7967 epsilon_m__type_26_ptestable_current). clear  epsilon_m__type_26_ptestable_current. intros. apply trans_testable_current_passwd_old_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current. tauto.
Defined.

Remark rem_7985 : forall X1 X2:term, auto___type_26 (passwd_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7986 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 (passwd_old X1 X2) -> auto_testable_current (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_7985 X1 X2 H);  intros.
  apply (rem_7984 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_7987 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> auto_testable_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current.  case (rem_7967 epsilon_m__type_26_ptestable_current). clear  epsilon_m__type_26_ptestable_current. intros. apply trans_testable_current_alice_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current. tauto.
Defined.

Remark rem_7988 : auto___type_26 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7989 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> auto___type_26 alice -> auto_testable_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intro H. intros.
  elim (rem_7988 H);  intros.
  apply (rem_7987 epsilon_m__type_26_ptestable_current);  tauto.
Defined.

Remark rem_7990 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.  case (rem_7967 epsilon_m__type_26_ptestable_current). clear  epsilon_m__type_26_ptestable_current. intros. apply trans_testable_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current. tauto.
Defined.

Remark rem_7991 : forall X1 X2:term, auto___type_26 (nonceb_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7992 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 (nonceb_old X1 X2) -> auto_testable_current (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_7991 X1 X2 H);  intros.
  apply (rem_7990 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_7993 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto_testable_current X1 -> auto_testable_current X1). tauto. exact (rem_7979 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_7994 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_7925 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_7995 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_7993 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7994 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7996 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7995 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_dec_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_7997 : forall X1 X2:term, auto___type_26 (dec X1 X2) -> or_1
    (auto_testable_current X1 /\ auto_knows_current X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7998 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 (dec X1 X2) -> auto_testable_current (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_7997 X1 X2 H);  intros.
  apply (rem_7996 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_7999 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8000 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_7999 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_8001 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8002 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_8001 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_8003 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_8000 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_8002 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8004 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8003 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_enc_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8005 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_7995 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8006 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8007 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_8006 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_8008 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8009 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_8008 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_8010 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_8007 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_8009 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8011 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8010 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_enc_3;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8012 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8013 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_8012 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_8014 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8015 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_8014 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_8016 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_8013 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_8015 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8017 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8016 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_enc_4;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8018 : forall X1 X2:term, auto___type_26 (enc X1 X2) -> or_4
    (auto___def_71 X1 /\ auto___def_72 X2)
    (auto_testable_current X1 /\ auto_knows_current X2)
    (auto___def_79 X1 /\ auto___def_80 X2)
    (auto___def_75 X1 /\ auto___def_76 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_8019 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 (enc X1 X2) -> auto_testable_current (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_8018 X1 X2 H);  intros.
  apply (rem_8004 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_8005 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_8011 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_8017 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8020 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8021 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X2. intros A1.
  cut (auto_testable_current X2). 2:apply (rem_8020 epsilon_m__type_26_ptestable_current X2);  assumption.
  tauto.
Defined.

Remark rem_8022 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X2 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1.
  case (rem_8021 epsilon_m__type_26_ptestable_current X2 A1). clear  epsilon_m__type_26_ptestable_current A1. intros. apply trans_testable_current_cons_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1. tauto.
Defined.

Remark rem_8023 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1.
  case (rem_7980 epsilon_m__type_26_ptestable_current X1 A1). clear  epsilon_m__type_26_ptestable_current A1. intros. apply trans_testable_current_cons_2;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1. tauto.
Defined.

Remark rem_8024 : forall X1 X2:term, auto___type_26 (cons X1 X2) -> or_2
    (auto_testable_current X2)    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_8025 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 (cons X1 X2) -> auto_testable_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_8024 X1 X2 H);  intros.
  apply (rem_8022 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_8023 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8026 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1. intros A1.
  case (rem_7980 epsilon_m__type_26_ptestable_current X1 A1). clear  epsilon_m__type_26_ptestable_current A1. intros. apply trans_testable_current_s_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1. tauto.
Defined.

Remark rem_8027 : forall X1:term, auto___type_26 (s X1) -> or_1
    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8028 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___type_26 (s X1) -> auto_testable_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1. intro H. intros.
  elim (rem_8027 X1 H);  intros.
  apply (rem_8026 epsilon_m__type_26_ptestable_current X1);  tauto.
Defined.

Remark rem_8029 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> auto_testable_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current.  case (rem_7967 epsilon_m__type_26_ptestable_current). clear  epsilon_m__type_26_ptestable_current. intros. apply trans_testable_current_i_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current. tauto.
Defined.

Remark rem_8030 : auto___type_26 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8031 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> auto___type_26 i -> auto_testable_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intro H. intros.
  elim (rem_8030 H);  intros.
  apply (rem_8029 epsilon_m__type_26_ptestable_current);  tauto.
Defined.

Remark rem_8032 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> auto_testable_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current.  case (rem_7967 epsilon_m__type_26_ptestable_current). clear  epsilon_m__type_26_ptestable_current. intros. apply trans_testable_current_nil_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current. tauto.
Defined.

Remark rem_8033 : auto___type_26 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8034 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> auto___type_26 nil -> auto_testable_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intro H. intros.
  elim (rem_8033 H);  intros.
  apply (rem_8032 epsilon_m__type_26_ptestable_current);  tauto.
Defined.

Remark rem_8035 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> auto_testable_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current.  case (rem_7967 epsilon_m__type_26_ptestable_current). clear  epsilon_m__type_26_ptestable_current. intros. apply trans_testable_current_server_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current. tauto.
Defined.

Remark rem_8036 : auto___type_26 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8037 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> auto___type_26 server -> auto_testable_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intro H. intros.
  elim (rem_8036 H);  intros.
  apply (rem_8035 epsilon_m__type_26_ptestable_current);  tauto.
Defined.

Remark rem_8038 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_119 X1 -> auto___def_119 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8039 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_119 X1 -> auto___def_119 X1). tauto. exact (rem_8038 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_8040 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___type_31 X2 -> auto___type_31 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8041 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___type_31 X2 -> auto___type_31 X2). tauto. exact (rem_8040 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_8042 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_8039 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_8041 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8043 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8042 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_key_1;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8044 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_114 X1 -> auto___def_114 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8045 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_114 X1 -> auto___def_114 X1). tauto. exact (rem_8044 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_8046 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_66 X2 -> auto___def_66 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8047 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_66 X2 -> auto___def_66 X2). tauto. exact (rem_8046 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_8048 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_8045 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_8047 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8049 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8048 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_key_2;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8050 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8051 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_8050 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_8052 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8053 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_8052 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_8054 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_8051 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_8053 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8055 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8054 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_key_3;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8056 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8057 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_8056 epsilon_m__type_26_ptestable_current X1).
Defined.

Remark rem_8058 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8059 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_8058 epsilon_m__type_26_ptestable_current X2).
Defined.

Remark rem_8060 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_8057 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_8059 epsilon_m__type_26_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8061 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8060 epsilon_m__type_26_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_26_ptestable_current A1 A2. intros. apply trans_testable_current_key_4;  tauto.
 clear  epsilon_m__type_26_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8062 : forall X1 X2:term, auto___type_26 (key X1 X2) -> or_4
    (auto___def_119 X1 /\ auto___type_31 X2)
    (auto___def_114 X1 /\ auto___def_66 X2)
    (auto___def_51 X1 /\ auto_agent X2)
    (auto___def_12 X1 /\ auto___def_13 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_8063 : (forall X:term, auto___type_26 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_26_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_8062 X1 X2 H);  intros.
  apply (rem_8043 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_8049 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_8055 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
  apply (rem_8061 epsilon_m__type_26_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8064 : forall X1 X2:term, auto___type_26 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8065 : forall X1 X2:term, auto___type_26 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8066 : auto___type_26 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8067 : forall X1 X2:term, auto___type_26 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8068 : auto___type_26 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8069 : auto___type_26 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8070 : forall X1 X2:term, auto___type_26 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8071 : forall X1 X2:term, auto___type_26 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8072 : forall X1:term, auto___type_26 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_26_ptestable_current 1.
  intro X. case X.
  exact (rem_7989 epsilon_m__type_26_ptestable_current ).
  exact (rem_7970 epsilon_m__type_26_ptestable_current ).
  intros X1 X2;  exact (rem_8025 epsilon_m__type_26_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_7966 epsilon_m__type_26_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_7998 epsilon_m__type_26_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_8019 epsilon_m__type_26_ptestable_current X1 X2).
  exact (rem_8031 epsilon_m__type_26_ptestable_current ).
  intros X1 X2;  exact (rem_8063 epsilon_m__type_26_ptestable_current X1 X2).
  exact (rem_8034 epsilon_m__type_26_ptestable_current ).
  intros X1 X2. intro H. elim (rem_8071 X1 X2 H).
  intros X1 X2;  exact (rem_7973 epsilon_m__type_26_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_8064 X1 X2 H).
  intros X1 X2;  exact (rem_7992 epsilon_m__type_26_ptestable_current X1 X2).
  intros X1;  exact (rem_7983 epsilon_m__type_26_ptestable_current X1).
  intros X1 X2. intro H. elim (rem_8067 X1 X2 H).
  intros X1 X2;  exact (rem_7986 epsilon_m__type_26_ptestable_current X1 X2).
   intro H. elim (rem_8068  H).
   intro H. elim (rem_8066  H).
  intros X1 X2. intro H. elim (rem_5343 X1 X2 H).
  intros X1 X2;  exact (rem_7978 epsilon_m__type_26_ptestable_current X1 X2).
  intros X1;  exact (rem_8028 epsilon_m__type_26_ptestable_current X1).
  exact (rem_8037 epsilon_m__type_26_ptestable_current ).
  intros X1 X2. intro H. elim (rem_8070 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8065 X1 X2 H).
   intro H. elim (rem_8069  H).
Qed.

Remark rem_8073 : forall X1 X2:term, auto___def_111 X2 -> auto___type_26 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_26 X1 -> auto_testable_current X1). tauto. exact (rem_8072 X1).
Qed.

Remark rem_8074 : forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_111 X2 -> auto___type_26 X1 -> auto_knows_current X2 -> auto_testable_current X1). tauto. exact (rem_8073 X1 X2).
Qed.

Remark rem_8075 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto_testable_current X1). tauto. exact (rem_6382 X1 X2).
Qed.

Remark rem_8076 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (crypt X1 X2) -> auto___def_17 X1 -> auto___type_2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6419 X1 X2 H);  intros.
Defined.

Remark rem_8077 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6419 X1 X2 H);  intros.
Defined.

Remark rem_8078 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (crypt X1 X2) -> auto___def_21 X1 -> auto___def_22 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6419 X1 X2 H);  intros.
Defined.

Remark rem_8079 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6419 X1 X2 H);  intros.
Defined.

Remark rem_8080 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (crypt X1 X2) -> auto___type_22 X1 -> auto___def_104 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6419 X1 X2 H);  intros.
Defined.

Remark rem_8081 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (crypt X1 X2) -> auto___def_88 X1 -> auto___def_89 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6419 X1 X2 H);  intros.
Defined.

Remark rem_8082 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6419 X1 X2 H);  intros.
Defined.

Remark rem_8083 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6419 X1 X2 H);  intros.
Defined.

Remark rem_8084 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (crypt X1 X2) -> auto___def_84 X1 -> auto___def_85 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6419 X1 X2 H);  intros.
Defined.

Remark rem_8085 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_104 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_987 X1 X2 H);  intros.
  apply (rem_8076 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8077 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8078 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8079 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8080 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8081 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8082 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8083 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8084 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8086 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> auto___def_104 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intro H. intros.
  elim (rem_6422 H);  intros.
Defined.

Remark rem_8087 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> auto_knows_current bob -> auto___def_104 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intro H. intros.
  elim (rem_991 H);  intros.
  apply (rem_8086 epsilon_mknows_current_m__def_104);  tauto.
Defined.

Remark rem_8088 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6423 X1 X2 H);  intros.
Defined.

Remark rem_8089 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_old X1 X2) -> auto___def_104 (noncea_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_994 X1 X2 H);  intros.
  apply (rem_8088 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8090 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1:term, auto___def_104 (p X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1. intro H. intros.
  elim (rem_6426 X1 H);  intros.
Defined.

Remark rem_8091 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1:term, auto_knows_current (p X1) -> auto___def_104 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1. intro H. intros.
  elim (rem_998 X1 H);  intros.
  apply (rem_8090 epsilon_mknows_current_m__def_104 X1);  tauto.
Defined.

Remark rem_8092 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6428 X1 X2 H);  intros.
Defined.

Remark rem_8093 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto_knows_current (passwd_old X1 X2) -> auto___def_104 (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_1001 X1 X2 H);  intros.
  apply (rem_8092 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8094 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> auto___def_104 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intro H. intros.
  elim (rem_6430 H);  intros.
Defined.

Remark rem_8095 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> auto_knows_current alice -> auto___def_104 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intro H. intros.
  elim (rem_1004 H);  intros.
  apply (rem_8094 epsilon_mknows_current_m__def_104);  tauto.
Defined.

Remark rem_8096 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6432 X1 X2 H);  intros.
Defined.

Remark rem_8097 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto_knows_current (nonceb_old X1 X2) -> auto___def_104 (nonceb_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_1007 X1 X2 H);  intros.
  apply (rem_8096 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8098 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (dec X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6433 X1 X2 H);  intros.
Defined.

Remark rem_8099 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto_knows_current (dec X1 X2) -> auto___def_104 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_1010 X1 X2 H);  intros.
  apply (rem_8098 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8100 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (enc X1 X2) -> auto___def_71 X1 -> auto___def_72 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6434 X1 X2 H);  intros.
Defined.

Remark rem_8101 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (enc X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6434 X1 X2 H);  intros.
Defined.

Remark rem_8102 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (enc X1 X2) -> auto___def_79 X1 -> auto___def_80 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6434 X1 X2 H);  intros.
Defined.

Remark rem_8103 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (enc X1 X2) -> auto___def_75 X1 -> auto___def_76 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6434 X1 X2 H);  intros.
Defined.

Remark rem_8104 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto_knows_current (enc X1 X2) -> auto___def_104 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_1031 X1 X2 H);  intros.
  apply (rem_8100 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8101 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8102 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8103 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8105 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (cons X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_6435 X1 X2 H);  intros.
Defined.

Remark rem_8106 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___def_104 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_1034 X1 X2 H);  intros.
  apply (rem_8105 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8107 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1:term, auto___def_104 (s X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1. intro H. intros.
  elim (rem_6436 X1 H);  intros.
Defined.

Remark rem_8108 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto___def_104 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1. intro H. intros.
  elim (rem_1037 X1 H);  intros.
  apply (rem_8107 epsilon_mknows_current_m__def_104 X1);  tauto.
Defined.

Remark rem_8109 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> auto___def_104 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intro H. intros.
  elim (rem_6439 H);  intros.
Defined.

Remark rem_8110 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> auto_knows_current i -> auto___def_104 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intro H. intros.
  elim (rem_1040 H);  intros.
  apply (rem_8109 epsilon_mknows_current_m__def_104);  tauto.
Defined.

Remark rem_8111 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> auto___def_104 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intro H. intros.
  elim (rem_6440 H);  intros.
Defined.

Remark rem_8112 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> auto_knows_current nil -> auto___def_104 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intro H. intros.
  elim (rem_1043 H);  intros.
  apply (rem_8111 epsilon_mknows_current_m__def_104);  tauto.
Defined.

Remark rem_8113 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> auto___def_104 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intro H. intros.
  elim (rem_6441 H);  intros.
Defined.

Remark rem_8114 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> auto_knows_current server -> auto___def_104 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intro H. intros.
  elim (rem_1046 H);  intros.
  apply (rem_8113 epsilon_mknows_current_m__def_104);  tauto.
Defined.

Remark rem_8115 : (forall X:term, auto___def_105 X -> auto___def_61 X -> False)
    -> auto___def_61 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_105_m__def_61. intro H. intros.
  elim (rem_1309 H);  intros.
Defined.

Remark rem_8116 : (forall X:term, auto___def_105 X -> auto___def_61 X -> False)
    -> auto___def_105 sym -> auto___def_61 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_105_m__def_61. intro H. intros.
  elim (rem_6386 H);  intros.
  apply (rem_8115 epsilon_m__def_105_m__def_61);  tauto.
Defined.

Remark rem_8117 : forall X1:term, auto___def_105 X1 -> auto___def_61 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_105_m__def_61 1.
  intro X. case X.
   intro H. elim (rem_6398  H).
   intro H. elim (rem_6391  H).
  intros X1 X2. intro H. elim (rem_6402 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6388 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6400 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6401 X1 X2 H).
   intro H. elim (rem_6405  H).
  intros X1 X2. intro H. elim (rem_6409 X1 X2 H).
   intro H. elim (rem_6406  H).
  intros X1 X2. intro H. elim (rem_6408 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6392 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6389 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6399 X1 X2 H).
  intros X1. intro H. elim (rem_6395 X1 H).
  intros X1 X2. intro H. elim (rem_6397 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6396 X1 X2 H).
   intro H. elim (rem_2167  H).
   intro H. elim (rem_1427  H).
  intros X1 X2. intro H. elim (rem_6394 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6393 X1 X2 H).
  intros X1. intro H. elim (rem_6403 X1 H).
   intro H. elim (rem_6407  H).
  intros X1 X2. intro H. elim (rem_6404 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6390 X1 X2 H).
  exact (rem_8116 epsilon_m__def_105_m__def_61 ).
Qed.

Remark rem_8118 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1:term, auto___def_105 X1 -> auto___def_61 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_104. exact (rem_8117).
Defined.

Remark rem_8119 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_62 X2 -> auto___def_61 X1 -> auto___type_23 X2 -> auto___def_105 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2.
  cut (auto___def_105 X1 -> auto___def_61 X1 -> False). clear  epsilon_mknows_current_m__def_104. tauto.
  exact (rem_8118 epsilon_mknows_current_m__def_104 X1).
Defined.

Remark rem_8120 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (key X1 X2) -> auto___def_61 X1 -> auto___def_62 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_1431 X1 X2 H);  intros.
  apply (rem_8119 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8121 : (forall X:term, auto___def_105 X -> auto___def_51 X -> False)
    -> auto___def_51 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_105_m__def_51. intro H. intros.
  elim (rem_1312 H);  intros.
Defined.

Remark rem_8122 : (forall X:term, auto___def_105 X -> auto___def_51 X -> False)
    -> auto___def_105 sym -> auto___def_51 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_105_m__def_51. intro H. intros.
  elim (rem_6386 H);  intros.
  apply (rem_8121 epsilon_m__def_105_m__def_51);  tauto.
Defined.

Remark rem_8123 : forall X1:term, auto___def_105 X1 -> auto___def_51 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_105_m__def_51 1.
  intro X. case X.
   intro H. elim (rem_6398  H).
   intro H. elim (rem_6391  H).
  intros X1 X2. intro H. elim (rem_6402 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6388 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6400 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6401 X1 X2 H).
   intro H. elim (rem_6405  H).
  intros X1 X2. intro H. elim (rem_6409 X1 X2 H).
   intro H. elim (rem_6406  H).
  intros X1 X2. intro H. elim (rem_6408 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6392 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6389 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6399 X1 X2 H).
  intros X1. intro H. elim (rem_6395 X1 H).
  intros X1 X2. intro H. elim (rem_6397 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6396 X1 X2 H).
   intro H. elim (rem_2167  H).
   intro H. elim (rem_1427  H).
  intros X1 X2. intro H. elim (rem_6394 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6393 X1 X2 H).
  intros X1. intro H. elim (rem_6403 X1 H).
   intro H. elim (rem_6407  H).
  intros X1 X2. intro H. elim (rem_6404 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6390 X1 X2 H).
  exact (rem_8122 epsilon_m__def_105_m__def_51 ).
Qed.

Remark rem_8124 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1:term, auto___def_105 X1 -> auto___def_51 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_104. exact (rem_8123).
Defined.

Remark rem_8125 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___type_23 X2 -> auto___def_105 X1 -> auto___def_51 X1 -> auto_agent X2 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2.
  cut (auto___def_105 X1 -> auto___def_51 X1 -> False). clear  epsilon_mknows_current_m__def_104. tauto.
  exact (rem_8124 epsilon_mknows_current_m__def_104 X1).
Defined.

Remark rem_8126 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_1431 X1 X2 H);  intros.
  apply (rem_8125 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8127 : (forall X:term, auto___def_105 X -> auto___def_12 X -> False)
    -> auto___def_12 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_105_m__def_12. intro H. intros.
  elim (rem_1315 H);  intros.
Defined.

Remark rem_8128 : (forall X:term, auto___def_105 X -> auto___def_12 X -> False)
    -> auto___def_105 sym -> auto___def_12 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_105_m__def_12. intro H. intros.
  elim (rem_6386 H);  intros.
  apply (rem_8127 epsilon_m__def_105_m__def_12);  tauto.
Defined.

Remark rem_8129 : forall X1:term, auto___def_105 X1 -> auto___def_12 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_105_m__def_12 1.
  intro X. case X.
   intro H. elim (rem_6398  H).
   intro H. elim (rem_6391  H).
  intros X1 X2. intro H. elim (rem_6402 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6388 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6400 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6401 X1 X2 H).
   intro H. elim (rem_6405  H).
  intros X1 X2. intro H. elim (rem_6409 X1 X2 H).
   intro H. elim (rem_6406  H).
  intros X1 X2. intro H. elim (rem_6408 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6392 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6389 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6399 X1 X2 H).
  intros X1. intro H. elim (rem_6395 X1 H).
  intros X1 X2. intro H. elim (rem_6397 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6396 X1 X2 H).
   intro H. elim (rem_2167  H).
   intro H. elim (rem_1427  H).
  intros X1 X2. intro H. elim (rem_6394 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6393 X1 X2 H).
  intros X1. intro H. elim (rem_6403 X1 H).
   intro H. elim (rem_6407  H).
  intros X1 X2. intro H. elim (rem_6404 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6390 X1 X2 H).
  exact (rem_8128 epsilon_m__def_105_m__def_12 ).
Qed.

Remark rem_8130 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1:term, auto___def_105 X1 -> auto___def_12 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_104. exact (rem_8129).
Defined.

Remark rem_8131 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_23 X2 -> auto___def_105 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2.
  cut (auto___def_105 X1 -> auto___def_12 X1 -> False). clear  epsilon_mknows_current_m__def_104. tauto.
  exact (rem_8130 epsilon_mknows_current_m__def_104 X1).
Defined.

Remark rem_8132 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto___def_104 (key X1 X2) -> auto___def_12 X1 -> auto___def_13 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_1431 X1 X2 H);  intros.
  apply (rem_8131 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8133 : (forall X:term, auto_knows_current X -> auto___def_104 X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___def_104 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_104. intros X1 X2. intro H. intros.
  elim (rem_1066 X1 X2 H);  intros.
  apply (rem_8120 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8126 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
  apply (rem_8132 epsilon_mknows_current_m__def_104 X1 X2);  tauto.
Defined.

Remark rem_8134 : forall X1:term, auto_knows_current X1 -> auto___def_104 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_current_m__def_104 1.
  intro X. case X.
  exact (rem_8095 epsilon_mknows_current_m__def_104 ).
  exact (rem_8087 epsilon_mknows_current_m__def_104 ).
  intros X1 X2;  exact (rem_8106 epsilon_mknows_current_m__def_104 X1 X2).
  intros X1 X2;  exact (rem_8085 epsilon_mknows_current_m__def_104 X1 X2).
  intros X1 X2;  exact (rem_8099 epsilon_mknows_current_m__def_104 X1 X2).
  intros X1 X2;  exact (rem_8104 epsilon_mknows_current_m__def_104 X1 X2).
  exact (rem_8110 epsilon_mknows_current_m__def_104 ).
  intros X1 X2;  exact (rem_8133 epsilon_mknows_current_m__def_104 X1 X2).
  exact (rem_8112 epsilon_mknows_current_m__def_104 ).
  intros X1 X2. intro H. elim (rem_1077 X1 X2 H).
  intros X1 X2;  exact (rem_8089 epsilon_mknows_current_m__def_104 X1 X2).
  intros X1 X2. intro H. elim (rem_1068 X1 X2 H).
  intros X1 X2;  exact (rem_8097 epsilon_mknows_current_m__def_104 X1 X2).
  intros X1;  exact (rem_8091 epsilon_mknows_current_m__def_104 X1).
  intros X1 X2. intro H. elim (rem_1073 X1 X2 H).
  intros X1 X2;  exact (rem_8093 epsilon_mknows_current_m__def_104 X1 X2).
   intro H. elim (rem_1074  H).
   intro H. elim (rem_1072  H).
  intros X1 X2. intro H. elim (rem_1071 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1070 X1 X2 H).
  intros X1;  exact (rem_8108 epsilon_mknows_current_m__def_104 X1).
  exact (rem_8114 epsilon_mknows_current_m__def_104 ).
  intros X1 X2. intro H. elim (rem_1076 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1069 X1 X2 H).
   intro H. elim (rem_1075  H).
Qed.

Remark rem_8135 : forall X1 X2:term, auto___def_104 X2 -> auto___type_22 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_8134 X2)). tauto.
Qed.

Remark rem_8136 : forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_104 X2 -> auto___type_22 X1 -> auto_knows_current X2 -> auto_testable_current X1). tauto. exact (rem_8135 X1 X2).
Qed.

Remark rem_8137 : (forall X:term, auto___def_92 X -> auto_testable_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_92_ptestable_current.  tauto.
Defined.

Remark rem_8138 : (forall X:term, auto___def_92 X -> auto_testable_current X)
    -> auto_testable_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_92_ptestable_current.  case (rem_8137 epsilon_m__def_92_ptestable_current). clear  epsilon_m__def_92_ptestable_current. intros. apply trans_testable_current_nil_1;  tauto.
 clear  epsilon_m__def_92_ptestable_current. tauto.
Defined.

Remark rem_8139 : (forall X:term, auto___def_92 X -> auto_testable_current X)
    -> auto___def_92 nil -> auto_testable_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_92_ptestable_current. intro H. intros.
  elim (rem_3031 H);  intros.
  apply (rem_8138 epsilon_m__def_92_ptestable_current);  tauto.
Defined.

Remark rem_8140 : forall X2:term, auto___def_92 X2 -> auto_testable_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_92_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_3044  H).
   intro H. elim (rem_3036  H).
  intros X1 X2. intro H. elim (rem_3049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3033 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3047 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3048 X1 X2 H).
   intro H. elim (rem_3053  H).
  intros X1 X2. intro H. elim (rem_3056 X1 X2 H).
  exact (rem_8139 epsilon_m__def_92_ptestable_current ).
  intros X1 X2. intro H. elim (rem_3055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3037 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3034 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3046 X1 X2 H).
  intros X1. intro H. elim (rem_3040 X1 H).
  intros X1 X2. intro H. elim (rem_3043 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3042 X1 X2 H).
   intro H. elim (rem_3045  H).
   intro H. elim (rem_3041  H).
  intros X1 X2. intro H. elim (rem_3039 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3038 X1 X2 H).
  intros X1. intro H. elim (rem_3050 X1 H).
   intro H. elim (rem_3054  H).
  intros X1 X2. intro H. elim (rem_3052 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3035 X1 X2 H).
   intro H. elim (rem_3051  H).
Qed.

Remark rem_8141 : (forall X:term, auto___def_90 X -> auto_testable_current X)
    -> forall X2:term, auto___def_92 X2 -> auto_testable_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_90_ptestable_current. exact (rem_8140).
Defined.

Remark rem_8142 : (forall X:term, auto___def_90 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> auto_testable_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_90_ptestable_current. intros X1 X2.
  cut (auto___def_92 X2 -> auto_testable_current X2). tauto. exact (rem_8141 epsilon_m__def_90_ptestable_current X2).
Defined.

Remark rem_8143 : (forall X:term, auto___def_90 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_90_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X2). 2:apply (rem_8142 epsilon_m__def_90_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8144 : (forall X:term, auto___def_90 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_91 X1 -> auto___def_92 X2 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_90_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8143 epsilon_m__def_90_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_90_ptestable_current A1 A2. intros. apply trans_testable_current_cons_1;  tauto.
 clear  epsilon_m__def_90_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8145 : (forall X:term, auto___def_90 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_90 (cons X1 X2) -> auto_testable_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_90_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_2825 X1 X2 H);  intros.
  apply (rem_8144 epsilon_m__def_90_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8146 : forall X2:term, auto___def_90 X2 -> auto_testable_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_90_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_3074  H).
   intro H. elim (rem_3066  H).
  intros X1 X2;  exact (rem_8145 epsilon_m__def_90_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_3063 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3077 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3078 X1 X2 H).
   intro H. elim (rem_3082  H).
  intros X1 X2. intro H. elim (rem_3086 X1 X2 H).
   intro H. elim (rem_3083  H).
  intros X1 X2. intro H. elim (rem_3085 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3067 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3064 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3076 X1 X2 H).
  intros X1. intro H. elim (rem_3070 X1 H).
  intros X1 X2. intro H. elim (rem_3073 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3072 X1 X2 H).
   intro H. elim (rem_3075  H).
   intro H. elim (rem_3071  H).
  intros X1 X2. intro H. elim (rem_3069 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3068 X1 X2 H).
  intros X1. intro H. elim (rem_3079 X1 H).
   intro H. elim (rem_3084  H).
  intros X1 X2. intro H. elim (rem_3081 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3065 X1 X2 H).
   intro H. elim (rem_3080  H).
Qed.

Remark rem_8147 : (forall X:term, auto___def_88 X -> auto_testable_current X)
    -> forall X2:term, auto___def_90 X2 -> auto_testable_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_88_ptestable_current. exact (rem_8146).
Defined.

Remark rem_8148 : (forall X:term, auto___def_88 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_20 X1 -> auto___def_90 X2 -> auto_testable_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_88_ptestable_current. intros X1 X2.
  cut (auto___def_90 X2 -> auto_testable_current X2). tauto. exact (rem_8147 epsilon_m__def_88_ptestable_current X2).
Defined.

Remark rem_8149 : (forall X:term, auto___def_88 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_20 X1 -> auto___def_90 X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_88_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X2). 2:apply (rem_8148 epsilon_m__def_88_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8150 : (forall X:term, auto___def_88 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_20 X1 -> auto___def_90 X2 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_88_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8149 epsilon_m__def_88_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_88_ptestable_current A1 A2. intros. apply trans_testable_current_cons_1;  tauto.
 clear  epsilon_m__def_88_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8151 : (forall X:term, auto___def_88 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 (cons X1 X2) -> auto_testable_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_88_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_2641 X1 X2 H);  intros.
  apply (rem_8150 epsilon_m__def_88_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8152 : forall X1:term, auto___def_88 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_88_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_2654  H).
   intro H. elim (rem_2646  H).
  intros X1 X2;  exact (rem_8151 epsilon_m__def_88_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_2643 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2657 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2658 X1 X2 H).
   intro H. elim (rem_2662  H).
  intros X1 X2. intro H. elim (rem_2666 X1 X2 H).
   intro H. elim (rem_2663  H).
  intros X1 X2. intro H. elim (rem_2665 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2647 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2644 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2656 X1 X2 H).
  intros X1. intro H. elim (rem_2650 X1 H).
  intros X1 X2. intro H. elim (rem_2653 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2652 X1 X2 H).
   intro H. elim (rem_2655  H).
   intro H. elim (rem_2651  H).
  intros X1 X2. intro H. elim (rem_2649 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2648 X1 X2 H).
  intros X1. intro H. elim (rem_2659 X1 H).
   intro H. elim (rem_2664  H).
  intros X1 X2. intro H. elim (rem_2661 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2645 X1 X2 H).
   intro H. elim (rem_2660  H).
Qed.

Remark rem_8153 : forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_88 X1 -> auto_testable_current X1). tauto. exact (rem_8152 X1).
Qed.

Remark rem_8154 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8155 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_8154 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8156 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8157 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_8156 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8158 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_8155 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_8157 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8159 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8158 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8160 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8161 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_8160 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8162 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8163 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_8162 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8164 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_8161 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_8163 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8165 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8164 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_2;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8166 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8167 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_8166 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8168 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8169 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_8168 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8170 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_8167 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_8169 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8171 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8170 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_3;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8172 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___type_26 X1 -> auto___type_26 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8173 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_26 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___type_26 X1 -> auto___type_26 X1). tauto. exact (rem_8172 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8174 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_111 X2 -> auto___def_111 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8175 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___def_111 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_111 X2 -> auto___def_111 X2). tauto. exact (rem_8174 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8176 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> (auto___type_26 X1 /\ auto___def_111 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_26 X1). 2:apply (rem_8173 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_111 X2). 2:apply (rem_8175 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8177 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8176 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_4;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8178 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8179 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_8178 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8180 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8181 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_8180 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8182 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_8179 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_8181 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8183 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8182 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_5;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8184 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8185 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_8184 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8186 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8187 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_8186 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8188 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_8185 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_8187 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8189 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8188 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_6;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8190 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8191 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_8190 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8192 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8193 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_8192 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8194 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_8191 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_8193 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8195 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8194 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_7;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8196 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___type_27 X1 -> auto___type_27 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8197 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_27 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___type_27 X1 -> auto___type_27 X1). tauto. exact (rem_8196 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8198 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_113 X2 -> auto___def_113 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8199 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___def_113 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_113 X2 -> auto___def_113 X2). tauto. exact (rem_8198 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8200 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> (auto___type_27 X1 /\ auto___def_113 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_27 X1). 2:apply (rem_8197 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_113 X2). 2:apply (rem_8199 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8201 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8200 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_8;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8202 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8203 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_8202 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8204 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8205 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_8204 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8206 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_8203 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_8205 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8207 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8206 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_9;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8208 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8209 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_8208 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8210 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8211 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_8210 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8212 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_8209 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_8211 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8213 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8212 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_10;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8214 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8215 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_8214 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8216 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8217 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_8216 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8218 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_8215 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_8217 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8219 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8218 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_crypt_11;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8220 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 (crypt X1 X2) -> auto_testable_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5379 X1 X2 H);  intros.
  apply (rem_8159 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8165 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8171 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8177 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8183 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8189 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8195 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8201 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8207 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8213 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8219 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8221 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current.  tauto.
Defined.

Remark rem_8222 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> auto_testable_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current.  case (rem_8221 epsilon_m__type_27_ptestable_current). clear  epsilon_m__type_27_ptestable_current. intros. apply trans_testable_current_bob_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current. tauto.
Defined.

Remark rem_8223 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> auto___type_27 bob -> auto_testable_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intro H. intros.
  elim (rem_5382 H);  intros.
  apply (rem_8222 epsilon_m__type_27_ptestable_current);  tauto.
Defined.

Remark rem_8224 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.  case (rem_8221 epsilon_m__type_27_ptestable_current). clear  epsilon_m__type_27_ptestable_current. intros. apply trans_testable_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current. tauto.
Defined.

Remark rem_8225 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 (noncea_old X1 X2) -> auto_testable_current (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5385 X1 X2 H);  intros.
  apply (rem_8224 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8226 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8227 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_8226 epsilon_m__type_27_ptestable_current X1);  assumption.
  tauto.
Defined.

Remark rem_8228 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_testable_current (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1.
  case (rem_8227 epsilon_m__type_27_ptestable_current X1 A1). clear  epsilon_m__type_27_ptestable_current A1. intros. apply trans_testable_current_r_old_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1. tauto.
Defined.

Remark rem_8229 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 (r_old X1 X2) -> auto_testable_current (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5388 X1 X2 H);  intros.
  apply (rem_8228 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8230 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8231 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1. intros A1.
  cut (auto_testable_current X1). 2:apply (rem_8230 epsilon_m__type_27_ptestable_current X1);  assumption.
  tauto.
Defined.

Remark rem_8232 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1. intros A1.
  case (rem_8231 epsilon_m__type_27_ptestable_current X1 A1). clear  epsilon_m__type_27_ptestable_current A1. intros. apply trans_testable_current_p_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1. tauto.
Defined.

Remark rem_8233 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___type_27 (p X1) -> auto_testable_current (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1. intro H. intros.
  elim (rem_5391 X1 H);  intros.
  apply (rem_8232 epsilon_m__type_27_ptestable_current X1);  tauto.
Defined.

Remark rem_8234 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.  case (rem_8221 epsilon_m__type_27_ptestable_current). clear  epsilon_m__type_27_ptestable_current. intros. apply trans_testable_current_passwd_old_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current. tauto.
Defined.

Remark rem_8235 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 (passwd_old X1 X2) -> auto_testable_current (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5394 X1 X2 H);  intros.
  apply (rem_8234 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8236 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> auto_testable_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current.  case (rem_8221 epsilon_m__type_27_ptestable_current). clear  epsilon_m__type_27_ptestable_current. intros. apply trans_testable_current_alice_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current. tauto.
Defined.

Remark rem_8237 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> auto___type_27 alice -> auto_testable_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intro H. intros.
  elim (rem_5397 H);  intros.
  apply (rem_8236 epsilon_m__type_27_ptestable_current);  tauto.
Defined.

Remark rem_8238 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.  case (rem_8221 epsilon_m__type_27_ptestable_current). clear  epsilon_m__type_27_ptestable_current. intros. apply trans_testable_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current. tauto.
Defined.

Remark rem_8239 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 (nonceb_old X1 X2) -> auto_testable_current (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5400 X1 X2 H);  intros.
  apply (rem_8238 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8240 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto_testable_current X1 -> auto_testable_current X1). tauto. exact (rem_8230 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8241 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_8180 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8242 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_8240 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_8241 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8243 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8242 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_dec_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8244 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 (dec X1 X2) -> auto_testable_current (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5403 X1 X2 H);  intros.
  apply (rem_8243 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8245 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8246 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_8245 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8247 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8248 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_8247 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8249 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_8246 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_8248 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8250 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8249 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_enc_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8251 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8242 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_enc_2;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8252 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8253 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_8252 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8254 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8255 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_8254 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8256 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_8253 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_8255 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8257 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8256 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_enc_3;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8258 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8259 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_8258 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8260 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8261 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_8260 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8262 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_8259 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_8261 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8263 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto_testable_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8262 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_enc_4;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8264 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 (enc X1 X2) -> auto_testable_current (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5409 X1 X2 H);  intros.
  apply (rem_8250 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8251 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8257 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8263 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8265 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8266 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X2. intros A1.
  cut (auto_testable_current X2). 2:apply (rem_8265 epsilon_m__type_27_ptestable_current X2);  assumption.
  tauto.
Defined.

Remark rem_8267 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X2 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1.
  case (rem_8266 epsilon_m__type_27_ptestable_current X2 A1). clear  epsilon_m__type_27_ptestable_current A1. intros. apply trans_testable_current_cons_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1. tauto.
Defined.

Remark rem_8268 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_testable_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1.
  case (rem_8231 epsilon_m__type_27_ptestable_current X1 A1). clear  epsilon_m__type_27_ptestable_current A1. intros. apply trans_testable_current_cons_2;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1. tauto.
Defined.

Remark rem_8269 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 (cons X1 X2) -> auto_testable_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5413 X1 X2 H);  intros.
  apply (rem_8267 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8268 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8270 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1. intros A1.
  case (rem_8231 epsilon_m__type_27_ptestable_current X1 A1). clear  epsilon_m__type_27_ptestable_current A1. intros. apply trans_testable_current_s_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1. tauto.
Defined.

Remark rem_8271 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___type_27 (s X1) -> auto_testable_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1. intro H. intros.
  elim (rem_5416 X1 H);  intros.
  apply (rem_8270 epsilon_m__type_27_ptestable_current X1);  tauto.
Defined.

Remark rem_8272 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> auto_testable_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current.  case (rem_8221 epsilon_m__type_27_ptestable_current). clear  epsilon_m__type_27_ptestable_current. intros. apply trans_testable_current_i_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current. tauto.
Defined.

Remark rem_8273 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> auto___type_27 i -> auto_testable_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intro H. intros.
  elim (rem_5419 H);  intros.
  apply (rem_8272 epsilon_m__type_27_ptestable_current);  tauto.
Defined.

Remark rem_8274 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> auto_testable_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current.  case (rem_8221 epsilon_m__type_27_ptestable_current). clear  epsilon_m__type_27_ptestable_current. intros. apply trans_testable_current_nil_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current. tauto.
Defined.

Remark rem_8275 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> auto___type_27 nil -> auto_testable_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intro H. intros.
  elim (rem_5422 H);  intros.
  apply (rem_8274 epsilon_m__type_27_ptestable_current);  tauto.
Defined.

Remark rem_8276 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> auto_testable_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current.  case (rem_8221 epsilon_m__type_27_ptestable_current). clear  epsilon_m__type_27_ptestable_current. intros. apply trans_testable_current_server_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current. tauto.
Defined.

Remark rem_8277 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> auto___type_27 server -> auto_testable_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intro H. intros.
  elim (rem_5425 H);  intros.
  apply (rem_8276 epsilon_m__type_27_ptestable_current);  tauto.
Defined.

Remark rem_8278 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_119 X1 -> auto___def_119 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8279 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_119 X1 -> auto___def_119 X1). tauto. exact (rem_8278 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8280 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___type_31 X2 -> auto___type_31 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8281 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___type_31 X2 -> auto___type_31 X2). tauto. exact (rem_8280 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8282 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_8279 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_8281 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8283 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8282 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_key_1;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8284 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_114 X1 -> auto___def_114 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8285 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_114 X1 -> auto___def_114 X1). tauto. exact (rem_8284 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8286 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_66 X2 -> auto___def_66 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8287 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_66 X2 -> auto___def_66 X2). tauto. exact (rem_8286 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8288 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_8285 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_8287 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8289 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8288 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_key_2;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8290 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8291 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_8290 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8292 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8293 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_8292 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8294 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_8291 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_8293 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8295 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8294 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_key_3;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8296 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8297 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_8296 epsilon_m__type_27_ptestable_current X1).
Defined.

Remark rem_8298 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8299 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_8298 epsilon_m__type_27_ptestable_current X2).
Defined.

Remark rem_8300 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_8297 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_8299 epsilon_m__type_27_ptestable_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8301 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8300 epsilon_m__type_27_ptestable_current X1 X2 A1 A2). clear  epsilon_m__type_27_ptestable_current A1 A2. intros. apply trans_testable_current_key_4;  tauto.
 clear  epsilon_m__type_27_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8302 : (forall X:term, auto___type_27 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_27 (key X1 X2) -> auto_testable_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_27_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_5431 X1 X2 H);  intros.
  apply (rem_8283 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8289 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8295 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
  apply (rem_8301 epsilon_m__type_27_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8303 : forall X1:term, auto___type_27 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_27_ptestable_current 1.
  intro X. case X.
  exact (rem_8237 epsilon_m__type_27_ptestable_current ).
  exact (rem_8223 epsilon_m__type_27_ptestable_current ).
  intros X1 X2;  exact (rem_8269 epsilon_m__type_27_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_8220 epsilon_m__type_27_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_8244 epsilon_m__type_27_ptestable_current X1 X2).
  intros X1 X2;  exact (rem_8264 epsilon_m__type_27_ptestable_current X1 X2).
  exact (rem_8273 epsilon_m__type_27_ptestable_current ).
  intros X1 X2;  exact (rem_8302 epsilon_m__type_27_ptestable_current X1 X2).
  exact (rem_8275 epsilon_m__type_27_ptestable_current ).
  intros X1 X2. intro H. elim (rem_5441 X1 X2 H).
  intros X1 X2;  exact (rem_8225 epsilon_m__type_27_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_5433 X1 X2 H).
  intros X1 X2;  exact (rem_8239 epsilon_m__type_27_ptestable_current X1 X2).
  intros X1;  exact (rem_8233 epsilon_m__type_27_ptestable_current X1).
  intros X1 X2. intro H. elim (rem_5437 X1 X2 H).
  intros X1 X2;  exact (rem_8235 epsilon_m__type_27_ptestable_current X1 X2).
   intro H. elim (rem_5438  H).
   intro H. elim (rem_5436  H).
  intros X1 X2. intro H. elim (rem_5435 X1 X2 H).
  intros X1 X2;  exact (rem_8229 epsilon_m__type_27_ptestable_current X1 X2).
  intros X1;  exact (rem_8271 epsilon_m__type_27_ptestable_current X1).
  exact (rem_8277 epsilon_m__type_27_ptestable_current ).
  intros X1 X2. intro H. elim (rem_5440 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5434 X1 X2 H).
   intro H. elim (rem_5439  H).
Qed.

Remark rem_8304 : forall X1 X2:term, auto___def_113 X2 -> auto___type_27 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_27 X1 -> auto_testable_current X1). tauto. exact (rem_8303 X1).
Qed.

Remark rem_8305 : forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_113 X2 -> auto___type_27 X1 -> auto_knows_current X2 -> auto_testable_current X1). tauto. exact (rem_8304 X1 X2).
Qed.

Remark rem_8306 : (forall X:term, auto___def_24 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_24_ptestable_current. intros X1 X2. intros A1 A2.
  tauto.
Defined.

Remark rem_8307 : (forall X:term, auto___def_24 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_testable_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_24_ptestable_current. intros X1 X2. intros A1 A2.
  case (rem_8306 epsilon_m__def_24_ptestable_current X1 X2 A1 A2). clear  epsilon_m__def_24_ptestable_current A1 A2. intros. apply trans_testable_current_noncea_old_1;  tauto.
 clear  epsilon_m__def_24_ptestable_current A1 A2. tauto.
Defined.

Remark rem_8308 : (forall X:term, auto___def_24 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___def_24 (noncea_old X1 X2) -> auto_testable_current (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_24_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_2007 X1 X2 H);  intros.
  apply (rem_8307 epsilon_m__def_24_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8309 : forall X1:term, auto___def_24 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_24_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_2019  H).
   intro H. elim (rem_2012  H).
  intros X1 X2. intro H. elim (rem_1937 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2009 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2022 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2023 X1 X2 H).
   intro H. elim (rem_2027  H).
  intros X1 X2. intro H. elim (rem_2031 X1 X2 H).
   intro H. elim (rem_2028  H).
  intros X1 X2. intro H. elim (rem_2030 X1 X2 H).
  intros X1 X2;  exact (rem_8308 epsilon_m__def_24_ptestable_current X1 X2).
  intros X1 X2. intro H. elim (rem_2010 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2021 X1 X2 H).
  intros X1. intro H. elim (rem_2015 X1 H).
  intros X1 X2. intro H. elim (rem_2018 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2017 X1 X2 H).
   intro H. elim (rem_2020  H).
   intro H. elim (rem_2016  H).
  intros X1 X2. intro H. elim (rem_2014 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2013 X1 X2 H).
  intros X1. intro H. elim (rem_2024 X1 H).
   intro H. elim (rem_2029  H).
  intros X1 X2. intro H. elim (rem_2026 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2011 X1 X2 H).
   intro H. elim (rem_2025  H).
Qed.

Remark rem_8310 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_24 X1 -> auto_testable_current X1). tauto. exact (rem_8309 X1).
Qed.

Remark rem_8311 : (forall X:term, auto___type_7 X -> auto_testable_current X)
    -> forall X1:term, auto_knows_old X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_ptestable_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_8312 : (forall X:term, auto___type_7 X -> auto_testable_current X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_testable_current (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_ptestable_current. intros X1 X2. intros A1.
  case (rem_8311 epsilon_m__type_7_ptestable_current X1 A1). clear  epsilon_m__type_7_ptestable_current A1. intros. apply trans_testable_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_ptestable_current A1. tauto.
Defined.

Remark rem_8313 : (forall X:term, auto___type_7 X -> auto_testable_current X)
    -> forall X1 X2:term, auto___type_7 (nonceb_old X1 X2) -> auto_testable_current (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_ptestable_current. intros X1 X2. intro H. intros.
  elim (rem_2043 X1 X2 H);  intros.
  apply (rem_8312 epsilon_m__type_7_ptestable_current X1 X2);  tauto.
Defined.

Remark rem_8314 : forall X1:term, auto___type_7 X1 -> auto_testable_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_7_ptestable_current 1.
  intro X. case X.
   intro H. elim (rem_2056  H).
   intro H. elim (rem_2048  H).
  intros X1 X2. intro H. elim (rem_1939 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2045 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2058 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2059 X1 X2 H).
   intro H. elim (rem_2063  H).
  intros X1 X2. intro H. elim (rem_2067 X1 X2 H).
   intro H. elim (rem_2064  H).
  intros X1 X2. intro H. elim (rem_2066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2049 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2046 X1 X2 H).
  intros X1 X2;  exact (rem_8313 epsilon_m__type_7_ptestable_current X1 X2).
  intros X1. intro H. elim (rem_2052 X1 H).
  intros X1 X2. intro H. elim (rem_2055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2054 X1 X2 H).
   intro H. elim (rem_2057  H).
   intro H. elim (rem_2053  H).
  intros X1 X2. intro H. elim (rem_2051 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2050 X1 X2 H).
  intros X1. intro H. elim (rem_2060 X1 H).
   intro H. elim (rem_2065  H).
  intros X1 X2. intro H. elim (rem_2062 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2047 X1 X2 H).
   intro H. elim (rem_2061  H).
Qed.

Remark rem_8315 : forall X1 X2:term, auto___def_44 X2 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_7 X1 -> auto_testable_current X1). tauto. exact (rem_8314 X1).
Qed.

Remark rem_8316 : forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_44 X2 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_testable_current X1). tauto. exact (rem_8315 X1 X2).
Qed.

Remark rem_8317 : (forall X:term, auto___def_61 X -> auto___def_86 X -> False)
    -> auto___def_86 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_86. intro H. intros.
  elim (rem_2189 H);  intros.
Defined.

Remark rem_8318 : (forall X:term, auto___def_61 X -> auto___def_86 X -> False)
    -> auto___def_61 prv -> auto___def_86 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_86. intro H. intros.
  elim (rem_4469 H);  intros.
  apply (rem_8317 epsilon_m__def_61_m__def_86);  tauto.
Defined.

Remark rem_8319 : forall X1:term, auto___def_61 X1 -> auto___def_86 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_61_m__def_86 1.
  intro X. case X.
   intro H. elim (rem_4482  H).
   intro H. elim (rem_4474  H).
  intros X1 X2. intro H. elim (rem_4486 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4484 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4485 X1 X2 H).
   intro H. elim (rem_4489  H).
  intros X1 X2. intro H. elim (rem_4493 X1 X2 H).
   intro H. elim (rem_4490  H).
  intros X1 X2. intro H. elim (rem_4492 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4475 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4472 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4483 X1 X2 H).
  intros X1. intro H. elim (rem_4478 X1 H).
  intros X1 X2. intro H. elim (rem_4481 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4480 X1 X2 H).
  exact (rem_8318 epsilon_m__def_61_m__def_86 ).
   intro H. elim (rem_4479  H).
  intros X1 X2. intro H. elim (rem_4477 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4476 X1 X2 H).
  intros X1. intro H. elim (rem_4487 X1 H).
   intro H. elim (rem_4491  H).
  intros X1 X2. intro H. elim (rem_4488 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4473 X1 X2 H).
   intro H. elim (rem_1309  H).
Qed.

Remark rem_8320 : (forall X:term, auto___def_85 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_61 X1 -> auto___def_86 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_85_mknows_current. exact (rem_8319).
Defined.

Remark rem_8321 : (forall X:term, auto___def_85 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_62 X2 -> auto___def_61 X1 -> auto___def_86 X1 -> auto___type_19 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_85_mknows_current. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_86 X1 -> False). clear  epsilon_m__def_85_mknows_current. tauto.
  exact (rem_8320 epsilon_m__def_85_mknows_current X1).
Defined.

Remark rem_8322 : (forall X:term, auto___def_51 X -> auto___def_86 X -> False)
    -> auto___def_86 pub -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_51_m__def_86. intro H. intros.
  elim (rem_1453 H);  intros.
Defined.

Remark rem_8323 : (forall X:term, auto___def_51 X -> auto___def_86 X -> False)
    -> auto___def_51 pub -> auto___def_86 pub -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_51_m__def_86. intro H. intros.
  elim (rem_4498 H);  intros.
  apply (rem_8322 epsilon_m__def_51_m__def_86);  tauto.
Defined.

Remark rem_8324 : forall X1:term, auto___def_51 X1 -> auto___def_86 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_51_m__def_86 1.
  intro X. case X.
   intro H. elim (rem_4510  H).
   intro H. elim (rem_4503  H).
  intros X1 X2. intro H. elim (rem_4514 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4500 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4512 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4513 X1 X2 H).
   intro H. elim (rem_4517  H).
  intros X1 X2. intro H. elim (rem_4521 X1 X2 H).
   intro H. elim (rem_4518  H).
  intros X1 X2. intro H. elim (rem_4520 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4504 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4511 X1 X2 H).
  intros X1. intro H. elim (rem_4507 X1 H).
  intros X1 X2. intro H. elim (rem_4509 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4508 X1 X2 H).
   intro H. elim (rem_1358  H).
  exact (rem_8323 epsilon_m__def_51_m__def_86 ).
  intros X1 X2. intro H. elim (rem_4506 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4505 X1 X2 H).
  intros X1. intro H. elim (rem_4515 X1 H).
   intro H. elim (rem_4519  H).
  intros X1 X2. intro H. elim (rem_4516 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4502 X1 X2 H).
   intro H. elim (rem_1312  H).
Qed.

Remark rem_8325 : (forall X:term, auto___def_85 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_51 X1 -> auto___def_86 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_85_mknows_current. exact (rem_8324).
Defined.

Remark rem_8326 : (forall X:term, auto___def_85 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_86 X1 -> auto___type_19 X2 -> auto___def_51 X1 -> auto_agent X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_85_mknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_86 X1 -> False). clear  epsilon_m__def_85_mknows_current. tauto.
  exact (rem_8325 epsilon_m__def_85_mknows_current X1).
Defined.

Remark rem_8327 : (forall X:term, auto___def_86 X -> auto___def_12 X -> False)
    -> auto___def_12 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_86_m__def_12. intro H. intros.
  elim (rem_1315 H);  intros.
Defined.

Remark rem_8328 : (forall X:term, auto___def_86 X -> auto___def_12 X -> False)
    -> auto___def_86 sym -> auto___def_12 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_86_m__def_12. intro H. intros.
  elim (rem_6623 H);  intros.
  apply (rem_8327 epsilon_m__def_86_m__def_12);  tauto.
Defined.

Remark rem_8329 : forall X1:term, auto___def_86 X1 -> auto___def_12 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_86_m__def_12 1.
  intro X. case X.
   intro H. elim (rem_6635  H).
   intro H. elim (rem_6628  H).
  intros X1 X2. intro H. elim (rem_6639 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6625 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6637 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6638 X1 X2 H).
   intro H. elim (rem_6642  H).
  intros X1 X2. intro H. elim (rem_6646 X1 X2 H).
   intro H. elim (rem_6643  H).
  intros X1 X2. intro H. elim (rem_6645 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6629 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6626 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6636 X1 X2 H).
  intros X1. intro H. elim (rem_6632 X1 H).
  intros X1 X2. intro H. elim (rem_6634 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6633 X1 X2 H).
   intro H. elim (rem_2189  H).
   intro H. elim (rem_1453  H).
  intros X1 X2. intro H. elim (rem_6631 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6630 X1 X2 H).
  intros X1. intro H. elim (rem_6640 X1 H).
   intro H. elim (rem_6644  H).
  intros X1 X2. intro H. elim (rem_6641 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6627 X1 X2 H).
  exact (rem_8328 epsilon_m__def_86_m__def_12 ).
Qed.

Remark rem_8330 : (forall X:term, auto___def_85 X -> auto_knows_current X -> False)
    -> forall X1:term, auto___def_86 X1 -> auto___def_12 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m__def_85_mknows_current. exact (rem_8329).
Defined.

Remark rem_8331 : (forall X:term, auto___def_85 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_86 X1 -> auto___type_19 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m__def_85_mknows_current. intros X1 X2.
  cut (auto___def_86 X1 -> auto___def_12 X1 -> False). clear  epsilon_m__def_85_mknows_current. tauto.
  exact (rem_8330 epsilon_m__def_85_mknows_current X1).
Defined.

Remark rem_8332 : (forall X:term, auto___def_85 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___def_86 X1 -> auto___type_19 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_85_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1066 X1 X2 H);  intros.
  apply (rem_8321 epsilon_m__def_85_mknows_current X1 X2);  tauto.
  apply (rem_8326 epsilon_m__def_85_mknows_current X1 X2);  tauto.
  apply (rem_8331 epsilon_m__def_85_mknows_current X1 X2);  tauto.
Defined.

Remark rem_8333 : (forall X:term, auto___def_85 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto___def_85 (key X1 X2) -> auto_knows_current (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_85_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1457 X1 X2 H);  intros.
  apply (rem_8332 epsilon_m__def_85_mknows_current X1 X2);  tauto.
Defined.

Remark rem_8334 : forall X1:term, auto___def_85 X1 -> auto_knows_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_85_mknows_current 1.
  intro X. case X.
   intro H. elim (rem_6667  H).
   intro H. elim (rem_6659  H).
  intros X1 X2. intro H. elim (rem_6672 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6656 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6670 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6671 X1 X2 H).
   intro H. elim (rem_6676  H).
  intros X1 X2;  exact (rem_8333 epsilon_m__def_85_mknows_current X1 X2).
   intro H. elim (rem_6677  H).
  intros X1 X2. intro H. elim (rem_6679 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6660 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6657 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6669 X1 X2 H).
  intros X1. intro H. elim (rem_6663 X1 H).
  intros X1 X2. intro H. elim (rem_6666 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6665 X1 X2 H).
   intro H. elim (rem_6668  H).
   intro H. elim (rem_6664  H).
  intros X1 X2. intro H. elim (rem_6662 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6661 X1 X2 H).
  intros X1. intro H. elim (rem_6673 X1 H).
   intro H. elim (rem_6678  H).
  intros X1 X2. intro H. elim (rem_6675 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6658 X1 X2 H).
   intro H. elim (rem_6674  H).
Qed.

Remark rem_8335 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_8334 X2)). tauto.
Qed.

Remark rem_8336 : forall X1 X2:term, auto_knows_current X2 -> auto_testable_current (crypt X1 X2) -> auto_testable_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_616 X1 X2 H);  intros.
  apply (rem_7866 X1 X2);  tauto.
  apply (rem_7883 X1 X2);  tauto.
  apply (rem_7898 X1 X2);  tauto.
  apply (rem_8074 X1 X2);  tauto.
  apply (rem_8075 X1 X2);  tauto.
  apply (rem_8136 X1 X2);  tauto.
  apply (rem_8153 X1 X2);  tauto.
  apply (rem_8305 X1 X2);  tauto.
  apply (rem_8310 X1 X2);  tauto.
  apply (rem_8316 X1 X2);  tauto.
  apply (rem_8335 X1 X2);  tauto.
Qed.

Remark rem_8337 : forall X1 X2:term, auto_testable_current (crypt X1 X2) -> auto_knows_current X2 -> auto_testable_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_testable_current (crypt X1 X2) -> auto_testable_current X1). tauto. exact (rem_8336 X1 X2).
Qed.

Remark rem_8338 : forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6779 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8339 : forall X1 X2:term, auto_agent X2 -> auto___def_51 X1 -> auto_knows_current (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_51 X1 -> auto_agent X2 -> auto_knows_current (key X1 X2)). tauto. exact (rem_8338 X1 X2).
Qed.

Remark rem_8340 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5144 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_enc_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8341 : (forall X:term, auto___def_41 X -> auto___def_60 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_41_p__def_60.  tauto.
Defined.

Remark rem_8342 : (forall X:term, auto___def_41 X -> auto___def_60 X)
    -> auto___def_60 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_41_p__def_60.  case (rem_8341 epsilon_m__def_41_p__def_60). clear  epsilon_m__def_41_p__def_60. intros. apply trans___def_60_sym_1;  tauto.
 clear  epsilon_m__def_41_p__def_60. tauto.
Defined.

Remark rem_8343 : (forall X:term, auto___def_41 X -> auto___def_60 X)
    -> auto___def_41 sym -> auto___def_60 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_41_p__def_60. intro H. intros.
  elim (rem_5660 H);  intros.
  apply (rem_8342 epsilon_m__def_41_p__def_60);  tauto.
Defined.

Remark rem_8344 : forall X1:term, auto___def_41 X1 -> auto___def_60 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_41_p__def_60 1.
  intro X. case X.
   intro H. elim (rem_5672  H).
   intro H. elim (rem_5665  H).
  intros X1 X2. intro H. elim (rem_5676 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5662 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5674 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5675 X1 X2 H).
   intro H. elim (rem_5679  H).
  intros X1 X2. intro H. elim (rem_5683 X1 X2 H).
   intro H. elim (rem_5680  H).
  intros X1 X2. intro H. elim (rem_5682 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5666 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5663 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5673 X1 X2 H).
  intros X1. intro H. elim (rem_5669 X1 H).
  intros X1 X2. intro H. elim (rem_5671 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5670 X1 X2 H).
   intro H. elim (rem_2153  H).
   intro H. elim (rem_1401  H).
  intros X1 X2. intro H. elim (rem_5668 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5667 X1 X2 H).
  intros X1. intro H. elim (rem_5677 X1 H).
   intro H. elim (rem_5681  H).
  intros X1 X2. intro H. elim (rem_5678 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5664 X1 X2 H).
  exact (rem_8343 epsilon_m__def_41_p__def_60 ).
Qed.

Remark rem_8345 : (forall X:term, auto___def_37 X -> auto_testable_old X)
    -> forall X1:term, auto___def_41 X1 -> auto___def_60 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_37_ptestable_old. exact (rem_8344).
Defined.

Remark rem_8346 : (forall X:term, auto___def_37 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> auto___def_60 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_37_ptestable_old. intros X1 X2.
  cut (auto___def_41 X1 -> auto___def_60 X1). tauto. exact (rem_8345 epsilon_m__def_37_ptestable_old X1).
Defined.

Remark rem_8347 : forall X2:term, auto___def_42 X2 -> auto___type_16 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_42_p__type_16 1.
  intro X. case X.
   intro H. elim (rem_404  H).
   intro H. elim (rem_397  H).
  intros X1 X2. intro H. elim (rem_409 X1 X2 H).
  intros X1 X2. intro H. elim (rem_394 X1 X2 H).
  intros X1 X2. intro H. elim (rem_407 X1 X2 H).
  intros X1 X2. intro H. elim (rem_408 X1 X2 H).
   intro H. elim (rem_413  H).
  intros X1 X2. intro H. elim (rem_417 X1 X2 H).
   intro H. elim (rem_414  H).
  intros X1 X2. intro H. elim (rem_416 X1 X2 H).
  intros X1 X2. intro H. elim (rem_398 X1 X2 H).
  intros X1 X2. intro H. elim (rem_395 X1 X2 H).
  intros X1 X2. intro H. elim (rem_406 X1 X2 H).
  intros X1. intro H. elim (rem_400 X1 H).
  intros X1 X2. intro H. elim (rem_403 X1 X2 H).
  intros X1 X2. intro H. elim (rem_402 X1 X2 H).
   intro H. elim (rem_405  H).
   intro H. elim (rem_401  H).
  intros X1 X2. intro H. elim (rem_399 X1 X2 H).
  intros X1 X2;  exact (rem_835 epsilon_m__def_42_p__type_16 X1 X2).
  intros X1. intro H. elim (rem_410 X1 H).
   intro H. elim (rem_415  H).
  intros X1 X2. intro H. elim (rem_412 X1 X2 H).
  intros X1 X2. intro H. elim (rem_396 X1 X2 H).
   intro H. elim (rem_411  H).
Qed.

Remark rem_8348 : (forall X:term, auto___def_37 X -> auto_testable_old X)
    -> forall X2:term, auto___def_42 X2 -> auto___type_16 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_37_ptestable_old. exact (rem_8347).
Defined.

Remark rem_8349 : (forall X:term, auto___def_37 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> auto___type_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_37_ptestable_old. intros X1 X2.
  cut (auto___def_42 X2 -> auto___type_16 X2). tauto. exact (rem_8348 epsilon_m__def_37_ptestable_old X2).
Defined.

Remark rem_8350 : (forall X:term, auto___def_37 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> (auto___def_60 X1 /\ auto___type_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_37_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_60 X1). 2:apply (rem_8346 epsilon_m__def_37_ptestable_old X1 X2);  assumption.
  cut (auto___type_16 X2). 2:apply (rem_8349 epsilon_m__def_37_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8351 : (forall X:term, auto___def_37 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_41 X1 -> auto___def_42 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_37_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_8350 epsilon_m__def_37_ptestable_old X1 X2 A1 A2). clear  epsilon_m__def_37_ptestable_old A1 A2. intros. apply trans_testable_old_key_1;  tauto.
 clear  epsilon_m__def_37_ptestable_old A1 A2. tauto.
Defined.

Remark rem_8352 : (forall X:term, auto___def_37 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_37 (key X1 X2) -> auto_testable_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_37_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_1405 X1 X2 H);  intros.
  apply (rem_8351 epsilon_m__def_37_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_8353 : forall X1:term, auto___def_37 X1 -> auto_testable_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_37_ptestable_old 1.
  intro X. case X.
   intro H. elim (rem_5704  H).
   intro H. elim (rem_5696  H).
  intros X1 X2. intro H. elim (rem_5709 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5693 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5707 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5708 X1 X2 H).
   intro H. elim (rem_5713  H).
  intros X1 X2;  exact (rem_8352 epsilon_m__def_37_ptestable_old X1 X2).
   intro H. elim (rem_5714  H).
  intros X1 X2. intro H. elim (rem_5716 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5697 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5694 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5706 X1 X2 H).
  intros X1. intro H. elim (rem_5700 X1 H).
  intros X1 X2. intro H. elim (rem_5703 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5702 X1 X2 H).
   intro H. elim (rem_5705  H).
   intro H. elim (rem_5701  H).
  intros X1 X2. intro H. elim (rem_5699 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5698 X1 X2 H).
  intros X1. intro H. elim (rem_5710 X1 H).
   intro H. elim (rem_5715  H).
  intros X1 X2. intro H. elim (rem_5712 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5695 X1 X2 H).
   intro H. elim (rem_5711  H).
Qed.

Remark rem_8354 : forall X1 X2:term, auto___def_36 X2 -> auto___def_37 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_37 X1 -> auto_testable_old X1). tauto. exact (rem_8353 X1).
Qed.

Remark rem_8355 : (forall X:term, auto___def_54 X -> auto_testable_old X)
    -> forall X1:term, auto___def_55 X1 -> auto___def_55 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8356 : (forall X:term, auto___def_54 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_55 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_54_ptestable_old. intros X1 X2.
  cut (auto___def_55 X1 -> auto___def_55 X1). tauto. exact (rem_8355 epsilon_m__def_54_ptestable_old X1).
Defined.

Remark rem_8357 : (forall X:term, auto___def_54 X -> auto_testable_old X)
    -> forall X2:term, auto___def_4 X2 -> auto___def_4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8358 : (forall X:term, auto___def_54 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto___def_4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_54_ptestable_old. intros X1 X2.
  cut (auto___def_4 X2 -> auto___def_4 X2). tauto. exact (rem_8357 epsilon_m__def_54_ptestable_old X2).
Defined.

Remark rem_8359 : (forall X:term, auto___def_54 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> (auto___def_55 X1 /\ auto___def_4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_54_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_55 X1). 2:apply (rem_8356 epsilon_m__def_54_ptestable_old X1 X2);  assumption.
  cut (auto___def_4 X2). 2:apply (rem_8358 epsilon_m__def_54_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8360 : (forall X:term, auto___def_54 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_55 X1 -> auto___def_4 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_54_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_8359 epsilon_m__def_54_ptestable_old X1 X2 A1 A2). clear  epsilon_m__def_54_ptestable_old A1 A2. intros. apply trans_testable_old_key_2;  tauto.
 clear  epsilon_m__def_54_ptestable_old A1 A2. tauto.
Defined.

Remark rem_8361 : forall X1 X2:term, auto___def_54 (key X1 X2) -> or_1
    (auto___def_55 X1 /\ auto___def_4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8362 : (forall X:term, auto___def_54 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_54 (key X1 X2) -> auto_testable_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_54_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_8361 X1 X2 H);  intros.
  apply (rem_8360 epsilon_m__def_54_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_8363 : forall X1 X2:term, auto___def_54 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8364 : forall X1 X2:term, auto___def_54 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8365 : forall X1 X2:term, auto___def_54 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8366 : auto___def_54 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8367 : forall X1 X2:term, auto___def_54 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8368 : forall X1 X2:term, auto___def_54 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8369 : forall X1 X2:term, auto___def_54 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8370 : forall X1:term, auto___def_54 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8371 : auto___def_54 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8372 : forall X1 X2:term, auto___def_54 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8373 : forall X1 X2:term, auto___def_54 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8374 : auto___def_54 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8375 : auto___def_54 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8376 : forall X1 X2:term, auto___def_54 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8377 : forall X1 X2:term, auto___def_54 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8378 : forall X1 X2:term, auto___def_54 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8379 : forall X1 X2:term, auto___def_54 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8380 : forall X1:term, auto___def_54 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8381 : auto___def_54 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8382 : forall X1 X2:term, auto___def_54 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8383 : auto___def_54 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8384 : auto___def_54 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8385 : auto___def_54 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8386 : forall X1 X2:term, auto___def_54 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8387 : forall X1:term, auto___def_54 X1 -> auto_testable_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_54_ptestable_old 1.
  intro X. case X.
   intro H. elim (rem_8374  H).
   intro H. elim (rem_8366  H).
  intros X1 X2. intro H. elim (rem_8379 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8363 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8377 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8378 X1 X2 H).
   intro H. elim (rem_8383  H).
  intros X1 X2;  exact (rem_8362 epsilon_m__def_54_ptestable_old X1 X2).
   intro H. elim (rem_8384  H).
  intros X1 X2. intro H. elim (rem_8386 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8367 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8364 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8376 X1 X2 H).
  intros X1. intro H. elim (rem_8370 X1 H).
  intros X1 X2. intro H. elim (rem_8373 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8372 X1 X2 H).
   intro H. elim (rem_8375  H).
   intro H. elim (rem_8371  H).
  intros X1 X2. intro H. elim (rem_8369 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8368 X1 X2 H).
  intros X1. intro H. elim (rem_8380 X1 H).
   intro H. elim (rem_8385  H).
  intros X1 X2. intro H. elim (rem_8382 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8365 X1 X2 H).
   intro H. elim (rem_8381  H).
Qed.

Remark rem_8388 : forall X1 X2:term, auto___def_54 X1 -> auto___type_12 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_54 X1 -> auto_testable_old X1). tauto. exact (rem_8387 X1).
Qed.

Remark rem_8389 : forall X1 X2:term, auto___type_12 X2 -> auto___def_54 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_54 X1 -> auto___type_12 X2 -> auto_knows_old X2 -> auto_testable_old X1). tauto. exact (rem_8388 X1 X2).
Qed.

Remark rem_8390 : (forall X:term, auto___def_26 X -> auto___def_60 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_26_p__def_60.  tauto.
Defined.

Remark rem_8391 : (forall X:term, auto___def_26 X -> auto___def_60 X)
    -> auto___def_60 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_26_p__def_60.  case (rem_8390 epsilon_m__def_26_p__def_60). clear  epsilon_m__def_26_p__def_60. intros. apply trans___def_60_sym_1;  tauto.
 clear  epsilon_m__def_26_p__def_60. tauto.
Defined.

Remark rem_8392 : (forall X:term, auto___def_26 X -> auto___def_60 X)
    -> auto___def_26 sym -> auto___def_60 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_26_p__def_60. intro H. intros.
  elim (rem_6548 H);  intros.
  apply (rem_8391 epsilon_m__def_26_p__def_60);  tauto.
Defined.

Remark rem_8393 : forall X1:term, auto___def_26 X1 -> auto___def_60 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_26_p__def_60 1.
  intro X. case X.
   intro H. elim (rem_6560  H).
   intro H. elim (rem_6553  H).
  intros X1 X2. intro H. elim (rem_6564 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6550 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6562 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6563 X1 X2 H).
   intro H. elim (rem_6567  H).
  intros X1 X2. intro H. elim (rem_6571 X1 X2 H).
   intro H. elim (rem_6568  H).
  intros X1 X2. intro H. elim (rem_6570 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6554 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6551 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6561 X1 X2 H).
  intros X1. intro H. elim (rem_6557 X1 H).
  intros X1 X2. intro H. elim (rem_6559 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6558 X1 X2 H).
   intro H. elim (rem_2178  H).
   intro H. elim (rem_1440  H).
  intros X1 X2. intro H. elim (rem_6556 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6555 X1 X2 H).
  intros X1. intro H. elim (rem_6565 X1 H).
   intro H. elim (rem_6569  H).
  intros X1 X2. intro H. elim (rem_6566 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6552 X1 X2 H).
  exact (rem_8392 epsilon_m__def_26_p__def_60 ).
Qed.

Remark rem_8394 : (forall X:term, auto___def_25 X -> auto_testable_old X)
    -> forall X1:term, auto___def_26 X1 -> auto___def_60 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_25_ptestable_old. exact (rem_8393).
Defined.

Remark rem_8395 : (forall X:term, auto___def_25 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto___def_60 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_25_ptestable_old. intros X1 X2.
  cut (auto___def_26 X1 -> auto___def_60 X1). tauto. exact (rem_8394 epsilon_m__def_25_ptestable_old X1).
Defined.

Remark rem_8396 : forall X2:term, auto___type_4 X2 -> auto___type_16 X2. (* Induct. *)
Proof.
  fix epsilon_m__type_4_p__type_16 1.
  intro X. case X.
   intro H. elim (rem_531  H).
   intro H. elim (rem_524  H).
  intros X1 X2. intro H. elim (rem_536 X1 X2 H).
  intros X1 X2. intro H. elim (rem_521 X1 X2 H).
  intros X1 X2. intro H. elim (rem_534 X1 X2 H).
  intros X1 X2. intro H. elim (rem_535 X1 X2 H).
   intro H. elim (rem_540  H).
  intros X1 X2. intro H. elim (rem_544 X1 X2 H).
   intro H. elim (rem_541  H).
  intros X1 X2. intro H. elim (rem_543 X1 X2 H).
  intros X1 X2. intro H. elim (rem_525 X1 X2 H).
  intros X1 X2. intro H. elim (rem_522 X1 X2 H).
  intros X1 X2. intro H. elim (rem_533 X1 X2 H).
  intros X1. intro H. elim (rem_527 X1 H).
  intros X1 X2. intro H. elim (rem_530 X1 X2 H).
  intros X1 X2. intro H. elim (rem_529 X1 X2 H).
   intro H. elim (rem_532  H).
   intro H. elim (rem_528  H).
  intros X1 X2. intro H. elim (rem_526 X1 X2 H).
  intros X1 X2;  exact (rem_849 epsilon_m__type_4_p__type_16 X1 X2).
  intros X1. intro H. elim (rem_537 X1 H).
   intro H. elim (rem_542  H).
  intros X1 X2. intro H. elim (rem_539 X1 X2 H).
  intros X1 X2. intro H. elim (rem_523 X1 X2 H).
   intro H. elim (rem_538  H).
Qed.

Remark rem_8397 : (forall X:term, auto___def_25 X -> auto_testable_old X)
    -> forall X2:term, auto___type_4 X2 -> auto___type_16 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_25_ptestable_old. exact (rem_8396).
Defined.

Remark rem_8398 : (forall X:term, auto___def_25 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto___type_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_25_ptestable_old. intros X1 X2.
  cut (auto___type_4 X2 -> auto___type_16 X2). tauto. exact (rem_8397 epsilon_m__def_25_ptestable_old X2).
Defined.

Remark rem_8399 : (forall X:term, auto___def_25 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> (auto___def_60 X1 /\ auto___type_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_25_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_60 X1). 2:apply (rem_8395 epsilon_m__def_25_ptestable_old X1 X2);  assumption.
  cut (auto___type_16 X2). 2:apply (rem_8398 epsilon_m__def_25_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8400 : (forall X:term, auto___def_25 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_26 X1 -> auto___type_4 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_25_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_8399 epsilon_m__def_25_ptestable_old X1 X2 A1 A2). clear  epsilon_m__def_25_ptestable_old A1 A2. intros. apply trans_testable_old_key_1;  tauto.
 clear  epsilon_m__def_25_ptestable_old A1 A2. tauto.
Defined.

Remark rem_8401 : (forall X:term, auto___def_25 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_25 (key X1 X2) -> auto_testable_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_25_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_1444 X1 X2 H);  intros.
  apply (rem_8400 epsilon_m__def_25_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_8402 : forall X1:term, auto___def_25 X1 -> auto_testable_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_25_ptestable_old 1.
  intro X. case X.
   intro H. elim (rem_4538  H).
   intro H. elim (rem_4530  H).
  intros X1 X2. intro H. elim (rem_4543 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4527 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4541 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4542 X1 X2 H).
   intro H. elim (rem_4547  H).
  intros X1 X2;  exact (rem_8401 epsilon_m__def_25_ptestable_old X1 X2).
   intro H. elim (rem_4548  H).
  intros X1 X2. intro H. elim (rem_4550 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4531 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4528 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4540 X1 X2 H).
  intros X1. intro H. elim (rem_4534 X1 H).
  intros X1 X2. intro H. elim (rem_4537 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4536 X1 X2 H).
   intro H. elim (rem_4539  H).
   intro H. elim (rem_4535  H).
  intros X1 X2. intro H. elim (rem_4533 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4532 X1 X2 H).
  intros X1. intro H. elim (rem_4544 X1 H).
   intro H. elim (rem_4549  H).
  intros X1 X2. intro H. elim (rem_4546 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4529 X1 X2 H).
   intro H. elim (rem_4545  H).
Qed.

Remark rem_8403 : forall X1 X2:term, auto___def_24 X2 -> auto___def_25 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_25 X1 -> auto_testable_old X1). tauto. exact (rem_8402 X1).
Qed.

Remark rem_8404 : (forall X:term, auto___def_53 X -> auto___def_51 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_53_p__def_51.  tauto.
Defined.

Remark rem_8405 : (forall X:term, auto___def_53 X -> auto___def_51 X)
    -> auto___def_51 pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_53_p__def_51.  case (rem_8404 epsilon_m__def_53_p__def_51). clear  epsilon_m__def_53_p__def_51. intros. apply trans___def_51_pub_1;  tauto.
 clear  epsilon_m__def_53_p__def_51. tauto.
Defined.

Remark rem_8406 : auto___def_53 pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8407 : (forall X:term, auto___def_53 X -> auto___def_51 X)
    -> auto___def_53 pub -> auto___def_51 pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_53_p__def_51. intro H. intros.
  elim (rem_8406 H);  intros.
  apply (rem_8405 epsilon_m__def_53_p__def_51);  tauto.
Defined.

Remark rem_8408 : forall X1 X2:term, auto___def_53 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8409 : forall X1 X2:term, auto___def_53 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8410 : forall X1 X2:term, auto___def_53 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8411 : auto___def_53 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8412 : forall X1 X2:term, auto___def_53 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8413 : forall X1 X2:term, auto___def_53 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8414 : forall X1 X2:term, auto___def_53 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8415 : forall X1:term, auto___def_53 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8416 : forall X1 X2:term, auto___def_53 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8417 : forall X1 X2:term, auto___def_53 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8418 : auto___def_53 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8419 : auto___def_53 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8420 : forall X1 X2:term, auto___def_53 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8421 : forall X1 X2:term, auto___def_53 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8422 : forall X1 X2:term, auto___def_53 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8423 : forall X1 X2:term, auto___def_53 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8424 : forall X1:term, auto___def_53 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8425 : auto___def_53 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8426 : forall X1 X2:term, auto___def_53 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8427 : auto___def_53 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8428 : auto___def_53 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8429 : auto___def_53 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8430 : forall X1 X2:term, auto___def_53 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8431 : forall X1 X2:term, auto___def_53 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8432 : forall X1:term, auto___def_53 X1 -> auto___def_51 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_53_p__def_51 1.
  intro X. case X.
   intro H. elim (rem_8418  H).
   intro H. elim (rem_8411  H).
  intros X1 X2. intro H. elim (rem_8423 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8408 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8421 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8422 X1 X2 H).
   intro H. elim (rem_8427  H).
  intros X1 X2. intro H. elim (rem_8431 X1 X2 H).
   intro H. elim (rem_8428  H).
  intros X1 X2. intro H. elim (rem_8430 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8412 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8409 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8420 X1 X2 H).
  intros X1. intro H. elim (rem_8415 X1 H).
  intros X1 X2. intro H. elim (rem_8417 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8416 X1 X2 H).
   intro H. elim (rem_8419  H).
  exact (rem_8407 epsilon_m__def_53_p__def_51 ).
  intros X1 X2. intro H. elim (rem_8414 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8413 X1 X2 H).
  intros X1. intro H. elim (rem_8424 X1 H).
   intro H. elim (rem_8429  H).
  intros X1 X2. intro H. elim (rem_8426 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8410 X1 X2 H).
   intro H. elim (rem_8425  H).
Qed.

Remark rem_8433 : (forall X:term, auto___def_52 X -> auto_testable_old X)
    -> forall X1:term, auto___def_53 X1 -> auto___def_51 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_52_ptestable_old. exact (rem_8432).
Defined.

Remark rem_8434 : (forall X:term, auto___def_52 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_53 X1 -> auto___def_2 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_52_ptestable_old. intros X1 X2.
  cut (auto___def_53 X1 -> auto___def_51 X1). tauto. exact (rem_8433 epsilon_m__def_52_ptestable_old X1).
Defined.

Remark rem_8435 : (forall X:term, auto___def_2 X -> auto_agent X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_2_pagent.  tauto.
Defined.

Remark rem_8436 : (forall X:term, auto___def_2 X -> auto_agent X)
    -> auto_agent i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_2_pagent.  case (rem_8435 epsilon_m__def_2_pagent). clear  epsilon_m__def_2_pagent. intros. apply trans_agent_i_1;  tauto.
 clear  epsilon_m__def_2_pagent. tauto.
Defined.

Remark rem_8437 : auto___def_2 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8438 : (forall X:term, auto___def_2 X -> auto_agent X)
    -> auto___def_2 i -> auto_agent i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_2_pagent. intro H. intros.
  elim (rem_8437 H);  intros.
  apply (rem_8436 epsilon_m__def_2_pagent);  tauto.
Defined.

Remark rem_8439 : forall X1 X2:term, auto___def_2 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8440 : forall X1 X2:term, auto___def_2 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8441 : forall X1 X2:term, auto___def_2 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8442 : auto___def_2 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8443 : forall X1 X2:term, auto___def_2 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8444 : forall X1 X2:term, auto___def_2 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8445 : forall X1 X2:term, auto___def_2 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8446 : forall X1:term, auto___def_2 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8447 : auto___def_2 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8448 : forall X1 X2:term, auto___def_2 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8449 : forall X1 X2:term, auto___def_2 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8450 : auto___def_2 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8451 : auto___def_2 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8452 : forall X1 X2:term, auto___def_2 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8453 : forall X1 X2:term, auto___def_2 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8454 : forall X1 X2:term, auto___def_2 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8455 : forall X1 X2:term, auto___def_2 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8456 : forall X1:term, auto___def_2 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8457 : auto___def_2 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8458 : forall X1 X2:term, auto___def_2 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8459 : auto___def_2 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8460 : auto___def_2 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8461 : forall X1 X2:term, auto___def_2 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8462 : forall X1 X2:term, auto___def_2 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8463 : forall X2:term, auto___def_2 X2 -> auto_agent X2. (* Induct. *)
Proof.
  fix epsilon_m__def_2_pagent 1.
  intro X. case X.
   intro H. elim (rem_8450  H).
   intro H. elim (rem_8442  H).
  intros X1 X2. intro H. elim (rem_8455 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8439 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8453 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8454 X1 X2 H).
  exact (rem_8438 epsilon_m__def_2_pagent ).
  intros X1 X2. intro H. elim (rem_8462 X1 X2 H).
   intro H. elim (rem_8459  H).
  intros X1 X2. intro H. elim (rem_8461 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8443 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8440 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8452 X1 X2 H).
  intros X1. intro H. elim (rem_8446 X1 H).
  intros X1 X2. intro H. elim (rem_8449 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8448 X1 X2 H).
   intro H. elim (rem_8451  H).
   intro H. elim (rem_8447  H).
  intros X1 X2. intro H. elim (rem_8445 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8444 X1 X2 H).
  intros X1. intro H. elim (rem_8456 X1 H).
   intro H. elim (rem_8460  H).
  intros X1 X2. intro H. elim (rem_8458 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8441 X1 X2 H).
   intro H. elim (rem_8457  H).
Qed.

Remark rem_8464 : (forall X:term, auto___def_52 X -> auto_testable_old X)
    -> forall X2:term, auto___def_2 X2 -> auto_agent X2. (* Cut history. *)
Proof.  intros epsilon_m__def_52_ptestable_old. exact (rem_8463).
Defined.

Remark rem_8465 : (forall X:term, auto___def_52 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_53 X1 -> auto___def_2 X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_52_ptestable_old. intros X1 X2.
  cut (auto___def_2 X2 -> auto_agent X2). tauto. exact (rem_8464 epsilon_m__def_52_ptestable_old X2).
Defined.

Remark rem_8466 : (forall X:term, auto___def_52 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_53 X1 -> auto___def_2 X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_52_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_8434 epsilon_m__def_52_ptestable_old X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_8465 epsilon_m__def_52_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8467 : (forall X:term, auto___def_52 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_53 X1 -> auto___def_2 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_52_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_8466 epsilon_m__def_52_ptestable_old X1 X2 A1 A2). clear  epsilon_m__def_52_ptestable_old A1 A2. intros. apply trans_testable_old_key_3;  tauto.
 clear  epsilon_m__def_52_ptestable_old A1 A2. tauto.
Defined.

Remark rem_8468 : forall X1 X2:term, auto___def_52 (key X1 X2) -> or_1
    (auto___def_53 X1 /\ auto___def_2 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8469 : (forall X:term, auto___def_52 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_52 (key X1 X2) -> auto_testable_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_52_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_8468 X1 X2 H);  intros.
  apply (rem_8467 epsilon_m__def_52_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_8470 : forall X1 X2:term, auto___def_52 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8471 : forall X1 X2:term, auto___def_52 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8472 : forall X1 X2:term, auto___def_52 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8473 : auto___def_52 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8474 : forall X1 X2:term, auto___def_52 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8475 : forall X1 X2:term, auto___def_52 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8476 : forall X1 X2:term, auto___def_52 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8477 : forall X1:term, auto___def_52 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8478 : auto___def_52 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8479 : forall X1 X2:term, auto___def_52 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8480 : forall X1 X2:term, auto___def_52 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8481 : auto___def_52 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8482 : auto___def_52 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8483 : forall X1 X2:term, auto___def_52 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8484 : forall X1 X2:term, auto___def_52 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8485 : forall X1 X2:term, auto___def_52 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8486 : forall X1 X2:term, auto___def_52 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8487 : forall X1:term, auto___def_52 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8488 : auto___def_52 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8489 : forall X1 X2:term, auto___def_52 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8490 : auto___def_52 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8491 : auto___def_52 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8492 : auto___def_52 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8493 : forall X1 X2:term, auto___def_52 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8494 : forall X1:term, auto___def_52 X1 -> auto_testable_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_52_ptestable_old 1.
  intro X. case X.
   intro H. elim (rem_8481  H).
   intro H. elim (rem_8473  H).
  intros X1 X2. intro H. elim (rem_8486 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8470 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8484 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8485 X1 X2 H).
   intro H. elim (rem_8490  H).
  intros X1 X2;  exact (rem_8469 epsilon_m__def_52_ptestable_old X1 X2).
   intro H. elim (rem_8491  H).
  intros X1 X2. intro H. elim (rem_8493 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8474 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8483 X1 X2 H).
  intros X1. intro H. elim (rem_8477 X1 H).
  intros X1 X2. intro H. elim (rem_8480 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8479 X1 X2 H).
   intro H. elim (rem_8482  H).
   intro H. elim (rem_8478  H).
  intros X1 X2. intro H. elim (rem_8476 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8475 X1 X2 H).
  intros X1. intro H. elim (rem_8487 X1 H).
   intro H. elim (rem_8492  H).
  intros X1 X2. intro H. elim (rem_8489 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8472 X1 X2 H).
   intro H. elim (rem_8488  H).
Qed.

Remark rem_8495 : forall X1 X2:term, auto___def_52 X1 -> auto___type_11 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_52 X1 -> auto_testable_old X1). tauto. exact (rem_8494 X1).
Qed.

Remark rem_8496 : forall X1 X2:term, auto___type_11 X2 -> auto___def_52 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_52 X1 -> auto___type_11 X2 -> auto_knows_old X2 -> auto_testable_old X1). tauto. exact (rem_8495 X1 X2).
Qed.

Remark rem_8497 : (forall X:term, auto___def_45 X -> auto___def_60 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_45_p__def_60.  tauto.
Defined.

Remark rem_8498 : (forall X:term, auto___def_45 X -> auto___def_60 X)
    -> auto___def_60 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_45_p__def_60.  case (rem_8497 epsilon_m__def_45_p__def_60). clear  epsilon_m__def_45_p__def_60. intros. apply trans___def_60_sym_1;  tauto.
 clear  epsilon_m__def_45_p__def_60. tauto.
Defined.

Remark rem_8499 : (forall X:term, auto___def_45 X -> auto___def_60 X)
    -> auto___def_45 sym -> auto___def_60 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_45_p__def_60. intro H. intros.
  elim (rem_6585 H);  intros.
  apply (rem_8498 epsilon_m__def_45_p__def_60);  tauto.
Defined.

Remark rem_8500 : forall X1:term, auto___def_45 X1 -> auto___def_60 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_45_p__def_60 1.
  intro X. case X.
   intro H. elim (rem_6597  H).
   intro H. elim (rem_6590  H).
  intros X1 X2. intro H. elim (rem_6601 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6587 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6599 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6600 X1 X2 H).
   intro H. elim (rem_6604  H).
  intros X1 X2. intro H. elim (rem_6608 X1 X2 H).
   intro H. elim (rem_6605  H).
  intros X1 X2. intro H. elim (rem_6607 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6591 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6588 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6598 X1 X2 H).
  intros X1. intro H. elim (rem_6594 X1 H).
  intros X1 X2. intro H. elim (rem_6596 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6595 X1 X2 H).
   intro H. elim (rem_2183  H).
   intro H. elim (rem_1446  H).
  intros X1 X2. intro H. elim (rem_6593 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6592 X1 X2 H).
  intros X1. intro H. elim (rem_6602 X1 H).
   intro H. elim (rem_6606  H).
  intros X1 X2. intro H. elim (rem_6603 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6589 X1 X2 H).
  exact (rem_8499 epsilon_m__def_45_p__def_60 ).
Qed.

Remark rem_8501 : (forall X:term, auto___def_44 X -> auto_testable_old X)
    -> forall X1:term, auto___def_45 X1 -> auto___def_60 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_44_ptestable_old. exact (rem_8500).
Defined.

Remark rem_8502 : (forall X:term, auto___def_44 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> auto___def_60 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_44_ptestable_old. intros X1 X2.
  cut (auto___def_45 X1 -> auto___def_60 X1). tauto. exact (rem_8501 epsilon_m__def_44_ptestable_old X1).
Defined.

Remark rem_8503 : forall X2:term, auto___type_8 X2 -> auto___type_16 X2. (* Induct. *)
Proof.
  fix epsilon_m__type_8_p__type_16 1.
  intro X. case X.
   intro H. elim (rem_468  H).
   intro H. elim (rem_461  H).
  intros X1 X2. intro H. elim (rem_473 X1 X2 H).
  intros X1 X2. intro H. elim (rem_458 X1 X2 H).
  intros X1 X2. intro H. elim (rem_471 X1 X2 H).
  intros X1 X2. intro H. elim (rem_472 X1 X2 H).
   intro H. elim (rem_477  H).
  intros X1 X2. intro H. elim (rem_481 X1 X2 H).
   intro H. elim (rem_478  H).
  intros X1 X2. intro H. elim (rem_480 X1 X2 H).
  intros X1 X2. intro H. elim (rem_462 X1 X2 H).
  intros X1 X2. intro H. elim (rem_459 X1 X2 H).
  intros X1 X2. intro H. elim (rem_470 X1 X2 H).
  intros X1. intro H. elim (rem_464 X1 H).
  intros X1 X2. intro H. elim (rem_467 X1 X2 H).
  intros X1 X2. intro H. elim (rem_466 X1 X2 H).
   intro H. elim (rem_469  H).
   intro H. elim (rem_465  H).
  intros X1 X2. intro H. elim (rem_463 X1 X2 H).
  intros X1 X2;  exact (rem_842 epsilon_m__type_8_p__type_16 X1 X2).
  intros X1. intro H. elim (rem_474 X1 H).
   intro H. elim (rem_479  H).
  intros X1 X2. intro H. elim (rem_476 X1 X2 H).
  intros X1 X2. intro H. elim (rem_460 X1 X2 H).
   intro H. elim (rem_475  H).
Qed.

Remark rem_8504 : (forall X:term, auto___def_44 X -> auto_testable_old X)
    -> forall X2:term, auto___type_8 X2 -> auto___type_16 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_44_ptestable_old. exact (rem_8503).
Defined.

Remark rem_8505 : (forall X:term, auto___def_44 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> auto___type_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_44_ptestable_old. intros X1 X2.
  cut (auto___type_8 X2 -> auto___type_16 X2). tauto. exact (rem_8504 epsilon_m__def_44_ptestable_old X2).
Defined.

Remark rem_8506 : (forall X:term, auto___def_44 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> (auto___def_60 X1 /\ auto___type_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_44_ptestable_old. intros X1 X2. intros A1 A2.
  cut (auto___def_60 X1). 2:apply (rem_8502 epsilon_m__def_44_ptestable_old X1 X2);  assumption.
  cut (auto___type_16 X2). 2:apply (rem_8505 epsilon_m__def_44_ptestable_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8507 : (forall X:term, auto___def_44 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_45 X1 -> auto___type_8 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_44_ptestable_old. intros X1 X2. intros A1 A2.
  case (rem_8506 epsilon_m__def_44_ptestable_old X1 X2 A1 A2). clear  epsilon_m__def_44_ptestable_old A1 A2. intros. apply trans_testable_old_key_1;  tauto.
 clear  epsilon_m__def_44_ptestable_old A1 A2. tauto.
Defined.

Remark rem_8508 : (forall X:term, auto___def_44 X -> auto_testable_old X)
    -> forall X1 X2:term, auto___def_44 (key X1 X2) -> auto_testable_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_44_ptestable_old. intros X1 X2. intro H. intros.
  elim (rem_1450 X1 X2 H);  intros.
  apply (rem_8507 epsilon_m__def_44_ptestable_old X1 X2);  tauto.
Defined.

Remark rem_8509 : forall X1:term, auto___def_44 X1 -> auto_testable_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_44_ptestable_old 1.
  intro X. case X.
   intro H. elim (rem_4707  H).
   intro H. elim (rem_4699  H).
  intros X1 X2. intro H. elim (rem_4712 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4696 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4710 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4711 X1 X2 H).
   intro H. elim (rem_4716  H).
  intros X1 X2;  exact (rem_8508 epsilon_m__def_44_ptestable_old X1 X2).
   intro H. elim (rem_4717  H).
  intros X1 X2. intro H. elim (rem_4719 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4700 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4697 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4709 X1 X2 H).
  intros X1. intro H. elim (rem_4703 X1 H).
  intros X1 X2. intro H. elim (rem_4706 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4705 X1 X2 H).
   intro H. elim (rem_4708  H).
   intro H. elim (rem_4704  H).
  intros X1 X2. intro H. elim (rem_4702 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4701 X1 X2 H).
  intros X1. intro H. elim (rem_4713 X1 H).
   intro H. elim (rem_4718  H).
  intros X1 X2. intro H. elim (rem_4715 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4698 X1 X2 H).
   intro H. elim (rem_4714  H).
Qed.

Remark rem_8510 : forall X1 X2:term, auto___def_44 X1 -> auto___type_7 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_44 X1 -> auto_testable_old X1). tauto. exact (rem_8509 X1).
Qed.

Remark rem_8511 : forall X1 X2:term, auto___type_7 X2 -> auto___def_44 X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_44 X1 -> auto___type_7 X2 -> auto_knows_old X2 -> auto_testable_old X1). tauto. exact (rem_8510 X1 X2).
Qed.

Remark rem_8512 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X1 -> auto_testable_old X1). tauto. exact (rem_4813 X1 X2).
Qed.

Remark rem_8513 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old (crypt X2 X1) -> auto_testable_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_79 X2 X1 H);  intros.
  apply (rem_8354 X1 X2);  tauto.
  apply (rem_8389 X1 X2);  tauto.
  apply (rem_8403 X1 X2);  tauto.
  apply (rem_8496 X1 X2);  tauto.
  apply (rem_8511 X1 X2);  tauto.
  apply (rem_8512 X1 X2);  tauto.
Qed.

Remark rem_8514 : forall X1 X2:term, auto_testable_old (crypt X2 X1) -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_testable_old (crypt X2 X1) -> auto_testable_old X1). tauto. exact (rem_8513 X1 X2).
Qed.

Remark rem_8515 : forall X1 X2:term, auto___def_4 X2 -> auto___def_62 X2 -> auto_knows_old X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_8516 : forall X1 X2:term, auto___def_62 X2 -> auto_knows_old X1 -> auto___def_4 X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_4 X2 -> auto___def_62 X2 -> auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_8515 X1 X2).
Qed.

Remark rem_8517 : forall X1 X2:term, auto___def_3 X2 X1 -> auto___def_4 X2 -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_2899 X2 X1 H);  intros.
  apply (rem_8516 X1 X2);  tauto.
Qed.

Remark rem_8518 : forall X1 X2:term, auto_knows_current (dec X2 X1) -> auto_testable_current X2 -> auto_testable_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1010 X2 X1 H);  intros.
  apply (rem_6761 X1 X2);  tauto.
Qed.

Remark rem_8519 : forall X1 X2:term, auto_knows_current (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2.  case (rem_855). intros. apply trans_knows_current_nonceb_old_1;  tauto.
 tauto.
Qed.

Remark rem_8520 : forall X1:term, auto___type_12 X1 -> auto___type_12 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_8521 : forall X1 X2:term, auto___def_54 X2 -> auto___type_12 X1 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_12 X1 -> auto___type_12 X1). tauto. exact (rem_8520 X1).
Qed.

Remark rem_8522 : forall X2:term, auto___def_54 X2 -> auto___def_54 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_8523 : forall X1 X2:term, auto___def_54 X2 -> auto___type_12 X1 -> auto___def_54 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_54 X2 -> auto___def_54 X2). tauto. exact (rem_8522 X2).
Qed.

Remark rem_8524 : forall X1 X2:term, auto___def_54 X2 -> auto___type_12 X1 -> (auto___type_12 X1 /\ auto___def_54 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_8521 X1 X2);  assumption.
  cut (auto___def_54 X2). 2:apply (rem_8523 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_8525 : forall X1 X2:term, auto___def_54 X2 -> auto___type_12 X1 -> auto_testable_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_8524 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_old_crypt_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8526 : forall X1:term, auto_testable_old X1 -> auto_testable_old (p X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_5130 X1 A1). clear  A1. intros. apply trans_testable_old_p_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_8527 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6768 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_dec_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8528 : forall X1:term, auto_testable_current (p X1) -> auto_testable_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_633 X1 H);  intros.
  apply (rem_5134 X1);  tauto.
Qed.

Remark rem_8529 : forall X1 X2:term, auto___def_2 X2 -> auto_agent X2 -> auto_knows_old X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_276 X1).
Qed.

Remark rem_8530 : forall X1 X2:term, auto_agent X2 -> auto_knows_old X1 -> auto___def_2 X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_2 X2 -> auto_agent X2 -> auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_8529 X1 X2).
Qed.

Remark rem_8531 : forall X1 X2:term, auto___def_1 X2 X1 -> auto___def_2 X2 -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1117 X2 X1 H);  intros.
  apply (rem_8530 X1 X2);  tauto.
Qed.

Remark rem_8532 : auto_agent i. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans_agent_i_1;  tauto.
 tauto.
Qed.

Remark rem_8533 : forall X1 X2:term, auto___def_62 X2 -> auto___def_66 X2 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_8534 : forall X1 X2:term, auto___def_62 X2 -> auto_knows_current X1 -> auto___def_66 X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_66 X2 -> auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_8533 X1 X2).
Qed.

Remark rem_8535 : forall X1 X2:term, auto___def_65 X2 X1 -> auto___def_66 X2 -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_340 X2 X1 H);  intros.
  apply (rem_8534 X1 X2);  tauto.
Qed.

Remark rem_8536 : (forall X:term, auto___def_59 X -> auto___def_51 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_59_p__def_51.  tauto.
Defined.

Remark rem_8537 : (forall X:term, auto___def_59 X -> auto___def_51 X)
    -> auto___def_51 pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_59_p__def_51.  case (rem_8536 epsilon_m__def_59_p__def_51). clear  epsilon_m__def_59_p__def_51. intros. apply trans___def_51_pub_1;  tauto.
 clear  epsilon_m__def_59_p__def_51. tauto.
Defined.

Remark rem_8538 : auto___def_59 pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8539 : (forall X:term, auto___def_59 X -> auto___def_51 X)
    -> auto___def_59 pub -> auto___def_51 pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_59_p__def_51. intro H. intros.
  elim (rem_8538 H);  intros.
  apply (rem_8537 epsilon_m__def_59_p__def_51);  tauto.
Defined.

Remark rem_8540 : forall X1 X2:term, auto___def_59 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8541 : forall X1 X2:term, auto___def_59 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8542 : forall X1 X2:term, auto___def_59 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8543 : auto___def_59 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8544 : forall X1 X2:term, auto___def_59 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8545 : forall X1 X2:term, auto___def_59 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8546 : forall X1 X2:term, auto___def_59 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8547 : forall X1:term, auto___def_59 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8548 : forall X1 X2:term, auto___def_59 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8549 : forall X1 X2:term, auto___def_59 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8550 : auto___def_59 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8551 : auto___def_59 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8552 : forall X1 X2:term, auto___def_59 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8553 : forall X1 X2:term, auto___def_59 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8554 : forall X1 X2:term, auto___def_59 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8555 : forall X1 X2:term, auto___def_59 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8556 : forall X1:term, auto___def_59 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8557 : auto___def_59 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8558 : forall X1 X2:term, auto___def_59 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8559 : auto___def_59 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8560 : auto___def_59 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8561 : auto___def_59 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8562 : forall X1 X2:term, auto___def_59 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8563 : forall X1 X2:term, auto___def_59 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8564 : forall X1:term, auto___def_59 X1 -> auto___def_51 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_59_p__def_51 1.
  intro X. case X.
   intro H. elim (rem_8550  H).
   intro H. elim (rem_8543  H).
  intros X1 X2. intro H. elim (rem_8555 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8540 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8553 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8554 X1 X2 H).
   intro H. elim (rem_8559  H).
  intros X1 X2. intro H. elim (rem_8563 X1 X2 H).
   intro H. elim (rem_8560  H).
  intros X1 X2. intro H. elim (rem_8562 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8544 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8541 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8552 X1 X2 H).
  intros X1. intro H. elim (rem_8547 X1 H).
  intros X1 X2. intro H. elim (rem_8549 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8548 X1 X2 H).
   intro H. elim (rem_8551  H).
  exact (rem_8539 epsilon_m__def_59_p__def_51 ).
  intros X1 X2. intro H. elim (rem_8546 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8545 X1 X2 H).
  intros X1. intro H. elim (rem_8556 X1 H).
   intro H. elim (rem_8561  H).
  intros X1 X2. intro H. elim (rem_8558 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8542 X1 X2 H).
   intro H. elim (rem_8557  H).
Qed.

Remark rem_8565 : forall X1 X2:term, auto___def_59 X1 -> auto___type_15 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_59 X1 -> auto___def_51 X1). tauto. exact (rem_8564 X1).
Qed.

Remark rem_8566 : (forall X:term, auto___type_15 X -> auto_agent X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_15_pagent.  tauto.
Defined.

Remark rem_8567 : (forall X:term, auto___type_15 X -> auto_agent X)
    -> auto_agent i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_15_pagent.  case (rem_8566 epsilon_m__type_15_pagent). clear  epsilon_m__type_15_pagent. intros. apply trans_agent_i_1;  tauto.
 clear  epsilon_m__type_15_pagent. tauto.
Defined.

Remark rem_8568 : auto___type_15 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8569 : (forall X:term, auto___type_15 X -> auto_agent X)
    -> auto___type_15 i -> auto_agent i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_15_pagent. intro H. intros.
  elim (rem_8568 H);  intros.
  apply (rem_8567 epsilon_m__type_15_pagent);  tauto.
Defined.

Remark rem_8570 : forall X1 X2:term, auto___type_15 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8571 : forall X1 X2:term, auto___type_15 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8572 : forall X1 X2:term, auto___type_15 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8573 : auto___type_15 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8574 : forall X1 X2:term, auto___type_15 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8575 : forall X1 X2:term, auto___type_15 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8576 : forall X1 X2:term, auto___type_15 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8577 : forall X1:term, auto___type_15 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8578 : auto___type_15 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8579 : forall X1 X2:term, auto___type_15 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8580 : forall X1 X2:term, auto___type_15 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8581 : auto___type_15 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8582 : auto___type_15 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8583 : forall X1 X2:term, auto___type_15 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8584 : forall X1 X2:term, auto___type_15 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8585 : forall X1 X2:term, auto___type_15 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8586 : forall X1 X2:term, auto___type_15 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8587 : forall X1:term, auto___type_15 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8588 : auto___type_15 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8589 : forall X1 X2:term, auto___type_15 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8590 : auto___type_15 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8591 : auto___type_15 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8592 : forall X1 X2:term, auto___type_15 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8593 : forall X1 X2:term, auto___type_15 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8594 : forall X2:term, auto___type_15 X2 -> auto_agent X2. (* Induct. *)
Proof.
  fix epsilon_m__type_15_pagent 1.
  intro X. case X.
   intro H. elim (rem_8581  H).
   intro H. elim (rem_8573  H).
  intros X1 X2. intro H. elim (rem_8586 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8570 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8584 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8585 X1 X2 H).
  exact (rem_8569 epsilon_m__type_15_pagent ).
  intros X1 X2. intro H. elim (rem_8593 X1 X2 H).
   intro H. elim (rem_8590  H).
  intros X1 X2. intro H. elim (rem_8592 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8574 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8571 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8583 X1 X2 H).
  intros X1. intro H. elim (rem_8577 X1 H).
  intros X1 X2. intro H. elim (rem_8580 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8579 X1 X2 H).
   intro H. elim (rem_8582  H).
   intro H. elim (rem_8578  H).
  intros X1 X2. intro H. elim (rem_8576 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8575 X1 X2 H).
  intros X1. intro H. elim (rem_8587 X1 H).
   intro H. elim (rem_8591  H).
  intros X1 X2. intro H. elim (rem_8589 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8572 X1 X2 H).
   intro H. elim (rem_8588  H).
Qed.

Remark rem_8595 : forall X1 X2:term, auto___def_59 X1 -> auto___type_15 X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_15 X2 -> auto_agent X2). tauto. exact (rem_8594 X2).
Qed.

Remark rem_8596 : forall X1 X2:term, auto___def_59 X1 -> auto___type_15 X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_8565 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_8595 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_8597 : forall X1 X2:term, auto___def_59 X1 -> auto___type_15 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_8596 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_old_key_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8598 : forall X1 X2:term, auto___type_15 X2 -> auto___def_59 X1 -> auto_testable_old (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_59 X1 -> auto___type_15 X2 -> auto_testable_old (key X1 X2)). tauto. exact (rem_8597 X1 X2).
Qed.

Remark rem_8599 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8600 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_8599 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8601 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8602 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_8601 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8603 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_8600 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_8602 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8604 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8603 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_1;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8605 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8606 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_8605 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8607 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8608 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_8607 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8609 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_8606 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_8608 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8610 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8609 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_2;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8611 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8612 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_8611 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8613 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8614 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_8613 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8615 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_8612 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_8614 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8616 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8615 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_3;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8617 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___type_26 X1 -> auto___type_26 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8618 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_26 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___type_26 X1 -> auto___type_26 X1). tauto. exact (rem_8617 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8619 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_111 X2 -> auto___def_111 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8620 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___def_111 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_111 X2 -> auto___def_111 X2). tauto. exact (rem_8619 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8621 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> (auto___type_26 X1 /\ auto___def_111 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___type_26 X1). 2:apply (rem_8618 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_111 X2). 2:apply (rem_8620 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8622 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 X1 -> auto___def_111 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8621 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_4;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8623 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8624 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_8623 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8625 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8626 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_8625 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8627 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_8624 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_8626 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8628 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8627 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_5;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8629 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8630 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_8629 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8631 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8632 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_8631 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8633 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_8630 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_8632 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8634 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8633 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_6;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8635 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8636 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_8635 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8637 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8638 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_8637 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8639 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_8636 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_8638 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8640 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8639 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_7;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8641 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___type_27 X1 -> auto___type_27 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8642 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_27 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___type_27 X1 -> auto___type_27 X1). tauto. exact (rem_8641 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8643 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_113 X2 -> auto___def_113 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8644 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___def_113 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_113 X2 -> auto___def_113 X2). tauto. exact (rem_8643 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8645 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> (auto___type_27 X1 /\ auto___def_113 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___type_27 X1). 2:apply (rem_8642 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_113 X2). 2:apply (rem_8644 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8646 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_27 X1 -> auto___def_113 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8645 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_8;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8647 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8648 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_8647 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8649 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8650 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_8649 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8651 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_8648 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_8650 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8652 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8651 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_9;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8653 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8654 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_8653 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8655 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8656 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_8655 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8657 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_8654 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_8656 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8658 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8657 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_10;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8659 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8660 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_8659 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8661 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8662 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_8661 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8663 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_8660 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_8662 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8664 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_26 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8663 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_crypt_11;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8665 : forall X1 X2:term, auto___type_28 (crypt X1 X2) -> or_11
    (auto___def_17 X1 /\ auto___type_2 X2)
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___def_21 X1 /\ auto___def_22 X2)
    (auto___type_26 X1 /\ auto___def_111 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___type_22 X1 /\ auto___def_104 X2)
    (auto___def_88 X1 /\ auto___def_89 X2)
    (auto___type_27 X1 /\ auto___def_113 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto___def_84 X1 /\ auto___def_85 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_11_intro_1; tauto.
  intros. apply or_11_intro_2; tauto.
  intros. apply or_11_intro_3; tauto.
  intros. apply or_11_intro_4; tauto.
  intros. apply or_11_intro_5; tauto.
  intros. apply or_11_intro_6; tauto.
  intros. apply or_11_intro_7; tauto.
  intros. apply or_11_intro_8; tauto.
  intros. apply or_11_intro_9; tauto.
  intros. apply or_11_intro_10; tauto.
  intros. apply or_11_intro_11; tauto.
Qed.

Remark rem_8666 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_28 (crypt X1 X2) -> auto___type_26 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_8665 X1 X2 H);  intros.
  apply (rem_8604 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8610 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8616 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8622 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8628 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8634 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8640 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8646 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8652 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8658 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8664 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_8667 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26.  tauto.
Defined.

Remark rem_8668 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> auto___type_26 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26.  case (rem_8667 epsilon_m__type_28_p__type_26). clear  epsilon_m__type_28_p__type_26. intros. apply trans___type_26_bob_1;  tauto.
 clear  epsilon_m__type_28_p__type_26. tauto.
Defined.

Remark rem_8669 : auto___type_28 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8670 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> auto___type_28 bob -> auto___type_26 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intro H. intros.
  elim (rem_8669 H);  intros.
  apply (rem_8668 epsilon_m__type_28_p__type_26);  tauto.
Defined.

Remark rem_8671 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.  case (rem_8667 epsilon_m__type_28_p__type_26). clear  epsilon_m__type_28_p__type_26. intros. apply trans___type_26_noncea_old_1;  tauto.
 clear  epsilon_m__type_28_p__type_26. tauto.
Defined.

Remark rem_8672 : forall X1 X2:term, auto___type_28 (noncea_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8673 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_28 (noncea_old X1 X2) -> auto___type_26 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_8672 X1 X2 H);  intros.
  apply (rem_8671 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_8674 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8675 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_8674 epsilon_m__type_28_p__type_26 X1);  assumption.
  tauto.
Defined.

Remark rem_8676 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto___type_26 (r_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1.
  case (rem_8675 epsilon_m__type_28_p__type_26 X1 A1). clear  epsilon_m__type_28_p__type_26 A1. intros. apply trans___type_26_r_old_1;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1. tauto.
Defined.

Remark rem_8677 : forall X1 X2:term, auto___type_28 (r_old X1 X2) -> or_1
    (auto_knows_old X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8678 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_28 (r_old X1 X2) -> auto___type_26 (r_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_8677 X1 X2 H);  intros.
  apply (rem_8676 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_8679 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8680 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto_testable_current X1 -> auto_testable_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1. intros A1.
  cut (auto_testable_current X1). 2:apply (rem_8679 epsilon_m__type_28_p__type_26 X1);  assumption.
  tauto.
Defined.

Remark rem_8681 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto_testable_current X1 -> auto___type_26 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1. intros A1.
  case (rem_8680 epsilon_m__type_28_p__type_26 X1 A1). clear  epsilon_m__type_28_p__type_26 A1. intros. apply trans___type_26_p_1;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1. tauto.
Defined.

Remark rem_8682 : forall X1:term, auto___type_28 (p X1) -> or_1
    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8683 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___type_28 (p X1) -> auto___type_26 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1. intro H. intros.
  elim (rem_8682 X1 H);  intros.
  apply (rem_8681 epsilon_m__type_28_p__type_26 X1);  tauto.
Defined.

Remark rem_8684 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.  case (rem_8667 epsilon_m__type_28_p__type_26). clear  epsilon_m__type_28_p__type_26. intros. apply trans___type_26_passwd_old_1;  tauto.
 clear  epsilon_m__type_28_p__type_26. tauto.
Defined.

Remark rem_8685 : forall X1 X2:term, auto___type_28 (passwd_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8686 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_28 (passwd_old X1 X2) -> auto___type_26 (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_8685 X1 X2 H);  intros.
  apply (rem_8684 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_8687 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> auto___type_26 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26.  case (rem_8667 epsilon_m__type_28_p__type_26). clear  epsilon_m__type_28_p__type_26. intros. apply trans___type_26_alice_1;  tauto.
 clear  epsilon_m__type_28_p__type_26. tauto.
Defined.

Remark rem_8688 : auto___type_28 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8689 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> auto___type_28 alice -> auto___type_26 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intro H. intros.
  elim (rem_8688 H);  intros.
  apply (rem_8687 epsilon_m__type_28_p__type_26);  tauto.
Defined.

Remark rem_8690 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_26 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.  case (rem_8667 epsilon_m__type_28_p__type_26). clear  epsilon_m__type_28_p__type_26. intros. apply trans___type_26_nonceb_old_1;  tauto.
 clear  epsilon_m__type_28_p__type_26. tauto.
Defined.

Remark rem_8691 : forall X1 X2:term, auto___type_28 (nonceb_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8692 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_28 (nonceb_old X1 X2) -> auto___type_26 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_8691 X1 X2 H);  intros.
  apply (rem_8690 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_8693 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_testable_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto_testable_current X1 -> auto_testable_current X1). tauto. exact (rem_8679 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8694 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_8625 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8695 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> (auto_testable_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto_testable_current X1). 2:apply (rem_8693 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_8694 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8696 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_26 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8695 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_dec_1;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8697 : forall X1 X2:term, auto___type_28 (dec X1 X2) -> or_1
    (auto_testable_current X1 /\ auto_knows_current X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8698 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_28 (dec X1 X2) -> auto___type_26 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_8697 X1 X2 H);  intros.
  apply (rem_8696 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_8699 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8700 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_8699 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8701 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8702 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_8701 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8703 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_8700 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_8702 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8704 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_26 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8703 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_enc_1;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8705 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto_knows_current X2 -> auto___type_26 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8695 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_enc_2;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8706 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8707 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_8706 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8708 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8709 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_8708 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8710 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_8707 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_8709 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8711 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_26 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8710 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_enc_3;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8712 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8713 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_8712 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8714 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8715 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_8714 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8716 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_8713 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_8715 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8717 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_26 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8716 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_enc_4;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8718 : forall X1 X2:term, auto___type_28 (enc X1 X2) -> or_4
    (auto___def_71 X1 /\ auto___def_72 X2)
    (auto_testable_current X1 /\ auto_knows_current X2)
    (auto___def_79 X1 /\ auto___def_80 X2)
    (auto___def_75 X1 /\ auto___def_76 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_8719 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_28 (enc X1 X2) -> auto___type_26 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_8718 X1 X2 H);  intros.
  apply (rem_8704 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8705 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8711 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8717 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_8720 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8721 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto_testable_current X2 -> auto_testable_current X2 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X2. intros A1.
  cut (auto_testable_current X2). 2:apply (rem_8720 epsilon_m__type_28_p__type_26 X2);  assumption.
  tauto.
Defined.

Remark rem_8722 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X2 -> auto___type_26 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1.
  case (rem_8721 epsilon_m__type_28_p__type_26 X2 A1). clear  epsilon_m__type_28_p__type_26 A1. intros. apply trans___type_26_cons_1;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1. tauto.
Defined.

Remark rem_8723 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto_testable_current X1 -> auto___type_26 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1.
  case (rem_8680 epsilon_m__type_28_p__type_26 X1 A1). clear  epsilon_m__type_28_p__type_26 A1. intros. apply trans___type_26_cons_2;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1. tauto.
Defined.

Remark rem_8724 : forall X1 X2:term, auto___type_28 (cons X1 X2) -> or_2
    (auto_testable_current X2)    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_8725 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_28 (cons X1 X2) -> auto___type_26 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_8724 X1 X2 H);  intros.
  apply (rem_8722 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8723 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_8726 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto_testable_current X1 -> auto___type_26 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1. intros A1.
  case (rem_8680 epsilon_m__type_28_p__type_26 X1 A1). clear  epsilon_m__type_28_p__type_26 A1. intros. apply trans___type_26_s_1;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1. tauto.
Defined.

Remark rem_8727 : forall X1:term, auto___type_28 (s X1) -> or_1
    (auto_testable_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8728 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___type_28 (s X1) -> auto___type_26 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1. intro H. intros.
  elim (rem_8727 X1 H);  intros.
  apply (rem_8726 epsilon_m__type_28_p__type_26 X1);  tauto.
Defined.

Remark rem_8729 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> auto___type_26 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26.  case (rem_8667 epsilon_m__type_28_p__type_26). clear  epsilon_m__type_28_p__type_26. intros. apply trans___type_26_i_1;  tauto.
 clear  epsilon_m__type_28_p__type_26. tauto.
Defined.

Remark rem_8730 : auto___type_28 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8731 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> auto___type_28 i -> auto___type_26 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intro H. intros.
  elim (rem_8730 H);  intros.
  apply (rem_8729 epsilon_m__type_28_p__type_26);  tauto.
Defined.

Remark rem_8732 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> auto___type_26 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26.  case (rem_8667 epsilon_m__type_28_p__type_26). clear  epsilon_m__type_28_p__type_26. intros. apply trans___type_26_nil_1;  tauto.
 clear  epsilon_m__type_28_p__type_26. tauto.
Defined.

Remark rem_8733 : auto___type_28 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8734 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> auto___type_28 nil -> auto___type_26 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intro H. intros.
  elim (rem_8733 H);  intros.
  apply (rem_8732 epsilon_m__type_28_p__type_26);  tauto.
Defined.

Remark rem_8735 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> auto___type_26 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26.  case (rem_8667 epsilon_m__type_28_p__type_26). clear  epsilon_m__type_28_p__type_26. intros. apply trans___type_26_server_1;  tauto.
 clear  epsilon_m__type_28_p__type_26. tauto.
Defined.

Remark rem_8736 : auto___type_28 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8737 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> auto___type_28 server -> auto___type_26 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intro H. intros.
  elim (rem_8736 H);  intros.
  apply (rem_8735 epsilon_m__type_28_p__type_26);  tauto.
Defined.

Remark rem_8738 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_119 X1 -> auto___def_119 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8739 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___def_119 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_119 X1 -> auto___def_119 X1). tauto. exact (rem_8738 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8740 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___type_31 X2 -> auto___type_31 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8741 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___type_31 X2 -> auto___type_31 X2). tauto. exact (rem_8740 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8742 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> (auto___def_119 X1 /\ auto___type_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_119 X1). 2:apply (rem_8739 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___type_31 X2). 2:apply (rem_8741 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8743 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_119 X1 -> auto___type_31 X2 -> auto___type_26 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8742 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_key_1;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8744 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_114 X1 -> auto___def_114 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8745 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_114 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_114 X1 -> auto___def_114 X1). tauto. exact (rem_8744 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8746 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_66 X2 -> auto___def_66 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8747 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___def_66 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_66 X2 -> auto___def_66 X2). tauto. exact (rem_8746 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8748 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> (auto___def_114 X1 /\ auto___def_66 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_114 X1). 2:apply (rem_8745 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_66 X2). 2:apply (rem_8747 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8749 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_114 X1 -> auto___def_66 X2 -> auto___type_26 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8748 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_key_2;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8750 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8751 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_8750 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8752 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8753 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_8752 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8754 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_8751 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_8753 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8755 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_26 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8754 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_key_3;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8756 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8757 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_8756 epsilon_m__type_28_p__type_26 X1).
Defined.

Remark rem_8758 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8759 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_8758 epsilon_m__type_28_p__type_26 X2).
Defined.

Remark rem_8760 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_8757 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_8759 epsilon_m__type_28_p__type_26 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8761 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_26 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intros A1 A2.
  case (rem_8760 epsilon_m__type_28_p__type_26 X1 X2 A1 A2). clear  epsilon_m__type_28_p__type_26 A1 A2. intros. apply trans___type_26_key_4;  tauto.
 clear  epsilon_m__type_28_p__type_26 A1 A2. tauto.
Defined.

Remark rem_8762 : forall X1 X2:term, auto___type_28 (key X1 X2) -> or_4
    (auto___def_119 X1 /\ auto___type_31 X2)
    (auto___def_114 X1 /\ auto___def_66 X2)
    (auto___def_51 X1 /\ auto_agent X2)
    (auto___def_12 X1 /\ auto___def_13 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_8763 : (forall X:term, auto___type_28 X -> auto___type_26 X)
    -> forall X1 X2:term, auto___type_28 (key X1 X2) -> auto___type_26 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_28_p__type_26. intros X1 X2. intro H. intros.
  elim (rem_8762 X1 X2 H);  intros.
  apply (rem_8743 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8749 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8755 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
  apply (rem_8761 epsilon_m__type_28_p__type_26 X1 X2);  tauto.
Defined.

Remark rem_8764 : forall X1 X2:term, auto___type_28 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8765 : forall X1 X2:term, auto___type_28 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8766 : forall X1 X2:term, auto___type_28 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8767 : auto___type_28 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8768 : forall X1 X2:term, auto___type_28 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8769 : auto___type_28 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8770 : auto___type_28 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8771 : forall X1 X2:term, auto___type_28 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8772 : forall X1 X2:term, auto___type_28 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8773 : forall X1:term, auto___type_28 X1 -> auto___type_26 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_28_p__type_26 1.
  intro X. case X.
  exact (rem_8689 epsilon_m__type_28_p__type_26 ).
  exact (rem_8670 epsilon_m__type_28_p__type_26 ).
  intros X1 X2;  exact (rem_8725 epsilon_m__type_28_p__type_26 X1 X2).
  intros X1 X2;  exact (rem_8666 epsilon_m__type_28_p__type_26 X1 X2).
  intros X1 X2;  exact (rem_8698 epsilon_m__type_28_p__type_26 X1 X2).
  intros X1 X2;  exact (rem_8719 epsilon_m__type_28_p__type_26 X1 X2).
  exact (rem_8731 epsilon_m__type_28_p__type_26 ).
  intros X1 X2;  exact (rem_8763 epsilon_m__type_28_p__type_26 X1 X2).
  exact (rem_8734 epsilon_m__type_28_p__type_26 ).
  intros X1 X2. intro H. elim (rem_8772 X1 X2 H).
  intros X1 X2;  exact (rem_8673 epsilon_m__type_28_p__type_26 X1 X2).
  intros X1 X2. intro H. elim (rem_8764 X1 X2 H).
  intros X1 X2;  exact (rem_8692 epsilon_m__type_28_p__type_26 X1 X2).
  intros X1;  exact (rem_8683 epsilon_m__type_28_p__type_26 X1).
  intros X1 X2. intro H. elim (rem_8768 X1 X2 H).
  intros X1 X2;  exact (rem_8686 epsilon_m__type_28_p__type_26 X1 X2).
   intro H. elim (rem_8769  H).
   intro H. elim (rem_8767  H).
  intros X1 X2. intro H. elim (rem_8766 X1 X2 H).
  intros X1 X2;  exact (rem_8678 epsilon_m__type_28_p__type_26 X1 X2).
  intros X1;  exact (rem_8728 epsilon_m__type_28_p__type_26 X1).
  exact (rem_8737 epsilon_m__type_28_p__type_26 ).
  intros X1 X2. intro H. elim (rem_8771 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8765 X1 X2 H).
   intro H. elim (rem_8770  H).
Qed.

Remark rem_8774 : forall X1 X2:term, auto___def_115 X2 -> auto___type_28 X1 -> auto___type_26 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_28 X1 -> auto___type_26 X1). tauto. exact (rem_8773 X1).
Qed.

Remark rem_8775 : forall X1 X2:term, auto___def_115 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8776 : forall X1 X2:term, auto___def_115 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8777 : forall X1 X2:term, auto___def_115 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8778 : auto___def_115 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8779 : forall X1 X2:term, auto___def_115 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8780 : forall X1 X2:term, auto___def_115 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8781 : forall X1 X2:term, auto___def_115 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8782 : forall X1:term, auto___def_115 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8783 : auto___def_115 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8784 : forall X1 X2:term, auto___def_115 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8785 : forall X1 X2:term, auto___def_115 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8786 : auto___def_115 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8787 : auto___def_115 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8788 : forall X1 X2:term, auto___def_115 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8789 : forall X1 X2:term, auto___def_115 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8790 : forall X1 X2:term, auto___def_115 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8791 : forall X1 X2:term, auto___def_115 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8792 : forall X1:term, auto___def_115 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8793 : auto___def_115 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8794 : forall X1 X2:term, auto___def_115 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8795 : auto___def_115 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8796 : auto___def_115 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8797 : auto___def_115 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8798 : forall X1 X2:term, auto___def_115 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8799 : forall X1 X2:term, auto___def_115 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8800 : forall X2:term, auto___def_115 X2 -> auto___def_111 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_115_p__def_111 1.
  intro X. case X.
   intro H. elim (rem_8786  H).
   intro H. elim (rem_8778  H).
  intros X1 X2. intro H. elim (rem_8791 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8775 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8789 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8790 X1 X2 H).
   intro H. elim (rem_8795  H).
  intros X1 X2. intro H. elim (rem_8799 X1 X2 H).
   intro H. elim (rem_8796  H).
  intros X1 X2. intro H. elim (rem_8798 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8779 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8776 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8788 X1 X2 H).
  intros X1. intro H. elim (rem_8782 X1 H).
  intros X1 X2. intro H. elim (rem_8785 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8784 X1 X2 H).
   intro H. elim (rem_8787  H).
   intro H. elim (rem_8783  H).
  intros X1 X2. intro H. elim (rem_8781 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8780 X1 X2 H).
  intros X1. intro H. elim (rem_8792 X1 H).
   intro H. elim (rem_8797  H).
  intros X1 X2. intro H. elim (rem_8794 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8777 X1 X2 H).
   intro H. elim (rem_8793  H).
Qed.

Remark rem_8801 : forall X1 X2:term, auto___def_115 X2 -> auto___type_28 X1 -> auto___def_111 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_115 X2 -> auto___def_111 X2). tauto. exact (rem_8800 X2).
Qed.

Remark rem_8802 : forall X1 X2:term, auto___def_115 X2 -> auto___type_28 X1 -> (auto___type_26 X1 /\ auto___def_111 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_26 X1). 2:apply (rem_8774 X1 X2);  assumption.
  cut (auto___def_111 X2). 2:apply (rem_8801 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_8803 : forall X1 X2:term, auto___def_115 X2 -> auto___type_28 X1 -> auto_testable_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_8802 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_current_crypt_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8804 : forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_8805 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_8804 X1).
Qed.

Remark rem_8806 : forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_8807 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_8806 X2).
Qed.

Remark rem_8808 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_8805 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_8807 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_8809 : forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_8808 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8810 : forall X1 X2:term, auto___def_25 X2 -> auto___def_24 X1 -> auto_knows_old (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_25 X2 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_8809 X1 X2).
Qed.

Remark rem_8811 : forall X1 X2:term, auto___def_64 X2 -> auto_agent X2 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_8812 : forall X1 X2:term, auto_agent X2 -> auto_knows_current X1 -> auto___def_64 X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_64 X2 -> auto_agent X2 -> auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_8811 X1 X2).
Qed.

Remark rem_8813 : forall X1 X2:term, auto___def_13 X2 -> auto___def_64 X2 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_288 X1).
Qed.

Remark rem_8814 : forall X1 X2:term, auto___def_13 X2 -> auto_knows_current X1 -> auto___def_64 X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_64 X2 -> auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_8813 X1 X2).
Qed.

Remark rem_8815 : (forall X:term, auto___def_13 X -> auto___def_64 X -> False)
    -> forall X1 X2:term, auto___def_64 (session_old X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_13_m__def_64. intros X1 X2. intro H. intros.
  elim (rem_6199 X1 X2 H);  intros.
Defined.

Remark rem_8816 : (forall X:term, auto___def_13 X -> auto___def_64 X -> False)
    -> forall X1 X2:term, auto___def_13 (session_old X1 X2) -> auto___def_64 (session_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_13_m__def_64. intros X1 X2. intro H. intros.
  elim (rem_1761 X1 X2 H);  intros.
  apply (rem_8815 epsilon_m__def_13_m__def_64 X1 X2);  tauto.
Defined.

Remark rem_8817 : forall X1:term, auto___def_13 X1 -> auto___def_64 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_13_m__def_64 1.
  intro X. case X.
   intro H. elim (rem_1773  H).
   intro H. elim (rem_1765  H).
  intros X1 X2. intro H. elim (rem_1778 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1763 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1776 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1777 X1 X2 H).
   intro H. elim (rem_1782  H).
  intros X1 X2. intro H. elim (rem_1786 X1 X2 H).
   intro H. elim (rem_1783  H).
  intros X1 X2. intro H. elim (rem_1785 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1766 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1764 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1775 X1 X2 H).
  intros X1. intro H. elim (rem_1769 X1 H).
  intros X1 X2. intro H. elim (rem_1772 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1771 X1 X2 H).
   intro H. elim (rem_1774  H).
   intro H. elim (rem_1770  H).
  intros X1 X2. intro H. elim (rem_1768 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1767 X1 X2 H).
  intros X1. intro H. elim (rem_1779 X1 H).
   intro H. elim (rem_1784  H).
  intros X1 X2. intro H. elim (rem_1781 X1 X2 H).
  intros X1 X2;  exact (rem_8816 epsilon_m__def_13_m__def_64 X1 X2).
   intro H. elim (rem_1780  H).
Qed.

Remark rem_8818 : forall X1 X2:term, auto___def_13 X2 -> auto___def_17 X1 -> auto___def_64 X2 -> auto_knows_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_8817 X2)). tauto.
Qed.

Remark rem_8819 : forall X1 X2:term, auto___def_63 X2 X1 -> auto___def_64 X2 -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_4272 X2 X1 H);  intros.
  apply (rem_8812 X1 X2);  tauto.
  apply (rem_8814 X1 X2);  tauto.
  apply (rem_8818 X1 X2);  tauto.
Qed.

Remark rem_8820 : auto_agent alice. (* Deduce positive atom. *)
Proof.
   case rem_855. intros. apply trans_agent_alice_1;  tauto.
 tauto.
Qed.

Remark rem_8821 : forall X1 X2:term, auto_knows_current (cons X2 X1) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1034 X2 X1 H);  intros.
  apply (rem_5004 X1 X2);  tauto.
Qed.

Remark rem_8822 : (forall X:term, auto___def_118 X -> auto___def_51 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_118_p__def_51.  tauto.
Defined.

Remark rem_8823 : (forall X:term, auto___def_118 X -> auto___def_51 X)
    -> auto___def_51 pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_118_p__def_51.  case (rem_8822 epsilon_m__def_118_p__def_51). clear  epsilon_m__def_118_p__def_51. intros. apply trans___def_51_pub_1;  tauto.
 clear  epsilon_m__def_118_p__def_51. tauto.
Defined.

Remark rem_8824 : auto___def_118 pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8825 : (forall X:term, auto___def_118 X -> auto___def_51 X)
    -> auto___def_118 pub -> auto___def_51 pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_118_p__def_51. intro H. intros.
  elim (rem_8824 H);  intros.
  apply (rem_8823 epsilon_m__def_118_p__def_51);  tauto.
Defined.

Remark rem_8826 : forall X1 X2:term, auto___def_118 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8827 : forall X1 X2:term, auto___def_118 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8828 : forall X1 X2:term, auto___def_118 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8829 : auto___def_118 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8830 : forall X1 X2:term, auto___def_118 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8831 : forall X1 X2:term, auto___def_118 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8832 : forall X1 X2:term, auto___def_118 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8833 : forall X1:term, auto___def_118 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8834 : forall X1 X2:term, auto___def_118 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8835 : forall X1 X2:term, auto___def_118 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8836 : auto___def_118 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8837 : auto___def_118 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8838 : forall X1 X2:term, auto___def_118 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8839 : forall X1 X2:term, auto___def_118 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8840 : forall X1 X2:term, auto___def_118 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8841 : forall X1 X2:term, auto___def_118 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8842 : forall X1:term, auto___def_118 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8843 : auto___def_118 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8844 : forall X1 X2:term, auto___def_118 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8845 : auto___def_118 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8846 : auto___def_118 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8847 : auto___def_118 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8848 : forall X1 X2:term, auto___def_118 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8849 : forall X1 X2:term, auto___def_118 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8850 : forall X1:term, auto___def_118 X1 -> auto___def_51 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_118_p__def_51 1.
  intro X. case X.
   intro H. elim (rem_8836  H).
   intro H. elim (rem_8829  H).
  intros X1 X2. intro H. elim (rem_8841 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8826 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8839 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8840 X1 X2 H).
   intro H. elim (rem_8845  H).
  intros X1 X2. intro H. elim (rem_8849 X1 X2 H).
   intro H. elim (rem_8846  H).
  intros X1 X2. intro H. elim (rem_8848 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8830 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8827 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8838 X1 X2 H).
  intros X1. intro H. elim (rem_8833 X1 H).
  intros X1 X2. intro H. elim (rem_8835 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8834 X1 X2 H).
   intro H. elim (rem_8837  H).
  exact (rem_8825 epsilon_m__def_118_p__def_51 ).
  intros X1 X2. intro H. elim (rem_8832 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8831 X1 X2 H).
  intros X1. intro H. elim (rem_8842 X1 H).
   intro H. elim (rem_8847  H).
  intros X1 X2. intro H. elim (rem_8844 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8828 X1 X2 H).
   intro H. elim (rem_8843  H).
Qed.

Remark rem_8851 : forall X1 X2:term, auto___def_118 X1 -> auto___type_30 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_118 X1 -> auto___def_51 X1). tauto. exact (rem_8850 X1).
Qed.

Remark rem_8852 : (forall X:term, auto___type_30 X -> auto_agent X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_30_pagent.  tauto.
Defined.

Remark rem_8853 : (forall X:term, auto___type_30 X -> auto_agent X)
    -> auto_agent i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_30_pagent.  case (rem_8852 epsilon_m__type_30_pagent). clear  epsilon_m__type_30_pagent. intros. apply trans_agent_i_1;  tauto.
 clear  epsilon_m__type_30_pagent. tauto.
Defined.

Remark rem_8854 : auto___type_30 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8855 : (forall X:term, auto___type_30 X -> auto_agent X)
    -> auto___type_30 i -> auto_agent i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_30_pagent. intro H. intros.
  elim (rem_8854 H);  intros.
  apply (rem_8853 epsilon_m__type_30_pagent);  tauto.
Defined.

Remark rem_8856 : forall X1 X2:term, auto___type_30 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8857 : forall X1 X2:term, auto___type_30 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8858 : forall X1 X2:term, auto___type_30 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8859 : auto___type_30 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8860 : forall X1 X2:term, auto___type_30 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8861 : forall X1 X2:term, auto___type_30 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8862 : forall X1 X2:term, auto___type_30 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8863 : forall X1:term, auto___type_30 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8864 : auto___type_30 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8865 : forall X1 X2:term, auto___type_30 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8866 : forall X1 X2:term, auto___type_30 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8867 : auto___type_30 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8868 : auto___type_30 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8869 : forall X1 X2:term, auto___type_30 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8870 : forall X1 X2:term, auto___type_30 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8871 : forall X1 X2:term, auto___type_30 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8872 : forall X1 X2:term, auto___type_30 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8873 : forall X1:term, auto___type_30 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8874 : auto___type_30 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8875 : forall X1 X2:term, auto___type_30 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8876 : auto___type_30 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8877 : auto___type_30 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8878 : forall X1 X2:term, auto___type_30 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8879 : forall X1 X2:term, auto___type_30 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_8880 : forall X2:term, auto___type_30 X2 -> auto_agent X2. (* Induct. *)
Proof.
  fix epsilon_m__type_30_pagent 1.
  intro X. case X.
   intro H. elim (rem_8867  H).
   intro H. elim (rem_8859  H).
  intros X1 X2. intro H. elim (rem_8872 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8856 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8870 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8871 X1 X2 H).
  exact (rem_8855 epsilon_m__type_30_pagent ).
  intros X1 X2. intro H. elim (rem_8879 X1 X2 H).
   intro H. elim (rem_8876  H).
  intros X1 X2. intro H. elim (rem_8878 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8860 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8857 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8869 X1 X2 H).
  intros X1. intro H. elim (rem_8863 X1 H).
  intros X1 X2. intro H. elim (rem_8866 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8865 X1 X2 H).
   intro H. elim (rem_8868  H).
   intro H. elim (rem_8864  H).
  intros X1 X2. intro H. elim (rem_8862 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8861 X1 X2 H).
  intros X1. intro H. elim (rem_8873 X1 H).
   intro H. elim (rem_8877  H).
  intros X1 X2. intro H. elim (rem_8875 X1 X2 H).
  intros X1 X2. intro H. elim (rem_8858 X1 X2 H).
   intro H. elim (rem_8874  H).
Qed.

Remark rem_8881 : forall X1 X2:term, auto___def_118 X1 -> auto___type_30 X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_30 X2 -> auto_agent X2). tauto. exact (rem_8880 X2).
Qed.

Remark rem_8882 : forall X1 X2:term, auto___def_118 X1 -> auto___type_30 X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_8851 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_8881 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_8883 : forall X1 X2:term, auto___def_118 X1 -> auto___type_30 X2 -> auto_testable_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_8882 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_current_key_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_8884 : forall X1 X2:term, auto___type_30 X2 -> auto___def_118 X1 -> auto_testable_current (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_118 X1 -> auto___type_30 X2 -> auto_testable_current (key X1 X2)). tauto. exact (rem_8883 X1 X2).
Qed.

Remark rem_8885 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_17 X1 -> auto___def_17 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8886 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___def_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_17 X1 -> auto___def_17 X1). tauto. exact (rem_8885 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8887 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___type_2 X2 -> auto___type_2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8888 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___type_2 X2 -> auto___type_2 X2). tauto. exact (rem_8887 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8889 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> (auto___def_17 X1 /\ auto___type_2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_17 X1). 2:apply (rem_8886 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___type_2 X2). 2:apply (rem_8888 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8890 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_17 X1 -> auto___type_2 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8889 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_crypt_1;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8891 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_36 X1 -> auto___def_36 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8892 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_36 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_36 X1 -> auto___def_36 X1). tauto. exact (rem_8891 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8893 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_37 X2 -> auto___def_37 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8894 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___def_37 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_37 X2). tauto. exact (rem_8893 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8895 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> (auto___def_36 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_36 X1). 2:apply (rem_8892 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_8894 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8896 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_36 X1 -> auto___def_37 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8895 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_crypt_2;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8897 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_21 X1 -> auto___def_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8898 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_21 X1 -> auto___def_21 X1). tauto. exact (rem_8897 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8899 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_22 X2 -> auto___def_22 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8900 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_8899 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8901 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> (auto___def_21 X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_21 X1). 2:apply (rem_8898 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_8900 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8902 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_21 X1 -> auto___def_22 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8901 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_crypt_3;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8903 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8904 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_8903 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8905 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8906 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_8905 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8907 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_8904 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_8906 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8908 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8907 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_crypt_4;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8909 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___type_22 X1 -> auto___type_22 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8910 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_22 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___type_22 X1 -> auto___type_22 X1). tauto. exact (rem_8909 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8911 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_104 X2 -> auto___def_104 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8912 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___def_104 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_104 X2 -> auto___def_104 X2). tauto. exact (rem_8911 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8913 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> (auto___type_22 X1 /\ auto___def_104 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___type_22 X1). 2:apply (rem_8910 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_104 X2). 2:apply (rem_8912 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8914 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_22 X1 -> auto___def_104 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8913 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_crypt_5;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8915 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_88 X1 -> auto___def_88 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8916 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_8915 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8917 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_89 X2 -> auto___def_89 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8918 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_89 X2 -> auto___def_89 X2). tauto. exact (rem_8917 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8919 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_8916 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_8918 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8920 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_89 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8919 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_crypt_6;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8921 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_24 X1 -> auto___def_24 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8922 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_24 X1 -> auto___def_24 X1). tauto. exact (rem_8921 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8923 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_25 X2 -> auto___def_25 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8924 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___def_25 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_25 X2 -> auto___def_25 X2). tauto. exact (rem_8923 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8925 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> (auto___def_24 X1 /\ auto___def_25 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_24 X1). 2:apply (rem_8922 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_25 X2). 2:apply (rem_8924 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8926 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_24 X1 -> auto___def_25 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8925 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_crypt_7;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8927 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___type_7 X1 -> auto___type_7 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8928 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_8927 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8929 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_44 X2 -> auto___def_44 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8930 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_8929 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8931 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> (auto___type_7 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_8928 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_8930 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8932 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_44 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8931 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_crypt_8;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8933 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8934 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_8933 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8935 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8936 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_8935 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8937 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_8934 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_8936 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8938 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___type_24 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8937 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_crypt_9;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8939 : forall X1 X2:term, auto___type_25 (crypt X1 X2) -> or_9
    (auto___def_17 X1 /\ auto___type_2 X2)
    (auto___def_36 X1 /\ auto___def_37 X2)
    (auto___def_21 X1 /\ auto___def_22 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___type_22 X1 /\ auto___def_104 X2)
    (auto___def_88 X1 /\ auto___def_89 X2)
    (auto___def_24 X1 /\ auto___def_25 X2)
    (auto___type_7 X1 /\ auto___def_44 X2)
    (auto___def_84 X1 /\ auto___def_85 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_9_intro_1; tauto.
  intros. apply or_9_intro_2; tauto.
  intros. apply or_9_intro_3; tauto.
  intros. apply or_9_intro_4; tauto.
  intros. apply or_9_intro_5; tauto.
  intros. apply or_9_intro_6; tauto.
  intros. apply or_9_intro_7; tauto.
  intros. apply or_9_intro_8; tauto.
  intros. apply or_9_intro_9; tauto.
Qed.

Remark rem_8940 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_25 (crypt X1 X2) -> auto___type_24 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_8939 X1 X2 H);  intros.
  apply (rem_8890 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8896 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8902 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8908 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8914 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8920 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8926 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8932 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8938 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_8941 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24.  tauto.
Defined.

Remark rem_8942 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> auto___type_24 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24.  case (rem_8941 epsilon_m__type_25_p__type_24). clear  epsilon_m__type_25_p__type_24. intros. apply trans___type_24_bob_1;  tauto.
 clear  epsilon_m__type_25_p__type_24. tauto.
Defined.

Remark rem_8943 : auto___type_25 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8944 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> auto___type_25 bob -> auto___type_24 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intro H. intros.
  elim (rem_8943 H);  intros.
  apply (rem_8942 epsilon_m__type_25_p__type_24);  tauto.
Defined.

Remark rem_8945 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_24 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.  case (rem_8941 epsilon_m__type_25_p__type_24). clear  epsilon_m__type_25_p__type_24. intros. apply trans___type_24_noncea_old_1;  tauto.
 clear  epsilon_m__type_25_p__type_24. tauto.
Defined.

Remark rem_8946 : forall X1 X2:term, auto___type_25 (noncea_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8947 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_25 (noncea_old X1 X2) -> auto___type_24 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_8946 X1 X2 H);  intros.
  apply (rem_8945 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_8948 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_8903 epsilon_m__type_25_p__type_24 X1);  assumption.
  tauto.
Defined.

Remark rem_8949 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_24 (p X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1. intros A1.
  case (rem_8948 epsilon_m__type_25_p__type_24 X1 A1). clear  epsilon_m__type_25_p__type_24 A1. intros. apply trans___type_24_p_1;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1. tauto.
Defined.

Remark rem_8950 : forall X1:term, auto___type_25 (p X1) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8951 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___type_25 (p X1) -> auto___type_24 (p X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1. intro H. intros.
  elim (rem_8950 X1 H);  intros.
  apply (rem_8949 epsilon_m__type_25_p__type_24 X1);  tauto.
Defined.

Remark rem_8952 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_24 (passwd_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.  case (rem_8941 epsilon_m__type_25_p__type_24). clear  epsilon_m__type_25_p__type_24. intros. apply trans___type_24_passwd_old_1;  tauto.
 clear  epsilon_m__type_25_p__type_24. tauto.
Defined.

Remark rem_8953 : forall X1 X2:term, auto___type_25 (passwd_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8954 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_25 (passwd_old X1 X2) -> auto___type_24 (passwd_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_8953 X1 X2 H);  intros.
  apply (rem_8952 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_8955 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> auto___type_24 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24.  case (rem_8941 epsilon_m__type_25_p__type_24). clear  epsilon_m__type_25_p__type_24. intros. apply trans___type_24_alice_1;  tauto.
 clear  epsilon_m__type_25_p__type_24. tauto.
Defined.

Remark rem_8956 : auto___type_25 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8957 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> auto___type_25 alice -> auto___type_24 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intro H. intros.
  elim (rem_8956 H);  intros.
  apply (rem_8955 epsilon_m__type_25_p__type_24);  tauto.
Defined.

Remark rem_8958 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_24 (nonceb_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.  case (rem_8941 epsilon_m__type_25_p__type_24). clear  epsilon_m__type_25_p__type_24. intros. apply trans___type_24_nonceb_old_1;  tauto.
 clear  epsilon_m__type_25_p__type_24. tauto.
Defined.

Remark rem_8959 : forall X1 X2:term, auto___type_25 (nonceb_old X1 X2) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8960 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_25 (nonceb_old X1 X2) -> auto___type_24 (nonceb_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_8959 X1 X2 H);  intros.
  apply (rem_8958 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_8961 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (dec X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8907 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_dec_1;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8962 : forall X1 X2:term, auto___type_25 (dec X1 X2) -> or_1
    (auto_knows_current X1 /\ auto_knows_current X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8963 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_25 (dec X1 X2) -> auto___type_24 (dec X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_8962 X1 X2 H);  intros.
  apply (rem_8961 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_8964 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_71 X1 -> auto___def_71 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8965 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_71 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_71 X1 -> auto___def_71 X1). tauto. exact (rem_8964 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8966 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_72 X2 -> auto___def_72 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8967 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_72 X2 -> auto___def_72 X2). tauto. exact (rem_8966 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8968 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> (auto___def_71 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_71 X1). 2:apply (rem_8965 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_8967 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8969 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_71 X1 -> auto___def_72 X2 -> auto___type_24 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8968 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_enc_1;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8970 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8907 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_enc_2;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8971 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_79 X1 -> auto___def_79 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8972 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_79 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_79 X1 -> auto___def_79 X1). tauto. exact (rem_8971 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8973 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_80 X2 -> auto___def_80 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8974 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___def_80 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_80 X2 -> auto___def_80 X2). tauto. exact (rem_8973 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8975 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> (auto___def_79 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_79 X1). 2:apply (rem_8972 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_8974 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8976 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_79 X1 -> auto___def_80 X2 -> auto___type_24 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8975 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_enc_3;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8977 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_75 X1 -> auto___def_75 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8978 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_75 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_75 X1 -> auto___def_75 X1). tauto. exact (rem_8977 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_8979 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_76 X2 -> auto___def_76 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_8980 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___def_76 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_76 X2 -> auto___def_76 X2). tauto. exact (rem_8979 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_8981 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> (auto___def_75 X1 /\ auto___def_76 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_75 X1). 2:apply (rem_8978 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_76 X2). 2:apply (rem_8980 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_8982 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_75 X1 -> auto___def_76 X2 -> auto___type_24 (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8981 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_enc_4;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8983 : forall X1 X2:term, auto___type_25 (enc X1 X2) -> or_4
    (auto___def_71 X1 /\ auto___def_72 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___def_79 X1 /\ auto___def_80 X2)
    (auto___def_75 X1 /\ auto___def_76 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_4_intro_1; tauto.
  intros. apply or_4_intro_2; tauto.
  intros. apply or_4_intro_3; tauto.
  intros. apply or_4_intro_4; tauto.
Qed.

Remark rem_8984 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_25 (enc X1 X2) -> auto___type_24 (enc X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_8983 X1 X2 H);  intros.
  apply (rem_8969 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8970 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8976 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_8982 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_8985 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_24 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_8907 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_cons_1;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_8986 : forall X1 X2:term, auto___type_25 (cons X1 X2) -> or_1
    (auto_knows_current X1 /\ auto_knows_current X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8987 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_25 (cons X1 X2) -> auto___type_24 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_8986 X1 X2 H);  intros.
  apply (rem_8985 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_8988 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_24 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1. intros A1.
  case (rem_8948 epsilon_m__type_25_p__type_24 X1 A1). clear  epsilon_m__type_25_p__type_24 A1. intros. apply trans___type_24_s_1;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1. tauto.
Defined.

Remark rem_8989 : forall X1:term, auto___type_25 (s X1) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8990 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___type_25 (s X1) -> auto___type_24 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1. intro H. intros.
  elim (rem_8989 X1 H);  intros.
  apply (rem_8988 epsilon_m__type_25_p__type_24 X1);  tauto.
Defined.

Remark rem_8991 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> auto___type_24 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24.  case (rem_8941 epsilon_m__type_25_p__type_24). clear  epsilon_m__type_25_p__type_24. intros. apply trans___type_24_i_1;  tauto.
 clear  epsilon_m__type_25_p__type_24. tauto.
Defined.

Remark rem_8992 : auto___type_25 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8993 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> auto___type_25 i -> auto___type_24 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intro H. intros.
  elim (rem_8992 H);  intros.
  apply (rem_8991 epsilon_m__type_25_p__type_24);  tauto.
Defined.

Remark rem_8994 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> auto___type_24 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24.  case (rem_8941 epsilon_m__type_25_p__type_24). clear  epsilon_m__type_25_p__type_24. intros. apply trans___type_24_nil_1;  tauto.
 clear  epsilon_m__type_25_p__type_24. tauto.
Defined.

Remark rem_8995 : auto___type_25 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8996 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> auto___type_25 nil -> auto___type_24 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intro H. intros.
  elim (rem_8995 H);  intros.
  apply (rem_8994 epsilon_m__type_25_p__type_24);  tauto.
Defined.

Remark rem_8997 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> auto___type_24 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24.  case (rem_8941 epsilon_m__type_25_p__type_24). clear  epsilon_m__type_25_p__type_24. intros. apply trans___type_24_server_1;  tauto.
 clear  epsilon_m__type_25_p__type_24. tauto.
Defined.

Remark rem_8998 : auto___type_25 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_8999 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> auto___type_25 server -> auto___type_24 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intro H. intros.
  elim (rem_8998 H);  intros.
  apply (rem_8997 epsilon_m__type_25_p__type_24);  tauto.
Defined.

Remark rem_9000 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_61 X1 -> auto___def_61 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9001 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_61 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_61 X1 -> auto___def_61 X1). tauto. exact (rem_9000 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_9002 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_62 X2 -> auto___def_62 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9003 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___def_62 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_62 X2 -> auto___def_62 X2). tauto. exact (rem_9002 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_9004 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> (auto___def_61 X1 /\ auto___def_62 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_61 X1). 2:apply (rem_9001 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_62 X2). 2:apply (rem_9003 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_9005 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_61 X1 -> auto___def_62 X2 -> auto___type_24 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_9004 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_key_1;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_9006 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9007 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_9006 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_9008 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9009 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_9008 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_9010 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> (auto___def_51 X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_9007 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_9009 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_9011 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto_agent X2 -> auto___type_24 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_9010 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_key_2;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_9012 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1:term, auto___def_12 X1 -> auto___def_12 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9013 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_12 X1). tauto. exact (rem_9012 epsilon_m__type_25_p__type_24 X1).
Defined.

Remark rem_9014 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X2:term, auto___def_13 X2 -> auto___def_13 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9015 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_13 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2.
  cut (auto___def_13 X2 -> auto___def_13 X2). tauto. exact (rem_9014 epsilon_m__type_25_p__type_24 X2).
Defined.

Remark rem_9016 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto___def_12 X1 /\ auto___def_13 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  cut (auto___def_12 X1). 2:apply (rem_9013 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_9015 epsilon_m__type_25_p__type_24 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_9017 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___type_24 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intros A1 A2.
  case (rem_9016 epsilon_m__type_25_p__type_24 X1 X2 A1 A2). clear  epsilon_m__type_25_p__type_24 A1 A2. intros. apply trans___type_24_key_3;  tauto.
 clear  epsilon_m__type_25_p__type_24 A1 A2. tauto.
Defined.

Remark rem_9018 : forall X1 X2:term, auto___type_25 (key X1 X2) -> or_3
    (auto___def_61 X1 /\ auto___def_62 X2)
    (auto___def_51 X1 /\ auto_agent X2)
    (auto___def_12 X1 /\ auto___def_13 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_9019 : (forall X:term, auto___type_25 X -> auto___type_24 X)
    -> forall X1 X2:term, auto___type_25 (key X1 X2) -> auto___type_24 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_25_p__type_24. intros X1 X2. intro H. intros.
  elim (rem_9018 X1 X2 H);  intros.
  apply (rem_9005 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_9011 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
  apply (rem_9017 epsilon_m__type_25_p__type_24 X1 X2);  tauto.
Defined.

Remark rem_9020 : forall X1 X2:term, auto___type_25 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9021 : forall X1 X2:term, auto___type_25 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9022 : forall X1 X2:term, auto___type_25 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9023 : forall X1 X2:term, auto___type_25 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9024 : auto___type_25 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9025 : forall X1 X2:term, auto___type_25 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9026 : auto___type_25 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9027 : auto___type_25 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9028 : forall X1 X2:term, auto___type_25 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9029 : forall X1 X2:term, auto___type_25 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9030 : forall X1:term, auto___type_25 X1 -> auto___type_24 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_25_p__type_24 1.
  intro X. case X.
  exact (rem_8957 epsilon_m__type_25_p__type_24 ).
  exact (rem_8944 epsilon_m__type_25_p__type_24 ).
  intros X1 X2;  exact (rem_8987 epsilon_m__type_25_p__type_24 X1 X2).
  intros X1 X2;  exact (rem_8940 epsilon_m__type_25_p__type_24 X1 X2).
  intros X1 X2;  exact (rem_8963 epsilon_m__type_25_p__type_24 X1 X2).
  intros X1 X2;  exact (rem_8984 epsilon_m__type_25_p__type_24 X1 X2).
  exact (rem_8993 epsilon_m__type_25_p__type_24 ).
  intros X1 X2;  exact (rem_9019 epsilon_m__type_25_p__type_24 X1 X2).
  exact (rem_8996 epsilon_m__type_25_p__type_24 ).
  intros X1 X2. intro H. elim (rem_9029 X1 X2 H).
  intros X1 X2;  exact (rem_8947 epsilon_m__type_25_p__type_24 X1 X2).
  intros X1 X2. intro H. elim (rem_9020 X1 X2 H).
  intros X1 X2;  exact (rem_8960 epsilon_m__type_25_p__type_24 X1 X2).
  intros X1;  exact (rem_8951 epsilon_m__type_25_p__type_24 X1).
  intros X1 X2. intro H. elim (rem_9025 X1 X2 H).
  intros X1 X2;  exact (rem_8954 epsilon_m__type_25_p__type_24 X1 X2).
   intro H. elim (rem_9026  H).
   intro H. elim (rem_9024  H).
  intros X1 X2. intro H. elim (rem_9023 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9022 X1 X2 H).
  intros X1;  exact (rem_8990 epsilon_m__type_25_p__type_24 X1).
  exact (rem_8999 epsilon_m__type_25_p__type_24 ).
  intros X1 X2. intro H. elim (rem_9028 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9021 X1 X2 H).
   intro H. elim (rem_9027  H).
Qed.

Remark rem_9031 : forall X1 X2:term, auto___def_110 X2 -> auto___type_25 X1 -> auto___type_24 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_25 X1 -> auto___type_24 X1). tauto. exact (rem_9030 X1).
Qed.

Remark rem_9032 : (forall X:term, auto___def_110 X -> auto___def_108 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9033 : (forall X:term, auto___def_110 X -> auto___def_108 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_110_p__def_108. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_9032 epsilon_m__def_110_p__def_108 X1);  assumption.
  tauto.
Defined.

Remark rem_9034 : (forall X:term, auto___def_110 X -> auto___def_108 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_108 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_110_p__def_108. intros X1 X2. intros A1.
  case (rem_9033 epsilon_m__def_110_p__def_108 X1 A1). clear  epsilon_m__def_110_p__def_108 A1. intros. apply trans___def_108_r_current_1;  tauto.
 clear  epsilon_m__def_110_p__def_108 A1. tauto.
Defined.

Remark rem_9035 : forall X1 X2:term, auto___def_110 (r_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_9036 : (forall X:term, auto___def_110 X -> auto___def_108 X)
    -> forall X1 X2:term, auto___def_110 (r_current X1 X2) -> auto___def_108 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_110_p__def_108. intros X1 X2. intro H. intros.
  elim (rem_9035 X1 X2 H);  intros.
  apply (rem_9034 epsilon_m__def_110_p__def_108 X1 X2);  tauto.
Defined.

Remark rem_9037 : forall X1 X2:term, auto___def_110 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9038 : forall X1 X2:term, auto___def_110 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9039 : forall X1 X2:term, auto___def_110 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9040 : auto___def_110 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9041 : forall X1 X2:term, auto___def_110 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9042 : forall X1 X2:term, auto___def_110 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9043 : forall X1:term, auto___def_110 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9044 : auto___def_110 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9045 : forall X1 X2:term, auto___def_110 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9046 : forall X1 X2:term, auto___def_110 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9047 : auto___def_110 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9048 : auto___def_110 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9049 : forall X1 X2:term, auto___def_110 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9050 : forall X1 X2:term, auto___def_110 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9051 : forall X1 X2:term, auto___def_110 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9052 : forall X1 X2:term, auto___def_110 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9053 : forall X1:term, auto___def_110 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9054 : auto___def_110 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9055 : forall X1 X2:term, auto___def_110 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9056 : auto___def_110 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9057 : auto___def_110 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9058 : auto___def_110 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9059 : forall X1 X2:term, auto___def_110 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9060 : forall X1 X2:term, auto___def_110 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9061 : forall X2:term, auto___def_110 X2 -> auto___def_108 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_110_p__def_108 1.
  intro X. case X.
   intro H. elim (rem_9047  H).
   intro H. elim (rem_9040  H).
  intros X1 X2. intro H. elim (rem_9052 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9037 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9050 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9051 X1 X2 H).
   intro H. elim (rem_9056  H).
  intros X1 X2. intro H. elim (rem_9060 X1 X2 H).
   intro H. elim (rem_9057  H).
  intros X1 X2. intro H. elim (rem_9059 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9041 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9038 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9049 X1 X2 H).
  intros X1. intro H. elim (rem_9043 X1 H).
  intros X1 X2. intro H. elim (rem_9046 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9045 X1 X2 H).
   intro H. elim (rem_9048  H).
   intro H. elim (rem_9044  H).
  intros X1 X2;  exact (rem_9036 epsilon_m__def_110_p__def_108 X1 X2).
  intros X1 X2. intro H. elim (rem_9042 X1 X2 H).
  intros X1. intro H. elim (rem_9053 X1 H).
   intro H. elim (rem_9058  H).
  intros X1 X2. intro H. elim (rem_9055 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9039 X1 X2 H).
   intro H. elim (rem_9054  H).
Qed.

Remark rem_9062 : forall X1 X2:term, auto___def_110 X2 -> auto___type_25 X1 -> auto___def_108 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_110 X2 -> auto___def_108 X2). tauto. exact (rem_9061 X2).
Qed.

Remark rem_9063 : forall X1 X2:term, auto___def_110 X2 -> auto___type_25 X1 -> (auto___type_24 X1 /\ auto___def_108 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_24 X1). 2:apply (rem_9031 X1 X2);  assumption.
  cut (auto___def_108 X2). 2:apply (rem_9062 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_9064 : forall X1 X2:term, auto___def_110 X2 -> auto___type_25 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_9063 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_9065 : (forall X:term, auto___def_11 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto_knows_old (passwd_old X1 X2) -> auto_agent X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_11_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1287 X1 X2 H);  intros.
Defined.

Remark rem_9066 : (forall X:term, auto___def_11 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_11 (passwd_old X1 X2) -> auto_knows_old (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_11_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1274 X1 X2 H);  intros.
  apply (rem_9065 epsilon_m__def_11_mknows_old X1 X2);  tauto.
Defined.

Remark rem_9067 : forall X1:term, auto___def_11 X1 -> auto_knows_old X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_11_mknows_old 1.
  intro X. case X.
   intro H. elim (rem_5795  H).
   intro H. elim (rem_5788  H).
  intros X1 X2. intro H. elim (rem_5800 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5785 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5798 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5799 X1 X2 H).
   intro H. elim (rem_5804  H).
  intros X1 X2. intro H. elim (rem_5808 X1 X2 H).
   intro H. elim (rem_5805  H).
  intros X1 X2. intro H. elim (rem_5807 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5789 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5786 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5797 X1 X2 H).
  intros X1. intro H. elim (rem_5792 X1 H).
  intros X1 X2. intro H. elim (rem_5794 X1 X2 H).
  intros X1 X2;  exact (rem_9066 epsilon_m__def_11_mknows_old X1 X2).
   intro H. elim (rem_5796  H).
   intro H. elim (rem_5793  H).
  intros X1 X2. intro H. elim (rem_5791 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5790 X1 X2 H).
  intros X1. intro H. elim (rem_5801 X1 H).
   intro H. elim (rem_5806  H).
  intros X1 X2. intro H. elim (rem_5803 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5787 X1 X2 H).
   intro H. elim (rem_5802  H).
Qed.

Remark rem_9068 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_9067 X2)). tauto.
Qed.

Remark rem_9069 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (crypt X1 X2) -> auto___def_36 X1 -> auto___def_37 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5827 X1 X2 H);  intros.
Defined.

Remark rem_9070 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (crypt X1 X2) -> auto___def_24 X1 -> auto___def_25 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5827 X1 X2 H);  intros.
Defined.

Remark rem_9071 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (crypt X1 X2) -> auto___type_7 X1 -> auto___def_44 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5827 X1 X2 H);  intros.
Defined.

Remark rem_9072 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (crypt X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5827 X1 X2 H);  intros.
Defined.

Remark rem_9073 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto___def_16 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_1860 X1 X2 H);  intros.
  apply (rem_9069 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
  apply (rem_9070 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
  apply (rem_9071 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
  apply (rem_9072 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
Defined.

Remark rem_9074 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> auto___def_16 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intro H. intros.
  elim (rem_5830 H);  intros.
Defined.

Remark rem_9075 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> auto_knows_old bob -> auto___def_16 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intro H. intros.
  elim (rem_2438 H);  intros.
  apply (rem_9074 epsilon_mknows_old_m__def_16);  tauto.
Defined.

Remark rem_9076 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1:term, auto___def_16 (p X1) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1. intro H. intros.
  elim (rem_5834 X1 H);  intros.
Defined.

Remark rem_9077 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1:term, auto_knows_old (p X1) -> auto___def_16 (p X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1. intro H. intros.
  elim (rem_2442 X1 H);  intros.
  apply (rem_9076 epsilon_mknows_old_m__def_16 X1);  tauto.
Defined.

Remark rem_9078 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> auto___def_16 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intro H. intros.
  elim (rem_5837 H);  intros.
Defined.

Remark rem_9079 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> auto_knows_old alice -> auto___def_16 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intro H. intros.
  elim (rem_2445 H);  intros.
  apply (rem_9078 epsilon_mknows_old_m__def_16);  tauto.
Defined.

Remark rem_9080 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (dec X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5840 X1 X2 H);  intros.
Defined.

Remark rem_9081 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto_knows_old (dec X1 X2) -> auto___def_16 (dec X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_2448 X1 X2 H);  intros.
  apply (rem_9080 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
Defined.

Remark rem_9082 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (enc X1 X2) -> auto___def_10 X1 -> auto___def_11 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5841 X1 X2 H);  intros.
Defined.

Remark rem_9083 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (enc X1 X2) -> auto___def_15 X1 -> auto___def_16 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5841 X1 X2 H);  intros.
Defined.

Remark rem_9084 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (enc X1 X2) -> auto___def_19 X1 -> auto___def_20 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5841 X1 X2 H);  intros.
Defined.

Remark rem_9085 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (enc X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5841 X1 X2 H);  intros.
Defined.

Remark rem_9086 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto_knows_old (enc X1 X2) -> auto___def_16 (enc X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_1290 X1 X2 H);  intros.
  apply (rem_9082 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
  apply (rem_9083 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
  apply (rem_9084 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
  apply (rem_9085 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
Defined.

Remark rem_9087 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (cons X1 X2) -> auto_knows_old X1 -> auto_knows_old X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5842 X1 X2 H);  intros.
Defined.

Remark rem_9088 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto___def_16 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_1263 X1 X2 H);  intros.
  apply (rem_9087 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
Defined.

Remark rem_9089 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1:term, auto___def_16 (s X1) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1. intro H. intros.
  elim (rem_5843 X1 H);  intros.
Defined.

Remark rem_9090 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1:term, auto_knows_old (s X1) -> auto___def_16 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1. intro H. intros.
  elim (rem_2473 X1 H);  intros.
  apply (rem_9089 epsilon_mknows_old_m__def_16 X1);  tauto.
Defined.

Remark rem_9091 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> auto___def_16 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intro H. intros.
  elim (rem_5846 H);  intros.
Defined.

Remark rem_9092 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> auto_knows_old i -> auto___def_16 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intro H. intros.
  elim (rem_2476 H);  intros.
  apply (rem_9091 epsilon_mknows_old_m__def_16);  tauto.
Defined.

Remark rem_9093 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> auto___def_16 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intro H. intros.
  elim (rem_5847 H);  intros.
Defined.

Remark rem_9094 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> auto_knows_old nil -> auto___def_16 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intro H. intros.
  elim (rem_2479 H);  intros.
  apply (rem_9093 epsilon_mknows_old_m__def_16);  tauto.
Defined.

Remark rem_9095 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> auto___def_16 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intro H. intros.
  elim (rem_5848 H);  intros.
Defined.

Remark rem_9096 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> auto_knows_old server -> auto___def_16 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intro H. intros.
  elim (rem_2482 H);  intros.
  apply (rem_9095 epsilon_mknows_old_m__def_16);  tauto.
Defined.

Remark rem_9097 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (key X1 X2) -> auto___def_61 X1 -> auto___def_62 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5850 X1 X2 H);  intros.
Defined.

Remark rem_9098 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto___def_16 (key X1 X2) -> auto___def_51 X1 -> auto_agent X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_5850 X1 X2 H);  intros.
Defined.

Remark rem_9099 : (forall X:term, auto_knows_old X -> auto___def_16 X -> False)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto___def_16 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_m__def_16. intros X1 X2. intro H. intros.
  elim (rem_1361 X1 X2 H);  intros.
  apply (rem_9097 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
  apply (rem_9098 epsilon_mknows_old_m__def_16 X1 X2);  tauto.
Defined.

Remark rem_9100 : forall X1:term, auto_knows_old X1 -> auto___def_16 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_old_m__def_16 1.
  intro X. case X.
  exact (rem_9079 epsilon_mknows_old_m__def_16 ).
  exact (rem_9075 epsilon_mknows_old_m__def_16 ).
  intros X1 X2;  exact (rem_9088 epsilon_mknows_old_m__def_16 X1 X2).
  intros X1 X2;  exact (rem_9073 epsilon_mknows_old_m__def_16 X1 X2).
  intros X1 X2;  exact (rem_9081 epsilon_mknows_old_m__def_16 X1 X2).
  intros X1 X2;  exact (rem_9086 epsilon_mknows_old_m__def_16 X1 X2).
  exact (rem_9092 epsilon_mknows_old_m__def_16 ).
  intros X1 X2;  exact (rem_9099 epsilon_mknows_old_m__def_16 X1 X2).
  exact (rem_9094 epsilon_mknows_old_m__def_16 ).
  intros X1 X2. intro H. elim (rem_2508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2497 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2505 X1 X2 H).
  intros X1;  exact (rem_9077 epsilon_mknows_old_m__def_16 X1).
  intros X1 X2. intro H. elim (rem_2503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1287 X1 X2 H).
   intro H. elim (rem_2504  H).
   intro H. elim (rem_2502  H).
  intros X1 X2. intro H. elim (rem_2501 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2500 X1 X2 H).
  intros X1;  exact (rem_9090 epsilon_mknows_old_m__def_16 X1).
  exact (rem_9096 epsilon_mknows_old_m__def_16 ).
  intros X1 X2. intro H. elim (rem_2507 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2498 X1 X2 H).
   intro H. elim (rem_2506  H).
Qed.

Remark rem_9101 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_9100 X2)). tauto.
Qed.

Remark rem_9102 : (forall X:term, auto___def_20 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto_knows_old (passwd_old X1 X2) -> auto_knows_old X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_20_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1287 X1 X2 H);  intros.
Defined.

Remark rem_9103 : (forall X:term, auto___def_20 X -> auto_knows_old X -> False)
    -> forall X1 X2:term, auto___def_20 (passwd_old X1 X2) -> auto_knows_old (passwd_old X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_20_mknows_old. intros X1 X2. intro H. intros.
  elim (rem_1837 X1 X2 H);  intros.
  apply (rem_9102 epsilon_m__def_20_mknows_old X1 X2);  tauto.
Defined.

Remark rem_9104 : forall X1:term, auto___def_20 X1 -> auto_knows_old X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_20_mknows_old 1.
  intro X. case X.
   intro H. elim (rem_5879  H).
   intro H. elim (rem_5872  H).
  intros X1 X2. intro H. elim (rem_5884 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5869 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5882 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5883 X1 X2 H).
   intro H. elim (rem_5888  H).
  intros X1 X2. intro H. elim (rem_5892 X1 X2 H).
   intro H. elim (rem_5889  H).
  intros X1 X2. intro H. elim (rem_5891 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5873 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5870 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5881 X1 X2 H).
  intros X1. intro H. elim (rem_5876 X1 H).
  intros X1 X2. intro H. elim (rem_5878 X1 X2 H).
  intros X1 X2;  exact (rem_9103 epsilon_m__def_20_mknows_old X1 X2).
   intro H. elim (rem_5880  H).
   intro H. elim (rem_5877  H).
  intros X1 X2. intro H. elim (rem_5875 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5874 X1 X2 H).
  intros X1. intro H. elim (rem_5885 X1 H).
   intro H. elim (rem_5890  H).
  intros X1 X2. intro H. elim (rem_5887 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5871 X1 X2 H).
   intro H. elim (rem_5886  H).
Qed.

Remark rem_9105 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_knows_old X2 -> auto_knows_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_9104 X2)). tauto.
Qed.

Remark rem_9106 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old (enc X1 X2) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_1290 X1 X2 H);  intros.
  apply (rem_9068 X1 X2);  tauto.
  apply (rem_9101 X1 X2);  tauto.
  apply (rem_9105 X1 X2);  tauto.
  apply (rem_7191 X1 X2);  tauto.
Qed.

Remark rem_9107 : forall X1 X2:term, auto_knows_old (enc X1 X2) -> auto_knows_old X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old (enc X1 X2) -> auto_knows_old X1). tauto. exact (rem_9106 X1 X2).
Qed.

Remark rem_9108 : forall X1:term, auto_knows_old (s X1) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_2473 X1 H);  intros.
  apply (rem_276 X1);  tauto.
Qed.

Remark rem_9109 : forall X1 X2:term, auto___def_10 X1 -> auto___def_11 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_9067 X2)). tauto.
Qed.

Remark rem_9110 : forall X1 X2:term, auto___def_15 X1 -> auto___def_16 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_9100 X2)). tauto.
Qed.

Remark rem_9111 : forall X1 X2:term, auto___def_19 X1 -> auto___def_20 X2 -> auto_knows_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_9104 X2)). tauto.
Qed.

Remark rem_9112 : forall X1 X2:term, auto_knows_old X2 -> auto_testable_old (enc X1 X2) -> auto_testable_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_118 X1 X2 H);  intros.
  apply (rem_9109 X1 X2);  tauto.
  apply (rem_9110 X1 X2);  tauto.
  apply (rem_9111 X1 X2);  tauto.
  apply (rem_6783 X1 X2);  tauto.
Qed.

Remark rem_9113 : forall X1 X2:term, auto_testable_old (enc X1 X2) -> auto_knows_old X2 -> auto_testable_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_testable_old (enc X1 X2) -> auto_testable_old X1). tauto. exact (rem_9112 X1 X2).
Qed.

Remark rem_9114 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9115 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_9114 epsilon_m__type_21_p__type_20 X1);  assumption.
  tauto.
Defined.

Remark rem_9116 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___type_20 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2. intros A1.
  case (rem_9115 epsilon_m__type_21_p__type_20 X1 A1). clear  epsilon_m__type_21_p__type_20 A1. intros. apply trans___type_20_nonceb_current_1;  tauto.
 clear  epsilon_m__type_21_p__type_20 A1. tauto.
Defined.

Remark rem_9117 : forall X1 X2:term, auto___type_21 (nonceb_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_9118 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 (nonceb_current X1 X2) -> auto___type_20 (nonceb_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2. intro H. intros.
  elim (rem_9117 X1 X2 H);  intros.
  apply (rem_9116 epsilon_m__type_21_p__type_20 X1 X2);  tauto.
Defined.

Remark rem_9119 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1:term, auto___type_21 X1 -> auto___type_21 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9120 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_21 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2.
  cut (auto___type_21 X1 -> auto___type_21 X1). tauto. exact (rem_9119 epsilon_m__type_21_p__type_20 X1).
Defined.

Remark rem_9121 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X2:term, auto___def_98 X2 -> auto___def_98 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9122 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___def_98 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2.
  cut (auto___def_98 X2 -> auto___def_98 X2). tauto. exact (rem_9121 epsilon_m__type_21_p__type_20 X2).
Defined.

Remark rem_9123 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> (auto___type_21 X1 /\ auto___def_98 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2. intros A1 A2.
  cut (auto___type_21 X1). 2:apply (rem_9120 epsilon_m__type_21_p__type_20 X1 X2);  assumption.
  cut (auto___def_98 X2). 2:apply (rem_9122 epsilon_m__type_21_p__type_20 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_9124 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_20 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2. intros A1 A2.
  case (rem_9123 epsilon_m__type_21_p__type_20 X1 X2 A1 A2). clear  epsilon_m__type_21_p__type_20 A1 A2. intros. apply trans___type_20_cons_1;  tauto.
 clear  epsilon_m__type_21_p__type_20 A1 A2. tauto.
Defined.

Remark rem_9125 : forall X1 X2:term, auto___type_21 (cons X1 X2) -> or_1
    (auto___type_21 X1 /\ auto___def_98 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_9126 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 (cons X1 X2) -> auto___type_20 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2. intro H. intros.
  elim (rem_9125 X1 X2 H);  intros.
  apply (rem_9124 epsilon_m__type_21_p__type_20 X1 X2);  tauto.
Defined.

Remark rem_9127 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9128 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_9127 epsilon_m__type_21_p__type_20 X1).
Defined.

Remark rem_9129 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9130 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_9129 epsilon_m__type_21_p__type_20 X2).
Defined.

Remark rem_9131 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto_agent X1 /\ auto_agent X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_9128 epsilon_m__type_21_p__type_20 X1 X2);  assumption.
  cut (auto_agent X2). 2:apply (rem_9130 epsilon_m__type_21_p__type_20 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_9132 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto___type_20 (noncea_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2. intros A1 A2.
  case (rem_9131 epsilon_m__type_21_p__type_20 X1 X2 A1 A2). clear  epsilon_m__type_21_p__type_20 A1 A2. intros. apply trans___type_20_noncea_current_1;  tauto.
 clear  epsilon_m__type_21_p__type_20 A1 A2. tauto.
Defined.

Remark rem_9133 : forall X1 X2:term, auto___type_21 (noncea_current X1 X2) -> or_1
    (auto_agent X1 /\ auto_agent X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_9134 : (forall X:term, auto___type_21 X -> auto___type_20 X)
    -> forall X1 X2:term, auto___type_21 (noncea_current X1 X2) -> auto___type_20 (noncea_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_21_p__type_20. intros X1 X2. intro H. intros.
  elim (rem_9133 X1 X2 H);  intros.
  apply (rem_9132 epsilon_m__type_21_p__type_20 X1 X2);  tauto.
Defined.

Remark rem_9135 : forall X1 X2:term, auto___type_21 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9136 : forall X1 X2:term, auto___type_21 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9137 : auto___type_21 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9138 : forall X1 X2:term, auto___type_21 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9139 : forall X1 X2:term, auto___type_21 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9140 : forall X1 X2:term, auto___type_21 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9141 : forall X1:term, auto___type_21 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9142 : auto___type_21 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9143 : forall X1 X2:term, auto___type_21 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9144 : forall X1 X2:term, auto___type_21 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9145 : auto___type_21 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9146 : auto___type_21 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9147 : forall X1 X2:term, auto___type_21 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9148 : forall X1 X2:term, auto___type_21 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9149 : forall X1 X2:term, auto___type_21 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9150 : forall X1:term, auto___type_21 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9151 : auto___type_21 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9152 : forall X1 X2:term, auto___type_21 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9153 : auto___type_21 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9154 : auto___type_21 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9155 : auto___type_21 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9156 : forall X1 X2:term, auto___type_21 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9157 : forall X1:term, auto___type_21 X1 -> auto___type_20 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_21_p__type_20 1.
  intro X. case X.
   intro H. elim (rem_9145  H).
   intro H. elim (rem_9137  H).
  intros X1 X2;  exact (rem_9126 epsilon_m__type_21_p__type_20 X1 X2).
  intros X1 X2. intro H. elim (rem_9135 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9148 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9149 X1 X2 H).
   intro H. elim (rem_9153  H).
  intros X1 X2. intro H. elim (rem_9156 X1 X2 H).
   intro H. elim (rem_9154  H).
  intros X1 X2;  exact (rem_9134 epsilon_m__type_21_p__type_20 X1 X2).
  intros X1 X2. intro H. elim (rem_9138 X1 X2 H).
  intros X1 X2;  exact (rem_9118 epsilon_m__type_21_p__type_20 X1 X2).
  intros X1 X2. intro H. elim (rem_9147 X1 X2 H).
  intros X1. intro H. elim (rem_9141 X1 H).
  intros X1 X2. intro H. elim (rem_9144 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9143 X1 X2 H).
   intro H. elim (rem_9146  H).
   intro H. elim (rem_9142  H).
  intros X1 X2. intro H. elim (rem_9140 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9139 X1 X2 H).
  intros X1. intro H. elim (rem_9150 X1 H).
   intro H. elim (rem_9155  H).
  intros X1 X2. intro H. elim (rem_9152 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9136 X1 X2 H).
   intro H. elim (rem_9151  H).
Qed.

Remark rem_9158 : (forall X:term, auto___def_96 X -> auto___def_88 X)
    -> forall X1:term, auto___type_21 X1 -> auto___type_20 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_96_p__def_88. exact (rem_9157).
Defined.

Remark rem_9159 : (forall X:term, auto___def_96 X -> auto___def_88 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___type_20 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_96_p__def_88. intros X1 X2.
  cut (auto___type_21 X1 -> auto___type_20 X1). tauto. exact (rem_9158 epsilon_m__def_96_p__def_88 X1).
Defined.

Remark rem_9160 : (forall X:term, auto___def_99 X -> auto___def_91 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9161 : (forall X:term, auto___def_99 X -> auto___def_91 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_99_p__def_91. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_9160 epsilon_m__def_99_p__def_91 X1);  assumption.
  tauto.
Defined.

Remark rem_9162 : (forall X:term, auto___def_99 X -> auto___def_91 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_91 (nonceb_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_99_p__def_91. intros X1 X2. intros A1.
  case (rem_9161 epsilon_m__def_99_p__def_91 X1 A1). clear  epsilon_m__def_99_p__def_91 A1. intros. apply trans___def_91_nonceb_current_1;  tauto.
 clear  epsilon_m__def_99_p__def_91 A1. tauto.
Defined.

Remark rem_9163 : forall X1 X2:term, auto___def_99 (nonceb_current X1 X2) -> or_1
    (auto_knows_current X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_9164 : (forall X:term, auto___def_99 X -> auto___def_91 X)
    -> forall X1 X2:term, auto___def_99 (nonceb_current X1 X2) -> auto___def_91 (nonceb_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_99_p__def_91. intros X1 X2. intro H. intros.
  elim (rem_9163 X1 X2 H);  intros.
  apply (rem_9162 epsilon_m__def_99_p__def_91 X1 X2);  tauto.
Defined.

Remark rem_9165 : forall X1 X2:term, auto___def_99 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9166 : forall X1 X2:term, auto___def_99 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9167 : auto___def_99 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9168 : forall X1 X2:term, auto___def_99 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9169 : forall X1 X2:term, auto___def_99 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9170 : forall X1 X2:term, auto___def_99 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9171 : forall X1:term, auto___def_99 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9172 : auto___def_99 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9173 : forall X1 X2:term, auto___def_99 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9174 : forall X1 X2:term, auto___def_99 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9175 : auto___def_99 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9176 : auto___def_99 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9177 : forall X1 X2:term, auto___def_99 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9178 : forall X1 X2:term, auto___def_99 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9179 : forall X1 X2:term, auto___def_99 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9180 : forall X1 X2:term, auto___def_99 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9181 : forall X1:term, auto___def_99 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9182 : auto___def_99 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9183 : forall X1 X2:term, auto___def_99 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9184 : auto___def_99 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9185 : auto___def_99 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9186 : auto___def_99 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9187 : forall X1 X2:term, auto___def_99 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9188 : forall X1 X2:term, auto___def_99 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9189 : forall X1:term, auto___def_99 X1 -> auto___def_91 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_99_p__def_91 1.
  intro X. case X.
   intro H. elim (rem_9175  H).
   intro H. elim (rem_9167  H).
  intros X1 X2. intro H. elim (rem_9180 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9165 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9178 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9179 X1 X2 H).
   intro H. elim (rem_9184  H).
  intros X1 X2. intro H. elim (rem_9188 X1 X2 H).
   intro H. elim (rem_9185  H).
  intros X1 X2. intro H. elim (rem_9187 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9168 X1 X2 H).
  intros X1 X2;  exact (rem_9164 epsilon_m__def_99_p__def_91 X1 X2).
  intros X1 X2. intro H. elim (rem_9177 X1 X2 H).
  intros X1. intro H. elim (rem_9171 X1 H).
  intros X1 X2. intro H. elim (rem_9174 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9173 X1 X2 H).
   intro H. elim (rem_9176  H).
   intro H. elim (rem_9172  H).
  intros X1 X2. intro H. elim (rem_9170 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9169 X1 X2 H).
  intros X1. intro H. elim (rem_9181 X1 H).
   intro H. elim (rem_9186  H).
  intros X1 X2. intro H. elim (rem_9183 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9166 X1 X2 H).
   intro H. elim (rem_9182  H).
Qed.

Remark rem_9190 : (forall X:term, auto___def_98 X -> auto___def_90 X)
    -> forall X1:term, auto___def_99 X1 -> auto___def_91 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_98_p__def_90. exact (rem_9189).
Defined.

Remark rem_9191 : (forall X:term, auto___def_98 X -> auto___def_90 X)
    -> forall X1 X2:term, auto___def_99 X1 -> auto___def_100 X2 -> auto___def_91 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_98_p__def_90. intros X1 X2.
  cut (auto___def_99 X1 -> auto___def_91 X1). tauto. exact (rem_9190 epsilon_m__def_98_p__def_90 X1).
Defined.

Remark rem_9192 : (forall X:term, auto___def_100 X -> auto___def_92 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_100_p__def_92.  tauto.
Defined.

Remark rem_9193 : (forall X:term, auto___def_100 X -> auto___def_92 X)
    -> auto___def_92 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_100_p__def_92.  case (rem_9192 epsilon_m__def_100_p__def_92). clear  epsilon_m__def_100_p__def_92. intros. apply trans___def_92_nil_1;  tauto.
 clear  epsilon_m__def_100_p__def_92. tauto.
Defined.

Remark rem_9194 : auto___def_100 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_9195 : (forall X:term, auto___def_100 X -> auto___def_92 X)
    -> auto___def_100 nil -> auto___def_92 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_100_p__def_92. intro H. intros.
  elim (rem_9194 H);  intros.
  apply (rem_9193 epsilon_m__def_100_p__def_92);  tauto.
Defined.

Remark rem_9196 : forall X1 X2:term, auto___def_100 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9197 : forall X1 X2:term, auto___def_100 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9198 : forall X1 X2:term, auto___def_100 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9199 : auto___def_100 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9200 : forall X1 X2:term, auto___def_100 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9201 : forall X1 X2:term, auto___def_100 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9202 : forall X1 X2:term, auto___def_100 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9203 : forall X1:term, auto___def_100 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9204 : auto___def_100 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9205 : forall X1 X2:term, auto___def_100 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9206 : forall X1 X2:term, auto___def_100 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9207 : auto___def_100 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9208 : auto___def_100 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9209 : forall X1 X2:term, auto___def_100 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9210 : forall X1 X2:term, auto___def_100 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9211 : forall X1 X2:term, auto___def_100 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9212 : forall X1 X2:term, auto___def_100 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9213 : forall X1:term, auto___def_100 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9214 : auto___def_100 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9215 : forall X1 X2:term, auto___def_100 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9216 : auto___def_100 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9217 : auto___def_100 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9218 : forall X1 X2:term, auto___def_100 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9219 : forall X1 X2:term, auto___def_100 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9220 : forall X2:term, auto___def_100 X2 -> auto___def_92 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_100_p__def_92 1.
  intro X. case X.
   intro H. elim (rem_9207  H).
   intro H. elim (rem_9199  H).
  intros X1 X2. intro H. elim (rem_9212 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9196 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9210 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9211 X1 X2 H).
   intro H. elim (rem_9216  H).
  intros X1 X2. intro H. elim (rem_9219 X1 X2 H).
  exact (rem_9195 epsilon_m__def_100_p__def_92 ).
  intros X1 X2. intro H. elim (rem_9218 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9200 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9197 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9209 X1 X2 H).
  intros X1. intro H. elim (rem_9203 X1 H).
  intros X1 X2. intro H. elim (rem_9206 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9205 X1 X2 H).
   intro H. elim (rem_9208  H).
   intro H. elim (rem_9204  H).
  intros X1 X2. intro H. elim (rem_9202 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9201 X1 X2 H).
  intros X1. intro H. elim (rem_9213 X1 H).
   intro H. elim (rem_9217  H).
  intros X1 X2. intro H. elim (rem_9215 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9198 X1 X2 H).
   intro H. elim (rem_9214  H).
Qed.

Remark rem_9221 : (forall X:term, auto___def_98 X -> auto___def_90 X)
    -> forall X2:term, auto___def_100 X2 -> auto___def_92 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_98_p__def_90. exact (rem_9220).
Defined.

Remark rem_9222 : (forall X:term, auto___def_98 X -> auto___def_90 X)
    -> forall X1 X2:term, auto___def_99 X1 -> auto___def_100 X2 -> auto___def_92 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_98_p__def_90. intros X1 X2.
  cut (auto___def_100 X2 -> auto___def_92 X2). tauto. exact (rem_9221 epsilon_m__def_98_p__def_90 X2).
Defined.

Remark rem_9223 : (forall X:term, auto___def_98 X -> auto___def_90 X)
    -> forall X1 X2:term, auto___def_99 X1 -> auto___def_100 X2 -> (auto___def_91 X1 /\ auto___def_92 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_98_p__def_90. intros X1 X2. intros A1 A2.
  cut (auto___def_91 X1). 2:apply (rem_9191 epsilon_m__def_98_p__def_90 X1 X2);  assumption.
  cut (auto___def_92 X2). 2:apply (rem_9222 epsilon_m__def_98_p__def_90 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_9224 : (forall X:term, auto___def_98 X -> auto___def_90 X)
    -> forall X1 X2:term, auto___def_99 X1 -> auto___def_100 X2 -> auto___def_90 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_98_p__def_90. intros X1 X2. intros A1 A2.
  case (rem_9223 epsilon_m__def_98_p__def_90 X1 X2 A1 A2). clear  epsilon_m__def_98_p__def_90 A1 A2. intros. apply trans___def_90_cons_1;  tauto.
 clear  epsilon_m__def_98_p__def_90 A1 A2. tauto.
Defined.

Remark rem_9225 : forall X1 X2:term, auto___def_98 (cons X1 X2) -> or_1
    (auto___def_99 X1 /\ auto___def_100 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_9226 : (forall X:term, auto___def_98 X -> auto___def_90 X)
    -> forall X1 X2:term, auto___def_98 (cons X1 X2) -> auto___def_90 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_98_p__def_90. intros X1 X2. intro H. intros.
  elim (rem_9225 X1 X2 H);  intros.
  apply (rem_9224 epsilon_m__def_98_p__def_90 X1 X2);  tauto.
Defined.

Remark rem_9227 : forall X1 X2:term, auto___def_98 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9228 : forall X1 X2:term, auto___def_98 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9229 : forall X1 X2:term, auto___def_98 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9230 : auto___def_98 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9231 : forall X1 X2:term, auto___def_98 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9232 : forall X1 X2:term, auto___def_98 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9233 : forall X1 X2:term, auto___def_98 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9234 : forall X1:term, auto___def_98 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9235 : auto___def_98 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9236 : forall X1 X2:term, auto___def_98 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9237 : forall X1 X2:term, auto___def_98 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9238 : auto___def_98 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9239 : auto___def_98 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9240 : forall X1 X2:term, auto___def_98 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9241 : forall X1 X2:term, auto___def_98 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9242 : forall X1 X2:term, auto___def_98 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9243 : forall X1:term, auto___def_98 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9244 : auto___def_98 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9245 : forall X1 X2:term, auto___def_98 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9246 : auto___def_98 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9247 : auto___def_98 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9248 : auto___def_98 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9249 : forall X1 X2:term, auto___def_98 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9250 : forall X1 X2:term, auto___def_98 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9251 : forall X2:term, auto___def_98 X2 -> auto___def_90 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_98_p__def_90 1.
  intro X. case X.
   intro H. elim (rem_9238  H).
   intro H. elim (rem_9230  H).
  intros X1 X2;  exact (rem_9226 epsilon_m__def_98_p__def_90 X1 X2).
  intros X1 X2. intro H. elim (rem_9227 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9241 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9242 X1 X2 H).
   intro H. elim (rem_9246  H).
  intros X1 X2. intro H. elim (rem_9250 X1 X2 H).
   intro H. elim (rem_9247  H).
  intros X1 X2. intro H. elim (rem_9249 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9231 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9228 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9240 X1 X2 H).
  intros X1. intro H. elim (rem_9234 X1 H).
  intros X1 X2. intro H. elim (rem_9237 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9236 X1 X2 H).
   intro H. elim (rem_9239  H).
   intro H. elim (rem_9235  H).
  intros X1 X2. intro H. elim (rem_9233 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9232 X1 X2 H).
  intros X1. intro H. elim (rem_9243 X1 H).
   intro H. elim (rem_9248  H).
  intros X1 X2. intro H. elim (rem_9245 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9229 X1 X2 H).
   intro H. elim (rem_9244  H).
Qed.

Remark rem_9252 : (forall X:term, auto___def_96 X -> auto___def_88 X)
    -> forall X2:term, auto___def_98 X2 -> auto___def_90 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_96_p__def_88. exact (rem_9251).
Defined.

Remark rem_9253 : (forall X:term, auto___def_96 X -> auto___def_88 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_96_p__def_88. intros X1 X2.
  cut (auto___def_98 X2 -> auto___def_90 X2). tauto. exact (rem_9252 epsilon_m__def_96_p__def_88 X2).
Defined.

Remark rem_9254 : (forall X:term, auto___def_96 X -> auto___def_88 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> (auto___type_20 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_96_p__def_88. intros X1 X2. intros A1 A2.
  cut (auto___type_20 X1). 2:apply (rem_9159 epsilon_m__def_96_p__def_88 X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_9253 epsilon_m__def_96_p__def_88 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_9255 : (forall X:term, auto___def_96 X -> auto___def_88 X)
    -> forall X1 X2:term, auto___type_21 X1 -> auto___def_98 X2 -> auto___def_88 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_96_p__def_88. intros X1 X2. intros A1 A2.
  case (rem_9254 epsilon_m__def_96_p__def_88 X1 X2 A1 A2). clear  epsilon_m__def_96_p__def_88 A1 A2. intros. apply trans___def_88_cons_1;  tauto.
 clear  epsilon_m__def_96_p__def_88 A1 A2. tauto.
Defined.

Remark rem_9256 : (forall X:term, auto___def_96 X -> auto___def_88 X)
    -> forall X1 X2:term, auto___def_96 (cons X1 X2) -> auto___def_88 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_96_p__def_88. intros X1 X2. intro H. intros.
  elim (rem_1645 X1 X2 H);  intros.
  apply (rem_9255 epsilon_m__def_96_p__def_88 X1 X2);  tauto.
Defined.

Remark rem_9257 : forall X1:term, auto___def_96 X1 -> auto___def_88 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_96_p__def_88 1.
  intro X. case X.
   intro H. elim (rem_1658  H).
   intro H. elim (rem_1650  H).
  intros X1 X2;  exact (rem_9256 epsilon_m__def_96_p__def_88 X1 X2).
  intros X1 X2. intro H. elim (rem_1647 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1661 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1662 X1 X2 H).
   intro H. elim (rem_1666  H).
  intros X1 X2. intro H. elim (rem_1670 X1 X2 H).
   intro H. elim (rem_1667  H).
  intros X1 X2. intro H. elim (rem_1669 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1651 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1648 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1660 X1 X2 H).
  intros X1. intro H. elim (rem_1654 X1 H).
  intros X1 X2. intro H. elim (rem_1657 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1656 X1 X2 H).
   intro H. elim (rem_1659  H).
   intro H. elim (rem_1655  H).
  intros X1 X2. intro H. elim (rem_1653 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1652 X1 X2 H).
  intros X1. intro H. elim (rem_1663 X1 H).
   intro H. elim (rem_1668  H).
  intros X1 X2. intro H. elim (rem_1665 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1649 X1 X2 H).
   intro H. elim (rem_1664  H).
Qed.

Remark rem_9258 : forall X1 X2:term, auto___def_96 X1 -> auto___def_97 X2 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_96 X1 -> auto___def_88 X1). tauto. exact (rem_9257 X1).
Qed.

Remark rem_9259 : (forall X:term, auto___def_101 X -> auto___def_93 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_101_p__def_93.  tauto.
Defined.

Remark rem_9260 : (forall X:term, auto___def_101 X -> auto___def_93 X)
    -> auto___def_93 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_101_p__def_93.  case (rem_9259 epsilon_m__def_101_p__def_93). clear  epsilon_m__def_101_p__def_93. intros. apply trans___def_93_sym_1;  tauto.
 clear  epsilon_m__def_101_p__def_93. tauto.
Defined.

Remark rem_9261 : auto___def_101 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_9262 : (forall X:term, auto___def_101 X -> auto___def_93 X)
    -> auto___def_101 sym -> auto___def_93 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_101_p__def_93. intro H. intros.
  elim (rem_9261 H);  intros.
  apply (rem_9260 epsilon_m__def_101_p__def_93);  tauto.
Defined.

Remark rem_9263 : forall X1 X2:term, auto___def_101 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9264 : forall X1 X2:term, auto___def_101 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9265 : forall X1 X2:term, auto___def_101 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9266 : auto___def_101 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9267 : forall X1 X2:term, auto___def_101 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9268 : forall X1 X2:term, auto___def_101 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9269 : forall X1 X2:term, auto___def_101 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9270 : forall X1:term, auto___def_101 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9271 : auto___def_101 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9272 : forall X1 X2:term, auto___def_101 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9273 : forall X1 X2:term, auto___def_101 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9274 : auto___def_101 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9275 : auto___def_101 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9276 : forall X1 X2:term, auto___def_101 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9277 : forall X1 X2:term, auto___def_101 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9278 : forall X1 X2:term, auto___def_101 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9279 : forall X1 X2:term, auto___def_101 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9280 : forall X1:term, auto___def_101 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9281 : forall X1 X2:term, auto___def_101 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9282 : auto___def_101 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9283 : auto___def_101 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9284 : auto___def_101 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9285 : forall X1 X2:term, auto___def_101 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9286 : forall X1 X2:term, auto___def_101 (key X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9287 : forall X1:term, auto___def_101 X1 -> auto___def_93 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_101_p__def_93 1.
  intro X. case X.
   intro H. elim (rem_9274  H).
   intro H. elim (rem_9266  H).
  intros X1 X2. intro H. elim (rem_9279 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9263 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9277 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9278 X1 X2 H).
   intro H. elim (rem_9282  H).
  intros X1 X2. intro H. elim (rem_9286 X1 X2 H).
   intro H. elim (rem_9283  H).
  intros X1 X2. intro H. elim (rem_9285 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9267 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9264 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9276 X1 X2 H).
  intros X1. intro H. elim (rem_9270 X1 H).
  intros X1 X2. intro H. elim (rem_9273 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9272 X1 X2 H).
   intro H. elim (rem_9275  H).
   intro H. elim (rem_9271  H).
  intros X1 X2. intro H. elim (rem_9269 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9268 X1 X2 H).
  intros X1. intro H. elim (rem_9280 X1 H).
   intro H. elim (rem_9284  H).
  intros X1 X2. intro H. elim (rem_9281 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9265 X1 X2 H).
  exact (rem_9262 epsilon_m__def_101_p__def_93 ).
Qed.

Remark rem_9288 : (forall X:term, auto___def_97 X -> auto___def_89 X)
    -> forall X1:term, auto___def_101 X1 -> auto___def_93 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_97_p__def_89. exact (rem_9287).
Defined.

Remark rem_9289 : (forall X:term, auto___def_97 X -> auto___def_89 X)
    -> forall X1 X2:term, auto___def_101 X1 -> auto___def_102 X2 -> auto___def_93 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_97_p__def_89. intros X1 X2.
  cut (auto___def_101 X1 -> auto___def_93 X1). tauto. exact (rem_9288 epsilon_m__def_97_p__def_89 X1).
Defined.

Remark rem_9290 : (forall X:term, auto___def_102 X -> auto___def_94 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_9291 : (forall X:term, auto___def_102 X -> auto___def_94 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_102_p__def_94. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_9290 epsilon_m__def_102_p__def_94 X1);  assumption.
  tauto.
Defined.

Remark rem_9292 : (forall X:term, auto___def_102 X -> auto___def_94 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_94 (r_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_102_p__def_94. intros X1 X2. intros A1.
  case (rem_9291 epsilon_m__def_102_p__def_94 X1 A1). clear  epsilon_m__def_102_p__def_94 A1. intros. apply trans___def_94_r_current_1;  tauto.
 clear  epsilon_m__def_102_p__def_94 A1. tauto.
Defined.

Remark rem_9293 : (forall X:term, auto___def_102 X -> auto___def_94 X)
    -> forall X1 X2:term, auto___def_102 (r_current X1 X2) -> auto___def_94 (r_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_102_p__def_94. intros X1 X2. intro H. intros.
  elim (rem_488 X1 X2 H);  intros.
  apply (rem_9292 epsilon_m__def_102_p__def_94 X1 X2);  tauto.
Defined.

Remark rem_9294 : forall X2:term, auto___def_102 X2 -> auto___def_94 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_102_p__def_94 1.
  intro X. case X.
   intro H. elim (rem_500  H).
   intro H. elim (rem_493  H).
  intros X1 X2. intro H. elim (rem_505 X1 X2 H).
  intros X1 X2. intro H. elim (rem_490 X1 X2 H).
  intros X1 X2. intro H. elim (rem_503 X1 X2 H).
  intros X1 X2. intro H. elim (rem_504 X1 X2 H).
   intro H. elim (rem_509  H).
  intros X1 X2. intro H. elim (rem_513 X1 X2 H).
   intro H. elim (rem_510  H).
  intros X1 X2. intro H. elim (rem_512 X1 X2 H).
  intros X1 X2. intro H. elim (rem_494 X1 X2 H).
  intros X1 X2. intro H. elim (rem_491 X1 X2 H).
  intros X1 X2. intro H. elim (rem_502 X1 X2 H).
  intros X1. intro H. elim (rem_496 X1 H).
  intros X1 X2. intro H. elim (rem_499 X1 X2 H).
  intros X1 X2. intro H. elim (rem_498 X1 X2 H).
   intro H. elim (rem_501  H).
   intro H. elim (rem_497  H).
  intros X1 X2;  exact (rem_9293 epsilon_m__def_102_p__def_94 X1 X2).
  intros X1 X2. intro H. elim (rem_495 X1 X2 H).
  intros X1. intro H. elim (rem_506 X1 H).
   intro H. elim (rem_511  H).
  intros X1 X2. intro H. elim (rem_508 X1 X2 H).
  intros X1 X2. intro H. elim (rem_492 X1 X2 H).
   intro H. elim (rem_507  H).
Qed.

Remark rem_9295 : (forall X:term, auto___def_97 X -> auto___def_89 X)
    -> forall X2:term, auto___def_102 X2 -> auto___def_94 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_97_p__def_89. exact (rem_9294).
Defined.

Remark rem_9296 : (forall X:term, auto___def_97 X -> auto___def_89 X)
    -> forall X1 X2:term, auto___def_101 X1 -> auto___def_102 X2 -> auto___def_94 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_97_p__def_89. intros X1 X2.
  cut (auto___def_102 X2 -> auto___def_94 X2). tauto. exact (rem_9295 epsilon_m__def_97_p__def_89 X2).
Defined.

Remark rem_9297 : (forall X:term, auto___def_97 X -> auto___def_89 X)
    -> forall X1 X2:term, auto___def_101 X1 -> auto___def_102 X2 -> (auto___def_93 X1 /\ auto___def_94 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_97_p__def_89. intros X1 X2. intros A1 A2.
  cut (auto___def_93 X1). 2:apply (rem_9289 epsilon_m__def_97_p__def_89 X1 X2);  assumption.
  cut (auto___def_94 X2). 2:apply (rem_9296 epsilon_m__def_97_p__def_89 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_9298 : (forall X:term, auto___def_97 X -> auto___def_89 X)
    -> forall X1 X2:term, auto___def_101 X1 -> auto___def_102 X2 -> auto___def_89 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_97_p__def_89. intros X1 X2. intros A1 A2.
  case (rem_9297 epsilon_m__def_97_p__def_89 X1 X2 A1 A2). clear  epsilon_m__def_97_p__def_89 A1 A2. intros. apply trans___def_89_key_1;  tauto.
 clear  epsilon_m__def_97_p__def_89 A1 A2. tauto.
Defined.

Remark rem_9299 : forall X1 X2:term, auto___def_97 (key X1 X2) -> or_1
    (auto___def_101 X1 /\ auto___def_102 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_9300 : (forall X:term, auto___def_97 X -> auto___def_89 X)
    -> forall X1 X2:term, auto___def_97 (key X1 X2) -> auto___def_89 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_97_p__def_89. intros X1 X2. intro H. intros.
  elim (rem_9299 X1 X2 H);  intros.
  apply (rem_9298 epsilon_m__def_97_p__def_89 X1 X2);  tauto.
Defined.

Remark rem_9301 : forall X1 X2:term, auto___def_97 (crypt X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9302 : forall X1 X2:term, auto___def_97 (nonceb_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9303 : forall X1 X2:term, auto___def_97 (session_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9304 : auto___def_97 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9305 : forall X1 X2:term, auto___def_97 (noncea_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9306 : forall X1 X2:term, auto___def_97 (r_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9307 : forall X1 X2:term, auto___def_97 (r_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9308 : forall X1:term, auto___def_97 (p X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9309 : auto___def_97 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9310 : forall X1 X2:term, auto___def_97 (passwd_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9311 : forall X1 X2:term, auto___def_97 (passwd_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9312 : auto___def_97 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9313 : auto___def_97 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9314 : forall X1 X2:term, auto___def_97 (nonceb_old X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9315 : forall X1 X2:term, auto___def_97 (dec X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9316 : forall X1 X2:term, auto___def_97 (enc X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9317 : forall X1 X2:term, auto___def_97 (cons X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9318 : forall X1:term, auto___def_97 (s X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9319 : auto___def_97 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9320 : forall X1 X2:term, auto___def_97 (session_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9321 : auto___def_97 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9322 : auto___def_97 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9323 : auto___def_97 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9324 : forall X1 X2:term, auto___def_97 (noncea_current X1 X2) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_9325 : forall X2:term, auto___def_97 X2 -> auto___def_89 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_97_p__def_89 1.
  intro X. case X.
   intro H. elim (rem_9312  H).
   intro H. elim (rem_9304  H).
  intros X1 X2. intro H. elim (rem_9317 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9301 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9315 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9316 X1 X2 H).
   intro H. elim (rem_9321  H).
  intros X1 X2;  exact (rem_9300 epsilon_m__def_97_p__def_89 X1 X2).
   intro H. elim (rem_9322  H).
  intros X1 X2. intro H. elim (rem_9324 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9305 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9302 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9314 X1 X2 H).
  intros X1. intro H. elim (rem_9308 X1 H).
  intros X1 X2. intro H. elim (rem_9311 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9310 X1 X2 H).
   intro H. elim (rem_9313  H).
   intro H. elim (rem_9309  H).
  intros X1 X2. intro H. elim (rem_9307 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9306 X1 X2 H).
  intros X1. intro H. elim (rem_9318 X1 H).
   intro H. elim (rem_9323  H).
  intros X1 X2. intro H. elim (rem_9320 X1 X2 H).
  intros X1 X2. intro H. elim (rem_9303 X1 X2 H).
   intro H. elim (rem_9319  H).
Qed.

Remark rem_9326 : forall X1 X2:term, auto___def_96 X1 -> auto___def_97 X2 -> auto___def_89 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_97 X2 -> auto___def_89 X2). tauto. exact (rem_9325 X2).
Qed.

Remark rem_9327 : forall X1 X2:term, auto___def_96 X1 -> auto___def_97 X2 -> (auto___def_88 X1 /\ auto___def_89 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_9258 X1 X2);  assumption.
  cut (auto___def_89 X2). 2:apply (rem_9326 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_9328 : forall X1 X2:term, auto___def_96 X1 -> auto___def_97 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_9327 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_9329 : forall X1 X2:term, auto___def_97 X2 -> auto___def_96 X1 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_96 X1 -> auto___def_97 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_9328 X1 X2).
Qed.

Remark rem_9330 : forall X1:term, auto_knows_current (s X1) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_1037 X1 H);  intros.
  apply (rem_288 X1);  tauto.
Qed.

Remark rem_9331 : forall X1:term, auto___def_60 X1 -> auto___def_60 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_9332 : forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___def_60 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_60 X1 -> auto___def_60 X1). tauto. exact (rem_9331 X1).
Qed.

Remark rem_9333 : forall X2:term, auto___type_16 X2 -> auto___type_16 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_9334 : forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto___type_16 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_16 X2 -> auto___type_16 X2). tauto. exact (rem_9333 X2).
Qed.

Remark rem_9335 : forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> (auto___def_60 X1 /\ auto___type_16 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_60 X1). 2:apply (rem_9332 X1 X2);  assumption.
  cut (auto___type_16 X2). 2:apply (rem_9334 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_9336 : forall X1 X2:term, auto___def_60 X1 -> auto___type_16 X2 -> auto_testable_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_9335 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_testable_old_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_9337 : forall X1 X2:term, auto___type_16 X2 -> auto___def_60 X1 -> auto_testable_old (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_60 X1 -> auto___type_16 X2 -> auto_testable_old (key X1 X2)). tauto. exact (rem_9336 X1 X2).
Qed.

Remark rem_9338 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (enc X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6768 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_enc_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_9339 : forall X1 X2:term, auto___def_10 X2 -> auto___def_11 X1 -> auto_testable_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7613 X2)). tauto.
Qed.

Remark rem_9340 : forall X1 X2:term, auto___def_15 X2 -> auto___def_16 X1 -> auto_testable_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7734 X2)). tauto.
Qed.

Remark rem_9341 : forall X1 X2:term, auto___def_19 X2 -> auto___def_20 X1 -> auto_testable_old X2 -> auto_testable_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7855 X2)). tauto.
Qed.

Remark rem_9342 : forall X1 X2:term, auto_knows_old (enc X2 X1) -> auto_testable_old X2 -> auto_testable_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1290 X2 X1 H);  intros.
  apply (rem_9339 X1 X2);  tauto.
  apply (rem_9340 X1 X2);  tauto.
  apply (rem_9341 X1 X2);  tauto.
  apply (rem_6751 X1 X2);  tauto.
Qed.

Remark rem_9343 : forall X1:term, auto___def_84 X1 -> auto___def_84 X1. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_9344 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_84 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_84 X1). tauto. exact (rem_9343 X1).
Qed.

Remark rem_9345 : forall X2:term, auto___def_85 X2 -> auto___def_85 X2. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_9346 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_9345 X2).
Qed.

Remark rem_9347 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> (auto___def_84 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_84 X1). 2:apply (rem_9344 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_9346 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_9348 : forall X1 X2:term, auto___def_84 X1 -> auto___def_85 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_9347 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_crypt_9;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_9349 : forall X1 X2:term, auto___def_85 X2 -> auto___def_84 X1 -> auto_knows_current (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_84 X1 -> auto___def_85 X2 -> auto_knows_current (crypt X1 X2)). tauto. exact (rem_9348 X1 X2).
Qed.

(* [trnp] Proofs of translated source clauses. *)


Lemma lem_intruder_knows_session_key_as_seen_by_bob : forall _big_k:term, auto_bob_key_current bob _big_k -> auto_knows_current _big_k -> auto___query__intruder_knows_session_key_as_seen_by_bob.
Proof.
   intros _big_k. intros H1 H2.
  exact (rem_5128 _big_k
          H1
          H2).
Qed.

Lemma lem_intruder_knows_session_key_as_seen_by_alice : forall _big_k:term, auto_alice_key_current alice _big_k -> auto_knows_current _big_k -> auto___query__intruder_knows_session_key_as_seen_by_alice.
Proof.
   intros _big_k. intros H1 H2.
  exact (rem_6719 _big_k
          H1
          H2).
Qed.

Lemma lem_intruder_knows_own_private_key_current : auto_knows_current (key prv i).
Proof.
  
  exact (rem_6708 prv i
          rem_2095
          rem_4300).
Qed.

Lemma lem_testable_dec_key_dec_current : forall _big_m X:term, auto_knows_current (enc _big_m X) -> auto_testable_current _big_m -> auto_testable_current X.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_6764 X _big_m
          H1
          H2).
Qed.

Lemma lem_testable_dec_key_current : forall _big_m X:term, auto_knows_current _big_m -> auto_testable_current (dec _big_m X) -> auto_testable_current X.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_6904 X _big_m
          H2
          H1).
Qed.

Lemma lem_testable_enc_key_dec_current : forall _big_m X:term, auto_knows_current (dec _big_m X) -> auto_testable_current _big_m -> auto_testable_current X.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_8518 X _big_m
          H1
          H2).
Qed.

Lemma lem_testable_enc_key_current : forall _big_m X:term, auto_knows_current _big_m -> auto_testable_current (enc _big_m X) -> auto_testable_current X.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_7025 X _big_m
          H2
          H1).
Qed.

Lemma lem_testable_enc_dec_current : forall _big_k _big_m:term, auto_knows_current _big_k -> auto_testable_current _big_m -> auto_testable_current (dec _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6795 _big_m _big_k
          H1
          H2).
Qed.

Lemma lem_testable_enc_current : forall _big_k _big_m:term, auto_knows_current _big_k -> auto_testable_current (enc _big_m _big_k) -> auto_testable_current _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6739 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_testable_dec_dec_current : forall _big_k _big_m:term, auto_knows_current _big_k -> auto_testable_current (dec _big_m _big_k) -> auto_testable_current _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_5149 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_testable_dec_current : forall _big_k _big_m:term, auto_knows_current _big_k -> auto_testable_current _big_m -> auto_testable_current (enc _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6925 _big_m _big_k
          H1
          H2).
Qed.

Lemma lem_testable_encrypt_key_current : forall _big_m X:term, auto_knows_current _big_m -> auto_testable_current (crypt _big_m X) -> auto_testable_current X.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_6683 X _big_m
          H2
          H1).
Qed.

Lemma lem_testable_decrypt_key_symmetric_key_current : forall _big_k _big_m:term, auto_knows_current (crypt _big_m (key sym _big_k)) -> auto_testable_current _big_m -> auto_testable_current (key sym _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6701 sym _big_k
          (rem_549 _big_k _big_m
            (rem_3513 _big_k _big_m
              H1)
            H2)
          rem_1080).
Qed.

Lemma lem_testable_decrypt_key_public_key_current : forall _big_k _big_m:term, auto_knows_current (crypt _big_m (key prv _big_k)) -> auto_testable_current _big_m -> auto_testable_current (key pub _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8884 pub _big_k
          (rem_341 _big_k _big_m
            (rem_2194 _big_k _big_m
              H1)
            H2)
          rem_1249).
Qed.

Lemma lem_testable_decrypt_key_private_key_current : forall _big_k _big_m:term, auto_knows_current (crypt _big_m (key pub _big_k)) -> auto_testable_current _big_m -> auto_testable_current (key prv _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_7101 prv _big_k
          (rem_4273 _big_k _big_m
            (rem_1459 _big_k _big_m
              H1)
            H2)
          rem_2356).
Qed.

Lemma lem_testable_encrypt_current : forall _big_k _big_m:term, auto_knows_current _big_k -> auto_testable_current (crypt _big_m _big_k) -> auto_testable_current _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8337 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_testable_decrypt_symmetric_key_current : forall _big_m X:term, auto_knows_current (key sym X) -> auto_testable_current _big_m -> auto_testable_current (crypt _big_m (key sym X)).
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_8803 _big_m (key sym X)
          (rem_3662 sym X
            (rem_1318 X
              H1)
            rem_3688)
          (rem_3922 _big_m
            H2)).
Qed.

Lemma lem_testable_decrypt_public_key_current : forall _big_k _big_m:term, auto_knows_current (key pub _big_k) -> auto_testable_current _big_m -> auto_testable_current (crypt _big_m (key prv _big_k)).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6714 _big_m (key prv _big_k)
          (rem_2518 prv _big_k
            (rem_1789 _big_k
              H1)
            rem_1737)
          (rem_724 _big_m
            H2)).
Qed.

Lemma lem_testable_decrypt_private_key_current : forall _big_k _big_m:term, auto_knows_current (key prv _big_k) -> auto_testable_current _big_m -> auto_testable_current (crypt _big_m (key pub _big_k)).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6911 _big_m (key pub _big_k)
          (rem_1917 pub _big_k
            (rem_4319 _big_k
              H1)
            rem_1738)
          (rem_4231 _big_m
            H2)).
Qed.

Lemma lem_testable_succ_pred_current : forall _big_m:term, auto_testable_current _big_m -> auto_testable_current (p _big_m).
Proof.
   intros _big_m. intros H1.
  exact (rem_6913 _big_m
          H1).
Qed.

Lemma lem_testable_succ_current : forall _big_m:term, auto_testable_current (s _big_m) -> auto_testable_current _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_6914 _big_m
          H1).
Qed.

Lemma lem_testable_pred_pred_current : forall _big_m:term, auto_testable_current (p _big_m) -> auto_testable_current _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_8528 _big_m
          H1).
Qed.

Lemma lem_testable_pred_current : forall _big_m:term, auto_testable_current _big_m -> auto_testable_current (s _big_m).
Proof.
   intros _big_m. intros H1.
  exact (rem_6915 _big_m
          H1).
Qed.

Lemma lem_second_testable_current : forall _big_l _big_m:term, auto_testable_current _big_l -> auto_testable_current (cons _big_m _big_l).
Proof.
   intros _big_l _big_m. intros H1.
  exact (rem_6688 _big_m _big_l
          H1).
Qed.

Lemma lem_first_testable_current : forall _big_l _big_m:term, auto_testable_current _big_m -> auto_testable_current (cons _big_m _big_l).
Proof.
   intros _big_l _big_m. intros H1.
  exact (rem_5136 _big_m _big_l
          H1).
Qed.

Lemma lem_known_implies_testable_current : forall _big_m:term, auto_knows_current _big_m -> auto_testable_current _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_6381 _big_m
          H1).
Qed.

Lemma lem_intruder_weak_secret_dec_dec_current : forall _big_m _big_p:term, auto_testable_current _big_m -> auto_testable_current (dec _big_m _big_p) -> auto_knows_current _big_p.
Proof.
   intros _big_m _big_p. intros H1 H2.
  exact (rem_6917 _big_p _big_m
          H2
          H1).
Qed.

Lemma lem_intruder_weak_secret_dec_current : forall _big_m _big_p:term, auto_testable_current (enc _big_m _big_p) -> auto_testable_current _big_m -> auto_knows_current _big_p.
Proof.
   intros _big_m _big_p. intros H1 H2.
  exact (rem_5611 _big_p _big_m
          H1
          H2).
Qed.

Lemma lem_intruder_knows_agents_public_key_current : forall X:term, auto_agent X -> auto_knows_current (key pub X).
Proof.
   intros X. intros H1.
  exact (rem_8339 pub X
          H1
          rem_4306).
Qed.

Lemma lem_intruder_knows_all_agents_current : forall X:term, auto_agent X -> auto_knows_current X.
Proof.
   intros X. intros H1.
  exact (rem_1728 X
          H1).
Qed.

Lemma lem_define_bob_key_dec_current : forall _big_a _big_b _big_m _big_na:term, auto_knows_current (crypt (nonceb_current _big_a _big_b) (key sym (r_current _big_a _big_b))) -> auto_knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) -> auto_knows_current (cons _big_a (cons _big_m nil)) -> auto_bob_key_current _big_a (r_current _big_a _big_b).
Proof.
   intros _big_a _big_b _big_m _big_na. intros H1 H2 H3.
  exact (rem_9064 _big_a (r_current _big_a _big_b)
          (rem_3760 _big_a _big_b
            (rem_3687 _big_b _big_a _big_na _big_m
              H1
              H2
              H3))
          (rem_4081 _big_a _big_b
            (rem_3687 _big_b _big_a _big_na _big_m
              H1
              H2
              H3))).
Qed.

Lemma lem_define_bob_key_current : forall _big_a _big_b _big_ka _big_na:term, auto_knows_current (crypt (nonceb_current _big_a _big_b) (key sym (r_current _big_a _big_b))) -> auto_knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) -> auto_knows_current (cons _big_a (cons (enc _big_ka (passwd_current _big_a _big_b)) nil)) -> auto_bob_key_current _big_a (r_current _big_a _big_b).
Proof.
   intros _big_a _big_b _big_ka _big_na. intros H1 H2 H3.
  exact (rem_7110 _big_a (r_current _big_a _big_b)
          (rem_356 _big_a _big_b
            (rem_4311 _big_b _big_a _big_na _big_ka
              H1
              H2
              H3))
          (rem_1079 _big_a _big_b
            (rem_4311 _big_b _big_a _big_na _big_ka
              H1
              H2
              H3))).
Qed.

Lemma lem_define_alice_key_current : forall _big_a _big_b _big_nb _big_r:term, auto_knows_current (crypt (cons (noncea_current _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) -> auto_knows_current (enc (crypt _big_r (key pub (session_current _big_a _big_b))) (passwd_current _big_a _big_b)) -> auto_alice_key_current _big_a _big_r.
Proof.
   intros _big_a _big_b _big_nb _big_r. intros H1 H2.
  exact (rem_6729 _big_a _big_r _big_b _big_nb
          (rem_3749 _big_r _big_b _big_a
            H2)
          (rem_2893 _big_r _big_b _big_nb _big_a
            H1)).
Qed.

Lemma lem_message5_current : forall _big_a _big_b _big_nb _big_r:term, auto_knows_current (crypt (cons (noncea_current _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) -> auto_knows_current (enc (crypt _big_r (key pub (session_current _big_a _big_b))) (passwd_current _big_a _big_b)) -> auto_knows_current (crypt _big_nb (key sym _big_r)).
Proof.
   intros _big_a _big_b _big_nb _big_r. intros H1 H2.
  exact (rem_5142 _big_nb (key sym _big_r)
          (rem_1248 sym _big_r
            (rem_42 _big_r _big_nb
              (rem_2840 _big_r _big_nb _big_a _big_b
                H2
                H1))
            rem_1881)
          (rem_3245 _big_nb _big_r
            (rem_2840 _big_r _big_nb _big_a _big_b
              H2
              H1))).
Qed.

Lemma lem_message4_dec_current : forall _big_a _big_b _big_m _big_na:term, auto_knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) -> auto_knows_current (cons _big_a (cons _big_m nil)) -> auto_knows_current (crypt (cons _big_na (cons (nonceb_current _big_a _big_b) nil)) (key sym (r_current _big_a _big_b))).
Proof.
   intros _big_a _big_b _big_m _big_na. intros H1 H2.
  exact (rem_9329 (cons _big_na (cons (nonceb_current _big_a _big_b) nil)) (key sym (r_current _big_a _big_b))
          (rem_3958 sym (r_current _big_a _big_b)
            (rem_299 _big_a _big_b _big_na
              (rem_3619 _big_b _big_na _big_a _big_m
                H1
                H2))
            rem_920)
          (rem_2397 _big_na (cons (nonceb_current _big_a _big_b) nil)
            (rem_2529 (nonceb_current _big_a _big_b) nil
              rem_2094
              (rem_352 _big_a _big_b _big_na
                (rem_3619 _big_b _big_na _big_a _big_m
                  H1
                  H2)))
            (rem_2384 _big_na _big_b _big_a
              (rem_3619 _big_b _big_na _big_a _big_m
                H1
                H2)))).
Qed.

Lemma lem_message4_current : forall _big_a _big_b _big_ka _big_na:term, auto_knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) -> auto_knows_current (cons _big_a (cons (enc _big_ka (passwd_current _big_a _big_b)) nil)) -> auto_knows_current (crypt (cons _big_na (cons (nonceb_current _big_a _big_b) nil)) (key sym (r_current _big_a _big_b))).
Proof.
   intros _big_a _big_b _big_ka _big_na. intros H1 H2.
  exact (rem_6746 (cons _big_na (cons (nonceb_current _big_a _big_b) nil)) (key sym (r_current _big_a _big_b))
          (rem_3756 sym (r_current _big_a _big_b)
            (rem_2130 _big_a _big_b _big_na
              (rem_3117 _big_b _big_na _big_a _big_ka
                H1
                H2))
            rem_3959)
          (rem_2101 _big_na (cons (nonceb_current _big_a _big_b) nil)
            (rem_2404 (nonceb_current _big_a _big_b) nil
              rem_2116
              (rem_1866 _big_a _big_b _big_na
                (rem_3117 _big_b _big_na _big_a _big_ka
                  H1
                  H2)))
            (rem_1710 _big_na _big_b _big_a
              (rem_3117 _big_b _big_na _big_a _big_ka
                H1
                H2)))).
Qed.

Lemma lem_message3_current : forall _big_a _big_b _big_r:term, auto_knows_current (enc (crypt _big_r (key pub (session_current _big_a _big_b))) (passwd_current _big_a _big_b)) -> auto_knows_current (crypt (noncea_current _big_a _big_b) (key sym _big_r)).
Proof.
   intros _big_a _big_b _big_r. intros H1.
  exact (rem_9349 (noncea_current _big_a _big_b) (key sym _big_r)
          (rem_1873 sym _big_r
            (rem_309 _big_r _big_b _big_a
              (rem_3749 _big_r _big_b _big_a
                H1))
            rem_2530)
          (rem_929 _big_a _big_b _big_r
            (rem_3749 _big_r _big_b _big_a
              H1))).
Qed.

Lemma lem_message2_dec_current : forall _big_a _big_b _big_m:term, auto_knows_current (cons _big_a (cons _big_m nil)) -> auto_knows_current (enc (crypt (r_current _big_a _big_b) (dec _big_m (passwd_current _big_a _big_b))) (passwd_current _big_a _big_b)).
Proof.
   intros _big_a _big_b _big_m. intros H1.
  exact (rem_6775 (crypt (r_current _big_a _big_b) (dec _big_m (passwd_current _big_a _big_b))) (passwd_current _big_a _big_b)
          (rem_919 _big_a _big_b _big_m
            (rem_2108 _big_a _big_m
              H1))
          (rem_4250 (r_current _big_a _big_b) (dec _big_m (passwd_current _big_a _big_b))
            (rem_1385 _big_m (passwd_current _big_a _big_b)
              (rem_919 _big_a _big_b _big_m
                (rem_2108 _big_a _big_m
                  H1))
              (rem_1241 _big_m _big_a
                (rem_2108 _big_a _big_m
                  H1)))
            (rem_2134 _big_a _big_b _big_m
              (rem_2108 _big_a _big_m
                H1)))).
Qed.

Lemma lem_message2_current : forall _big_a _big_b _big_ka:term, auto_knows_current (cons _big_a (cons (enc _big_ka (passwd_current _big_a _big_b)) nil)) -> auto_knows_current (enc (crypt (r_current _big_a _big_b) _big_ka) (passwd_current _big_a _big_b)).
Proof.
   intros _big_a _big_b _big_ka. intros H1.
  exact (rem_5166 (crypt (r_current _big_a _big_b) _big_ka) (passwd_current _big_a _big_b)
          (rem_4305 _big_a _big_b _big_ka
            (rem_3465 _big_b _big_ka _big_a
              H1))
          (rem_1468 (r_current _big_a _big_b) _big_ka
            (rem_831 _big_ka _big_b _big_a
              (rem_3465 _big_b _big_ka _big_a
                H1))
            (rem_1733 _big_a _big_b _big_ka
              (rem_3465 _big_b _big_ka _big_a
                H1)))).
Qed.

Lemma lem_message1_current : forall _big_a _big_b:term, auto_agent _big_b -> auto_agent _big_a -> auto_knows_current (cons _big_a (cons (enc (key pub (session_current _big_a _big_b)) (passwd_current _big_a _big_b)) nil)).
Proof.
   intros _big_a _big_b. intros H1 H2.
  exact (rem_7547 _big_a (cons (enc (key pub (session_current _big_a _big_b)) (passwd_current _big_a _big_b)) nil)
          (rem_1369 (enc (key pub (session_current _big_a _big_b)) (passwd_current _big_a _big_b)) nil
            rem_1736
            (rem_348 (key pub (session_current _big_a _big_b)) (passwd_current _big_a _big_b)
              (rem_1817 _big_a _big_b
                H1
                H2)
              (rem_4296 pub (session_current _big_a _big_b)
                (rem_4232 _big_a _big_b
                  H1
                  H2)
                rem_1461)))
          (rem_2126 _big_a
            H2)).
Qed.

Lemma lem_intruder_can_dec_enc_current : forall _big_k _big_m:term, auto_knows_current _big_k -> auto_knows_current (enc _big_m _big_k) -> auto_knows_current _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_5095 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_intruder_can_dec_current : forall _big_k _big_m:term, auto_knows_current _big_k -> auto_knows_current _big_m -> auto_knows_current (dec _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8527 _big_m _big_k
          H1
          H2).
Qed.

Lemma lem_intruder_can_enc_dec_current : forall _big_k _big_m:term, auto_knows_current _big_k -> auto_knows_current (dec _big_m _big_k) -> auto_knows_current _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6766 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_intruder_can_enc_current : forall _big_k _big_m:term, auto_knows_current _big_k -> auto_knows_current _big_m -> auto_knows_current (enc _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_9338 _big_m _big_k
          H1
          H2).
Qed.

Lemma lem_intruder_can_compute_predecessors_succ_current : forall _big_m:term, auto_knows_current _big_m -> auto_knows_current (p _big_m).
Proof.
   intros _big_m. intros H1.
  exact (rem_6749 _big_m
          H1).
Qed.

Lemma lem_intruder_can_compute_predecessors_current : forall _big_m:term, auto_knows_current (s _big_m) -> auto_knows_current _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_9330 _big_m
          H1).
Qed.

Lemma lem_intruder_can_compute_successors_pred_current : forall _big_m:term, auto_knows_current (p _big_m) -> auto_knows_current _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_7548 _big_m
          H1).
Qed.

Lemma lem_intruder_can_compute_successors_current : forall _big_m:term, auto_knows_current _big_m -> auto_knows_current (s _big_m).
Proof.
   intros _big_m. intros H1.
  exact (rem_6782 _big_m
          H1).
Qed.

Lemma lem_intruder_can_decrypt_if_has_symmetric_key_current : forall _big_m X:term, auto_knows_current (crypt _big_m (key sym X)) -> auto_knows_current (key sym X) -> auto_knows_current _big_m.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_6912 _big_m X
          (rem_3513 X _big_m
            H1)
          (rem_1318 X
            H2)).
Qed.

Lemma lem_intruder_can_decrypt_if_has_public_key_current : forall _big_k _big_m:term, auto_knows_current (crypt _big_m (key prv _big_k)) -> auto_knows_current (key pub _big_k) -> auto_knows_current _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8535 _big_m _big_k
          (rem_2194 _big_k _big_m
            H1)
          (rem_1789 _big_k
            H2)).
Qed.

Lemma lem_intruder_can_decrypt_if_has_private_key_current : forall _big_k _big_m:term, auto_knows_current (crypt _big_m (key pub _big_k)) -> auto_knows_current (key prv _big_k) -> auto_knows_current _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8819 _big_m _big_k
          (rem_1459 _big_k _big_m
            H1)
          (rem_4319 _big_k
            H2)).
Qed.

Lemma lem_intruder_can_encrypt_current : forall _big_k _big_m:term, auto_knows_current _big_m -> auto_knows_current _big_k -> auto_knows_current (crypt _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6769 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_intruder_can_build_pairs_current : forall _big_m1 _big_m2:term, auto_knows_current _big_m1 -> auto_knows_current _big_m2 -> auto_knows_current (cons _big_m1 _big_m2).
Proof.
   intros _big_m1 _big_m2. intros H1 H2.
  exact (rem_7182 _big_m1 _big_m2
          H2
          H1).
Qed.

Lemma lem_intruder_can_take_second_components_current : forall _big_m1 _big_m2:term, auto_knows_current (cons _big_m1 _big_m2) -> auto_knows_current _big_m2.
Proof.
   intros _big_m1 _big_m2. intros H1.
  exact (rem_8821 _big_m2 _big_m1
          H1).
Qed.

Lemma lem_intruder_can_take_first_components_current : forall _big_m1 _big_m2:term, auto_knows_current (cons _big_m1 _big_m2) -> auto_knows_current _big_m1.
Proof.
   intros _big_m1 _big_m2. intros H1.
  exact (rem_7104 _big_m1 _big_m2
          H1).
Qed.

Lemma lem_intruder_knows_nil_current : auto_knows_current nil.
Proof.
  
  exact rem_7194.
Qed.

Lemma lem_intruder_knows_all_previous_nonceb : forall _big_a _big_b:term, auto_knows_current (nonceb_old _big_a _big_b).
Proof.
   intros _big_a _big_b.
  exact (rem_8519 _big_a _big_b).
Qed.

Lemma lem_intruder_knows_all_previous_noncea : forall _big_a _big_b:term, auto_knows_current (noncea_old _big_a _big_b).
Proof.
   intros _big_a _big_b.
  exact (rem_5155 _big_a _big_b).
Qed.

Lemma lem_intruder_knows_all_previous_passwords : forall _big_a _big_b:term, auto_knows_current (passwd_old _big_a _big_b).
Proof.
   intros _big_a _big_b.
  exact (rem_6734 _big_a _big_b).
Qed.

Lemma lem_intruder_remembers : forall _big_m:term, auto_knows_old _big_m -> auto_knows_current _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_5923 _big_m
          H1).
Qed.

Lemma lem_intruder_knows_own_private_key_old : auto_knows_old (key prv i).
Proof.
  
  exact (rem_6756 prv i
          rem_2095
          rem_4300).
Qed.

Lemma lem_testable_dec_key_dec_old : forall _big_m X:term, auto_knows_old (enc _big_m X) -> auto_testable_old _big_m -> auto_testable_old X.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_9342 X _big_m
          H1
          H2).
Qed.

Lemma lem_testable_dec_key_old : forall _big_m X:term, auto_knows_old _big_m -> auto_testable_old (dec _big_m X) -> auto_testable_old X.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_6754 X _big_m
          H2
          H1).
Qed.

Lemma lem_testable_enc_key_dec_old : forall _big_m X:term, auto_knows_old (dec _big_m X) -> auto_testable_old _big_m -> auto_testable_old X.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_6905 X _big_m
          H1
          H2).
Qed.

Lemma lem_testable_enc_key_old : forall _big_m X:term, auto_knows_old _big_m -> auto_testable_old (enc _big_m X) -> auto_testable_old X.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_7463 X _big_m
          H2
          H1).
Qed.

Lemma lem_testable_enc_dec_old : forall _big_k _big_m:term, auto_knows_old _big_k -> auto_testable_old _big_m -> auto_testable_old (dec _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_7860 _big_m _big_k
          H1
          H2).
Qed.

Lemma lem_testable_enc_old : forall _big_k _big_m:term, auto_knows_old _big_k -> auto_testable_old (enc _big_m _big_k) -> auto_testable_old _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_9113 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_testable_dec_dec_old : forall _big_k _big_m:term, auto_knows_old _big_k -> auto_testable_old (dec _big_m _big_k) -> auto_testable_old _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6785 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_testable_dec_old : forall _big_k _big_m:term, auto_knows_old _big_k -> auto_testable_old _big_m -> auto_testable_old (enc _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_5159 _big_m _big_k
          H1
          H2).
Qed.

Lemma lem_testable_encrypt_key_old : forall _big_m X:term, auto_knows_old _big_m -> auto_testable_old (crypt _big_m X) -> auto_testable_old X.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_8514 X _big_m
          H2
          H1).
Qed.

Lemma lem_testable_decrypt_key_symmetric_key_old : forall _big_k _big_m:term, auto_knows_old (crypt _big_m (key sym _big_k)) -> auto_testable_old _big_m -> auto_testable_old (key sym _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_9337 sym _big_k
          (rem_854 _big_k _big_m
            (rem_1910 _big_k _big_m
              H1)
            H2)
          rem_1250).
Qed.

Lemma lem_testable_decrypt_key_public_key_old : forall _big_k _big_m:term, auto_knows_old (crypt _big_m (key prv _big_k)) -> auto_testable_old _big_m -> auto_testable_old (key pub _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8598 pub _big_k
          (rem_2900 _big_k _big_m
            (rem_4290 _big_k _big_m
              H1)
            H2)
          rem_856).
Qed.

Lemma lem_testable_decrypt_key_private_key_old : forall _big_k _big_m:term, auto_knows_old (crypt _big_m (key pub _big_k)) -> auto_testable_old _big_m -> auto_testable_old (key prv _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_7181 prv _big_k
          (rem_1118 _big_k _big_m
            (rem_3682 _big_k _big_m
              H1)
            H2)
          rem_921).
Qed.

Lemma lem_testable_encrypt_old : forall _big_k _big_m:term, auto_knows_old _big_k -> auto_testable_old (crypt _big_m _big_k) -> auto_testable_old _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_4816 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_testable_decrypt_symmetric_key_old : forall _big_m X:term, auto_knows_old (key sym X) -> auto_testable_old _big_m -> auto_testable_old (crypt _big_m (key sym X)).
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_4975 _big_m (key sym X)
          (rem_913 sym X
            (rem_3577 X
              H1)
            rem_3757)
          (rem_171 _big_m
            H2)).
Qed.

Lemma lem_testable_decrypt_public_key_old : forall _big_k _big_m:term, auto_knows_old (key pub _big_k) -> auto_testable_old _big_m -> auto_testable_old (crypt _big_m (key prv _big_k)).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8525 _big_m (key prv _big_k)
          (rem_3574 prv _big_k
            (rem_3134 _big_k
              H1)
            rem_1711)
          (rem_275 _big_m
            H2)).
Qed.

Lemma lem_testable_decrypt_private_key_old : forall _big_k _big_m:term, auto_knows_old (key prv _big_k) -> auto_testable_old _big_m -> auto_testable_old (crypt _big_m (key pub _big_k)).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6694 _big_m (key pub _big_k)
          (rem_3251 pub _big_k
            (rem_1362 _big_k
              H1)
            rem_2131)
          (rem_1606 _big_m
            H2)).
Qed.

Lemma lem_testable_succ_pred_old : forall _big_m:term, auto_testable_old _big_m -> auto_testable_old (p _big_m).
Proof.
   intros _big_m. intros H1.
  exact (rem_8526 _big_m
          H1).
Qed.

Lemma lem_testable_succ_old : forall _big_m:term, auto_testable_old (s _big_m) -> auto_testable_old _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_7102 _big_m
          H1).
Qed.

Lemma lem_testable_pred_pred_old : forall _big_m:term, auto_testable_old (p _big_m) -> auto_testable_old _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_6796 _big_m
          H1).
Qed.

Lemma lem_testable_pred_old : forall _big_m:term, auto_testable_old _big_m -> auto_testable_old (s _big_m).
Proof.
   intros _big_m. intros H1.
  exact (rem_5131 _big_m
          H1).
Qed.

Lemma lem_second_testable_old : forall _big_l _big_m:term, auto_testable_old _big_l -> auto_testable_old (cons _big_m _big_l).
Proof.
   intros _big_l _big_m. intros H1.
  exact (rem_5176 _big_m _big_l
          H1).
Qed.

Lemma lem_first_testable_old : forall _big_l _big_m:term, auto_testable_old _big_m -> auto_testable_old (cons _big_m _big_l).
Proof.
   intros _big_l _big_m. intros H1.
  exact (rem_6750 _big_m _big_l
          H1).
Qed.

Lemma lem_known_implies_testable_old : forall _big_m:term, auto_knows_old _big_m -> auto_testable_old _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_4812 _big_m
          H1).
Qed.

Lemma lem_intruder_weak_secret_dec_dec_old : forall _big_m _big_p:term, auto_testable_old _big_m -> auto_testable_old (dec _big_m _big_p) -> auto_knows_old _big_p.
Proof.
   intros _big_m _big_p. intros H1 H2.
  exact (rem_6733 _big_p _big_m
          H2
          H1).
Qed.

Lemma lem_intruder_weak_secret_dec_old : forall _big_m _big_p:term, auto_testable_old (enc _big_m _big_p) -> auto_testable_old _big_m -> auto_knows_old _big_p.
Proof.
   intros _big_m _big_p. intros H1 H2.
  exact (rem_7858 _big_p _big_m
          H1
          H2).
Qed.

Lemma lem_intruder_knows_agents_public_key_old : forall X:term, auto_agent X -> auto_knows_old (key pub X).
Proof.
   intros X. intros H1.
  exact (rem_6781 pub X
          H1
          rem_4306).
Qed.

Lemma lem_intruder_knows_all_agents_old : forall X:term, auto_agent X -> auto_knows_old X.
Proof.
   intros X. intros H1.
  exact (rem_1806 X
          H1).
Qed.

Lemma lem_define_bob_key_dec_old : forall _big_a _big_b _big_m _big_na:term, auto_knows_old (crypt (nonceb_old _big_a _big_b) (key sym (r_old _big_a _big_b))) -> auto_knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) -> auto_knows_old (cons _big_a (cons _big_m nil)) -> auto_bob_key_old _big_a (r_old _big_a _big_b).
Proof.
   intros _big_a _big_b _big_m _big_na. intros H1 H2 H3.
  exact (rem_5154 _big_a (r_old _big_a _big_b)
          (rem_1371 _big_a _big_b
            (rem_932 _big_b _big_a _big_na _big_m
              H1
              H2
              H3))
          (rem_1712 _big_a _big_b
            (rem_932 _big_b _big_a _big_na _big_m
              H1
              H2
              H3))).
Qed.

Lemma lem_define_bob_key_old : forall _big_a _big_b _big_ka _big_na:term, auto_knows_old (crypt (nonceb_old _big_a _big_b) (key sym (r_old _big_a _big_b))) -> auto_knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) -> auto_knows_old (cons _big_a (cons (enc _big_ka (passwd_old _big_a _big_b)) nil)) -> auto_bob_key_old _big_a (r_old _big_a _big_b).
Proof.
   intros _big_a _big_b _big_ka _big_na. intros H1 H2 H3.
  exact (rem_6759 _big_a (r_old _big_a _big_b)
          (rem_1735 _big_a _big_b
            (rem_3568 _big_b _big_a _big_na _big_ka
              H1
              H2
              H3))
          (rem_1 _big_a _big_b
            (rem_3568 _big_b _big_a _big_na _big_ka
              H1
              H2
              H3))).
Qed.

Lemma lem_define_alice_key_old : forall _big_a _big_b _big_nb _big_r:term, auto_knows_old (crypt (cons (noncea_old _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) -> auto_knows_old (enc (crypt _big_r (key pub (session_old _big_a _big_b))) (passwd_old _big_a _big_b)) -> auto_alice_key_old _big_a _big_r.
Proof.
   intros _big_a _big_b _big_nb _big_r. intros H1 H2.
  exact (rem_5152 _big_a _big_r _big_b _big_nb
          (rem_301 _big_r _big_b _big_nb _big_a
            H1)
          (rem_1862 _big_r _big_b _big_a
            H2)).
Qed.

Lemma lem_message5_old : forall _big_a _big_b _big_nb _big_r:term, auto_knows_old (crypt (cons (noncea_old _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) -> auto_knows_old (enc (crypt _big_r (key pub (session_old _big_a _big_b))) (passwd_old _big_a _big_b)) -> auto_knows_old (crypt _big_nb (key sym _big_r)).
Proof.
   intros _big_a _big_b _big_nb _big_r. intros H1 H2.
  exact (rem_6792 _big_nb (key sym _big_r)
          (rem_3767 sym _big_r
            (rem_1352 _big_r _big_nb
              (rem_2093 _big_r _big_nb _big_a _big_b
                H2
                H1))
            rem_1816)
          (rem_1502 _big_nb _big_r
            (rem_2093 _big_r _big_nb _big_a _big_b
              H2
              H1))).
Qed.

Lemma lem_message4_dec_old : forall _big_a _big_b _big_m _big_na:term, auto_knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) -> auto_knows_old (cons _big_a (cons _big_m nil)) -> auto_knows_old (crypt (cons _big_na (cons (nonceb_old _big_a _big_b) nil)) (key sym (r_old _big_a _big_b))).
Proof.
   intros _big_a _big_b _big_m _big_na. intros H1 H2.
  exact (rem_5173 (cons _big_na (cons (nonceb_old _big_a _big_b) nil)) (key sym (r_old _big_a _big_b))
          (rem_1880 sym (r_old _big_a _big_b)
            (rem_2523 _big_a _big_b _big_na
              (rem_2355 _big_b _big_na _big_a _big_m
                H1
                H2))
            rem_1460)
          (rem_2140 _big_na (cons (nonceb_old _big_a _big_b) nil)
            (rem_2115 (nonceb_old _big_a _big_b) nil
              rem_1469
              (rem_4243 _big_a _big_b _big_na
                (rem_2355 _big_b _big_na _big_a _big_m
                  H1
                  H2)))
            (rem_3440 _big_na _big_b _big_a
              (rem_2355 _big_b _big_na _big_a _big_m
                H1
                H2)))).
Qed.

Lemma lem_message4_old : forall _big_a _big_b _big_ka _big_na:term, auto_knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) -> auto_knows_old (cons _big_a (cons (enc _big_ka (passwd_old _big_a _big_b)) nil)) -> auto_knows_old (crypt (cons _big_na (cons (nonceb_old _big_a _big_b) nil)) (key sym (r_old _big_a _big_b))).
Proof.
   intros _big_a _big_b _big_ka _big_na. intros H1 H2.
  exact (rem_6901 (cons _big_na (cons (nonceb_old _big_a _big_b) nil)) (key sym (r_old _big_a _big_b))
          (rem_4239 sym (r_old _big_a _big_b)
            (rem_287 _big_a _big_b _big_na
              (rem_3565 _big_b _big_na _big_a _big_ka
                H1
                H2))
            rem_922)
          (rem_2410 _big_na (cons (nonceb_old _big_a _big_b) nil)
            (rem_863 (nonceb_old _big_a _big_b) nil
              rem_1379
              (rem_3469 _big_a _big_b _big_na
                (rem_3565 _big_b _big_na _big_a _big_ka
                  H1
                  H2)))
            (rem_3950 _big_na _big_b _big_a
              (rem_3565 _big_b _big_na _big_a _big_ka
                H1
                H2)))).
Qed.

Lemma lem_message3_old : forall _big_a _big_b _big_r:term, auto_knows_old (enc (crypt _big_r (key pub (session_old _big_a _big_b))) (passwd_old _big_a _big_b)) -> auto_knows_old (crypt (noncea_old _big_a _big_b) (key sym _big_r)).
Proof.
   intros _big_a _big_b _big_r. intros H1.
  exact (rem_8810 (noncea_old _big_a _big_b) (key sym _big_r)
          (rem_8 sym _big_r
            (rem_1392 _big_r _big_b _big_a
              (rem_1862 _big_r _big_b _big_a
                H1))
            rem_3951)
          (rem_1301 _big_a _big_b _big_r
            (rem_1862 _big_r _big_b _big_a
              H1))).
Qed.

Lemma lem_message2_dec_old : forall _big_a _big_b _big_m:term, auto_knows_old (cons _big_a (cons _big_m nil)) -> auto_knows_old (enc (crypt (r_old _big_a _big_b) (dec _big_m (passwd_old _big_a _big_b))) (passwd_old _big_a _big_b)).
Proof.
   intros _big_a _big_b _big_m. intros H1.
  exact (rem_7188 (crypt (r_old _big_a _big_b) (dec _big_m (passwd_old _big_a _big_b))) (passwd_old _big_a _big_b)
          (rem_869 _big_a _big_b _big_m
            (rem_1265 _big_a _big_m
              H1))
          (rem_1378 (r_old _big_a _big_b) (dec _big_m (passwd_old _big_a _big_b))
            (rem_1256 _big_m (passwd_old _big_a _big_b)
              (rem_869 _big_a _big_b _big_m
                (rem_1265 _big_a _big_m
                  H1))
              (rem_2511 _big_m _big_a
                (rem_1265 _big_a _big_m
                  H1)))
            (rem_4299 _big_a _big_b _big_m
              (rem_1265 _big_a _big_m
                H1)))).
Qed.

Lemma lem_message2_old : forall _big_a _big_b _big_ka:term, auto_knows_old (cons _big_a (cons (enc _big_ka (passwd_old _big_a _big_b)) nil)) -> auto_knows_old (enc (crypt (r_old _big_a _big_b) _big_ka) (passwd_old _big_a _big_b)).
Proof.
   intros _big_a _big_b _big_ka. intros H1.
  exact (rem_6924 (crypt (r_old _big_a _big_b) _big_ka) (passwd_old _big_a _big_b)
          (rem_3772 _big_a _big_b _big_ka
            (rem_1295 _big_b _big_ka _big_a
              H1))
          (rem_1308 (r_old _big_a _big_b) _big_ka
            (rem_3237 _big_ka _big_b _big_a
              (rem_1295 _big_b _big_ka _big_a
                H1))
            (rem_1815 _big_a _big_b _big_ka
              (rem_1295 _big_b _big_ka _big_a
                H1)))).
Qed.

Lemma lem_message1_old : forall _big_a _big_b:term, auto_agent _big_b -> auto_agent _big_a -> auto_knows_old (cons _big_a (cons (enc (key pub (session_old _big_a _big_b)) (passwd_old _big_a _big_b)) nil)).
Proof.
   intros _big_a _big_b. intros H1 H2.
  exact (rem_7328 _big_a (cons (enc (key pub (session_old _big_a _big_b)) (passwd_old _big_a _big_b)) nil)
          (rem_3519 (enc (key pub (session_old _big_a _big_b)) (passwd_old _big_a _big_b)) nil
            rem_1736
            (rem_2148 (key pub (session_old _big_a _big_b)) (passwd_old _big_a _big_b)
              (rem_2141 _big_a _big_b
                H1
                H2)
              (rem_2391 pub (session_old _big_a _big_b)
                (rem_1793 _big_a _big_b
                  H1
                  H2)
                rem_1461)))
          (rem_2126 _big_a
            H2)).
Qed.

Lemma lem_intruder_can_dec_enc_old : forall _big_k _big_m:term, auto_knows_old _big_k -> auto_knows_old (enc _big_m _big_k) -> auto_knows_old _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_9107 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_intruder_can_dec_old : forall _big_k _big_m:term, auto_knows_old _big_k -> auto_knows_old _big_m -> auto_knows_old (dec _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_7111 _big_m _big_k
          H1
          H2).
Qed.

Lemma lem_intruder_can_enc_dec_old : forall _big_k _big_m:term, auto_knows_old _big_k -> auto_knows_old (dec _big_m _big_k) -> auto_knows_old _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_7193 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_intruder_can_enc_old : forall _big_k _big_m:term, auto_knows_old _big_k -> auto_knows_old _big_m -> auto_knows_old (enc _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8340 _big_m _big_k
          H1
          H2).
Qed.

Lemma lem_intruder_can_compute_predecessors_succ_old : forall _big_m:term, auto_knows_old _big_m -> auto_knows_old (p _big_m).
Proof.
   intros _big_m. intros H1.
  exact (rem_7329 _big_m
          H1).
Qed.

Lemma lem_intruder_can_compute_predecessors_old : forall _big_m:term, auto_knows_old (s _big_m) -> auto_knows_old _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_9108 _big_m
          H1).
Qed.

Lemma lem_intruder_can_compute_successors_pred_old : forall _big_m:term, auto_knows_old (p _big_m) -> auto_knows_old _big_m.
Proof.
   intros _big_m. intros H1.
  exact (rem_6748 _big_m
          H1).
Qed.

Lemma lem_intruder_can_compute_successors_old : forall _big_m:term, auto_knows_old _big_m -> auto_knows_old (s _big_m).
Proof.
   intros _big_m. intros H1.
  exact (rem_7190 _big_m
          H1).
Qed.

Lemma lem_intruder_can_decrypt_if_has_symmetric_key_old : forall _big_m X:term, auto_knows_old (crypt _big_m (key sym X)) -> auto_knows_old (key sym X) -> auto_knows_old _big_m.
Proof.
   intros _big_m X. intros H1 H2.
  exact (rem_6757 _big_m X
          (rem_1910 X _big_m
            H1)
          (rem_3577 X
            H2)).
Qed.

Lemma lem_intruder_can_decrypt_if_has_public_key_old : forall _big_k _big_m:term, auto_knows_old (crypt _big_m (key prv _big_k)) -> auto_knows_old (key pub _big_k) -> auto_knows_old _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8517 _big_m _big_k
          (rem_4290 _big_k _big_m
            H1)
          (rem_3134 _big_k
            H2)).
Qed.

Lemma lem_intruder_can_decrypt_if_has_private_key_old : forall _big_k _big_m:term, auto_knows_old (crypt _big_m (key pub _big_k)) -> auto_knows_old (key prv _big_k) -> auto_knows_old _big_m.
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_8531 _big_m _big_k
          (rem_3682 _big_k _big_m
            H1)
          (rem_1362 _big_k
            H2)).
Qed.

Lemma lem_intruder_can_encrypt_old : forall _big_k _big_m:term, auto_knows_old _big_m -> auto_knows_old _big_k -> auto_knows_old (crypt _big_m _big_k).
Proof.
   intros _big_k _big_m. intros H1 H2.
  exact (rem_6747 _big_m _big_k
          H2
          H1).
Qed.

Lemma lem_intruder_can_build_pairs_old : forall _big_m1 _big_m2:term, auto_knows_old _big_m1 -> auto_knows_old _big_m2 -> auto_knows_old (cons _big_m1 _big_m2).
Proof.
   intros _big_m1 _big_m2. intros H1 H2.
  exact (rem_5145 _big_m1 _big_m2
          H2
          H1).
Qed.

Lemma lem_intruder_can_take_second_components_old : forall _big_m1 _big_m2:term, auto_knows_old (cons _big_m1 _big_m2) -> auto_knows_old _big_m2.
Proof.
   intros _big_m1 _big_m2. intros H1.
  exact (rem_5133 _big_m2 _big_m1
          H1).
Qed.

Lemma lem_intruder_can_take_first_components_old : forall _big_m1 _big_m2:term, auto_knows_old (cons _big_m1 _big_m2) -> auto_knows_old _big_m1.
Proof.
   intros _big_m1 _big_m2. intros H1.
  exact (rem_6685 _big_m1 _big_m2
          H1).
Qed.

Lemma lem_intruder_knows_nil_old : auto_knows_old nil.
Proof.
  
  exact rem_6786.
Qed.

Lemma lem_intruder_agent : auto_agent i.
Proof.
  
  exact rem_8532.
Qed.

Lemma lem_server_agent : auto_agent server.
Proof.
  
  exact rem_7859.
Qed.

Lemma lem_bob_agent : auto_agent bob.
Proof.
  
  exact rem_7112.
Qed.

Lemma lem_alice_agent : auto_agent alice.
Proof.
  
  exact rem_8820.
Qed.


(* [srcc] Source clauses. *)

Inductive __query__intruder_knows_session_key_as_seen_by_alice : Prop :=
    intruder_knows_session_key_as_seen_by_alice : forall _big_k:term, alice_key_current alice _big_k -> knows_current _big_k -> __query__intruder_knows_session_key_as_seen_by_alice

with __query__intruder_knows_session_key_as_seen_by_bob : Prop :=
    intruder_knows_session_key_as_seen_by_bob : forall _big_k:term, bob_key_current bob _big_k -> knows_current _big_k -> __query__intruder_knows_session_key_as_seen_by_bob

with agent : term -> Prop :=
    alice_agent : agent alice
  | bob_agent : agent bob
  | intruder_agent : agent i
  | server_agent : agent server

with alice_key_current : term -> term -> Prop :=
    define_alice_key_current : forall _big_a _big_b _big_nb _big_r:term, knows_current (crypt (cons (noncea_current _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) -> knows_current (enc (crypt _big_r (key pub (session_current _big_a _big_b))) (passwd_current _big_a _big_b)) -> alice_key_current _big_a _big_r

with alice_key_old : term -> term -> Prop :=
    define_alice_key_old : forall _big_a _big_b _big_nb _big_r:term, knows_old (crypt (cons (noncea_old _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) -> knows_old (enc (crypt _big_r (key pub (session_old _big_a _big_b))) (passwd_old _big_a _big_b)) -> alice_key_old _big_a _big_r

with bob_key_current : term -> term -> Prop :=
    define_bob_key_current : forall _big_a _big_b _big_ka _big_na:term, knows_current (crypt (nonceb_current _big_a _big_b) (key sym (r_current _big_a _big_b))) -> knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) -> knows_current (cons _big_a (cons (enc _big_ka (passwd_current _big_a _big_b)) nil)) -> bob_key_current _big_a (r_current _big_a _big_b)
  | define_bob_key_dec_current : forall _big_a _big_b _big_m _big_na:term, knows_current (crypt (nonceb_current _big_a _big_b) (key sym (r_current _big_a _big_b))) -> knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) -> knows_current (cons _big_a (cons _big_m nil)) -> bob_key_current _big_a (r_current _big_a _big_b)

with bob_key_old : term -> term -> Prop :=
    define_bob_key_dec_old : forall _big_a _big_b _big_m _big_na:term, knows_old (crypt (nonceb_old _big_a _big_b) (key sym (r_old _big_a _big_b))) -> knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) -> knows_old (cons _big_a (cons _big_m nil)) -> bob_key_old _big_a (r_old _big_a _big_b)
  | define_bob_key_old : forall _big_a _big_b _big_ka _big_na:term, knows_old (crypt (nonceb_old _big_a _big_b) (key sym (r_old _big_a _big_b))) -> knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) -> knows_old (cons _big_a (cons (enc _big_ka (passwd_old _big_a _big_b)) nil)) -> bob_key_old _big_a (r_old _big_a _big_b)

with knows_current : term -> Prop :=
    intruder_can_build_pairs_current : forall _big_m1 _big_m2:term, knows_current _big_m1 -> knows_current _big_m2 -> knows_current (cons _big_m1 _big_m2)
  | intruder_can_compute_predecessors_current : forall _big_m:term, knows_current (s _big_m) -> knows_current _big_m
  | intruder_can_compute_predecessors_succ_current : forall _big_m:term, knows_current _big_m -> knows_current (p _big_m)
  | intruder_can_compute_successors_current : forall _big_m:term, knows_current _big_m -> knows_current (s _big_m)
  | intruder_can_compute_successors_pred_current : forall _big_m:term, knows_current (p _big_m) -> knows_current _big_m
  | intruder_can_dec_current : forall _big_k _big_m:term, knows_current _big_k -> knows_current _big_m -> knows_current (dec _big_m _big_k)
  | intruder_can_dec_enc_current : forall _big_k _big_m:term, knows_current _big_k -> knows_current (enc _big_m _big_k) -> knows_current _big_m
  | intruder_can_decrypt_if_has_private_key_current : forall _big_k _big_m:term, knows_current (crypt _big_m (key pub _big_k)) -> knows_current (key prv _big_k) -> knows_current _big_m
  | intruder_can_decrypt_if_has_public_key_current : forall _big_k _big_m:term, knows_current (crypt _big_m (key prv _big_k)) -> knows_current (key pub _big_k) -> knows_current _big_m
  | intruder_can_decrypt_if_has_symmetric_key_current : forall _big_m X:term, knows_current (crypt _big_m (key sym X)) -> knows_current (key sym X) -> knows_current _big_m
  | intruder_can_enc_current : forall _big_k _big_m:term, knows_current _big_k -> knows_current _big_m -> knows_current (enc _big_m _big_k)
  | intruder_can_enc_dec_current : forall _big_k _big_m:term, knows_current _big_k -> knows_current (dec _big_m _big_k) -> knows_current _big_m
  | intruder_can_encrypt_current : forall _big_k _big_m:term, knows_current _big_m -> knows_current _big_k -> knows_current (crypt _big_m _big_k)
  | intruder_can_take_first_components_current : forall _big_m1 _big_m2:term, knows_current (cons _big_m1 _big_m2) -> knows_current _big_m1
  | intruder_can_take_second_components_current : forall _big_m1 _big_m2:term, knows_current (cons _big_m1 _big_m2) -> knows_current _big_m2
  | intruder_knows_agents_public_key_current : forall X:term, agent X -> knows_current (key pub X)
  | intruder_knows_all_agents_current : forall X:term, agent X -> knows_current X
  | intruder_knows_all_previous_noncea : forall _big_a _big_b:term, knows_current (noncea_old _big_a _big_b)
  | intruder_knows_all_previous_nonceb : forall _big_a _big_b:term, knows_current (nonceb_old _big_a _big_b)
  | intruder_knows_all_previous_passwords : forall _big_a _big_b:term, knows_current (passwd_old _big_a _big_b)
  | intruder_knows_nil_current : knows_current nil
  | intruder_knows_own_private_key_current : knows_current (key prv i)
  | intruder_remembers : forall _big_m:term, knows_old _big_m -> knows_current _big_m
  | intruder_weak_secret_dec_current : forall _big_m _big_p:term, testable_current (enc _big_m _big_p) -> testable_current _big_m -> knows_current _big_p
  | intruder_weak_secret_dec_dec_current : forall _big_m _big_p:term, testable_current _big_m -> testable_current (dec _big_m _big_p) -> knows_current _big_p
  | message1_current : forall _big_a _big_b:term, agent _big_b -> agent _big_a -> knows_current (cons _big_a (cons (enc (key pub (session_current _big_a _big_b)) (passwd_current _big_a _big_b)) nil))
  | message2_current : forall _big_a _big_b _big_ka:term, knows_current (cons _big_a (cons (enc _big_ka (passwd_current _big_a _big_b)) nil)) -> knows_current (enc (crypt (r_current _big_a _big_b) _big_ka) (passwd_current _big_a _big_b))
  | message2_dec_current : forall _big_a _big_b _big_m:term, knows_current (cons _big_a (cons _big_m nil)) -> knows_current (enc (crypt (r_current _big_a _big_b) (dec _big_m (passwd_current _big_a _big_b))) (passwd_current _big_a _big_b))
  | message3_current : forall _big_a _big_b _big_r:term, knows_current (enc (crypt _big_r (key pub (session_current _big_a _big_b))) (passwd_current _big_a _big_b)) -> knows_current (crypt (noncea_current _big_a _big_b) (key sym _big_r))
  | message4_current : forall _big_a _big_b _big_ka _big_na:term, knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) -> knows_current (cons _big_a (cons (enc _big_ka (passwd_current _big_a _big_b)) nil)) -> knows_current (crypt (cons _big_na (cons (nonceb_current _big_a _big_b) nil)) (key sym (r_current _big_a _big_b)))
  | message4_dec_current : forall _big_a _big_b _big_m _big_na:term, knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) -> knows_current (cons _big_a (cons _big_m nil)) -> knows_current (crypt (cons _big_na (cons (nonceb_current _big_a _big_b) nil)) (key sym (r_current _big_a _big_b)))
  | message5_current : forall _big_a _big_b _big_nb _big_r:term, knows_current (crypt (cons (noncea_current _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) -> knows_current (enc (crypt _big_r (key pub (session_current _big_a _big_b))) (passwd_current _big_a _big_b)) -> knows_current (crypt _big_nb (key sym _big_r))

with knows_old : term -> Prop :=
    intruder_can_build_pairs_old : forall _big_m1 _big_m2:term, knows_old _big_m1 -> knows_old _big_m2 -> knows_old (cons _big_m1 _big_m2)
  | intruder_can_compute_predecessors_old : forall _big_m:term, knows_old (s _big_m) -> knows_old _big_m
  | intruder_can_compute_predecessors_succ_old : forall _big_m:term, knows_old _big_m -> knows_old (p _big_m)
  | intruder_can_compute_successors_old : forall _big_m:term, knows_old _big_m -> knows_old (s _big_m)
  | intruder_can_compute_successors_pred_old : forall _big_m:term, knows_old (p _big_m) -> knows_old _big_m
  | intruder_can_dec_enc_old : forall _big_k _big_m:term, knows_old _big_k -> knows_old (enc _big_m _big_k) -> knows_old _big_m
  | intruder_can_dec_old : forall _big_k _big_m:term, knows_old _big_k -> knows_old _big_m -> knows_old (dec _big_m _big_k)
  | intruder_can_decrypt_if_has_private_key_old : forall _big_k _big_m:term, knows_old (crypt _big_m (key pub _big_k)) -> knows_old (key prv _big_k) -> knows_old _big_m
  | intruder_can_decrypt_if_has_public_key_old : forall _big_k _big_m:term, knows_old (crypt _big_m (key prv _big_k)) -> knows_old (key pub _big_k) -> knows_old _big_m
  | intruder_can_decrypt_if_has_symmetric_key_old : forall _big_m X:term, knows_old (crypt _big_m (key sym X)) -> knows_old (key sym X) -> knows_old _big_m
  | intruder_can_enc_dec_old : forall _big_k _big_m:term, knows_old _big_k -> knows_old (dec _big_m _big_k) -> knows_old _big_m
  | intruder_can_enc_old : forall _big_k _big_m:term, knows_old _big_k -> knows_old _big_m -> knows_old (enc _big_m _big_k)
  | intruder_can_encrypt_old : forall _big_k _big_m:term, knows_old _big_m -> knows_old _big_k -> knows_old (crypt _big_m _big_k)
  | intruder_can_take_first_components_old : forall _big_m1 _big_m2:term, knows_old (cons _big_m1 _big_m2) -> knows_old _big_m1
  | intruder_can_take_second_components_old : forall _big_m1 _big_m2:term, knows_old (cons _big_m1 _big_m2) -> knows_old _big_m2
  | intruder_knows_agents_public_key_old : forall X:term, agent X -> knows_old (key pub X)
  | intruder_knows_all_agents_old : forall X:term, agent X -> knows_old X
  | intruder_knows_nil_old : knows_old nil
  | intruder_knows_own_private_key_old : knows_old (key prv i)
  | intruder_weak_secret_dec_dec_old : forall _big_m _big_p:term, testable_old _big_m -> testable_old (dec _big_m _big_p) -> knows_old _big_p
  | intruder_weak_secret_dec_old : forall _big_m _big_p:term, testable_old (enc _big_m _big_p) -> testable_old _big_m -> knows_old _big_p
  | message1_old : forall _big_a _big_b:term, agent _big_b -> agent _big_a -> knows_old (cons _big_a (cons (enc (key pub (session_old _big_a _big_b)) (passwd_old _big_a _big_b)) nil))
  | message2_dec_old : forall _big_a _big_b _big_m:term, knows_old (cons _big_a (cons _big_m nil)) -> knows_old (enc (crypt (r_old _big_a _big_b) (dec _big_m (passwd_old _big_a _big_b))) (passwd_old _big_a _big_b))
  | message2_old : forall _big_a _big_b _big_ka:term, knows_old (cons _big_a (cons (enc _big_ka (passwd_old _big_a _big_b)) nil)) -> knows_old (enc (crypt (r_old _big_a _big_b) _big_ka) (passwd_old _big_a _big_b))
  | message3_old : forall _big_a _big_b _big_r:term, knows_old (enc (crypt _big_r (key pub (session_old _big_a _big_b))) (passwd_old _big_a _big_b)) -> knows_old (crypt (noncea_old _big_a _big_b) (key sym _big_r))
  | message4_dec_old : forall _big_a _big_b _big_m _big_na:term, knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) -> knows_old (cons _big_a (cons _big_m nil)) -> knows_old (crypt (cons _big_na (cons (nonceb_old _big_a _big_b) nil)) (key sym (r_old _big_a _big_b)))
  | message4_old : forall _big_a _big_b _big_ka _big_na:term, knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) -> knows_old (cons _big_a (cons (enc _big_ka (passwd_old _big_a _big_b)) nil)) -> knows_old (crypt (cons _big_na (cons (nonceb_old _big_a _big_b) nil)) (key sym (r_old _big_a _big_b)))
  | message5_old : forall _big_a _big_b _big_nb _big_r:term, knows_old (crypt (cons (noncea_old _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) -> knows_old (enc (crypt _big_r (key pub (session_old _big_a _big_b))) (passwd_old _big_a _big_b)) -> knows_old (crypt _big_nb (key sym _big_r))

with testable_current : term -> Prop :=
    first_testable_current : forall _big_l _big_m:term, testable_current _big_m -> testable_current (cons _big_m _big_l)
  | known_implies_testable_current : forall _big_m:term, knows_current _big_m -> testable_current _big_m
  | second_testable_current : forall _big_l _big_m:term, testable_current _big_l -> testable_current (cons _big_m _big_l)
  | testable_dec_current : forall _big_k _big_m:term, knows_current _big_k -> testable_current _big_m -> testable_current (enc _big_m _big_k)
  | testable_dec_dec_current : forall _big_k _big_m:term, knows_current _big_k -> testable_current (dec _big_m _big_k) -> testable_current _big_m
  | testable_dec_key_current : forall _big_m X:term, knows_current _big_m -> testable_current (dec _big_m X) -> testable_current X
  | testable_dec_key_dec_current : forall _big_m X:term, knows_current (enc _big_m X) -> testable_current _big_m -> testable_current X
  | testable_decrypt_key_private_key_current : forall _big_k _big_m:term, knows_current (crypt _big_m (key pub _big_k)) -> testable_current _big_m -> testable_current (key prv _big_k)
  | testable_decrypt_key_public_key_current : forall _big_k _big_m:term, knows_current (crypt _big_m (key prv _big_k)) -> testable_current _big_m -> testable_current (key pub _big_k)
  | testable_decrypt_key_symmetric_key_current : forall _big_k _big_m:term, knows_current (crypt _big_m (key sym _big_k)) -> testable_current _big_m -> testable_current (key sym _big_k)
  | testable_decrypt_private_key_current : forall _big_k _big_m:term, knows_current (key prv _big_k) -> testable_current _big_m -> testable_current (crypt _big_m (key pub _big_k))
  | testable_decrypt_public_key_current : forall _big_k _big_m:term, knows_current (key pub _big_k) -> testable_current _big_m -> testable_current (crypt _big_m (key prv _big_k))
  | testable_decrypt_symmetric_key_current : forall _big_m X:term, knows_current (key sym X) -> testable_current _big_m -> testable_current (crypt _big_m (key sym X))
  | testable_enc_current : forall _big_k _big_m:term, knows_current _big_k -> testable_current (enc _big_m _big_k) -> testable_current _big_m
  | testable_enc_dec_current : forall _big_k _big_m:term, knows_current _big_k -> testable_current _big_m -> testable_current (dec _big_m _big_k)
  | testable_enc_key_current : forall _big_m X:term, knows_current _big_m -> testable_current (enc _big_m X) -> testable_current X
  | testable_enc_key_dec_current : forall _big_m X:term, knows_current (dec _big_m X) -> testable_current _big_m -> testable_current X
  | testable_encrypt_current : forall _big_k _big_m:term, knows_current _big_k -> testable_current (crypt _big_m _big_k) -> testable_current _big_m
  | testable_encrypt_key_current : forall _big_m X:term, knows_current _big_m -> testable_current (crypt _big_m X) -> testable_current X
  | testable_pred_current : forall _big_m:term, testable_current _big_m -> testable_current (s _big_m)
  | testable_pred_pred_current : forall _big_m:term, testable_current (p _big_m) -> testable_current _big_m
  | testable_succ_current : forall _big_m:term, testable_current (s _big_m) -> testable_current _big_m
  | testable_succ_pred_current : forall _big_m:term, testable_current _big_m -> testable_current (p _big_m)

with testable_old : term -> Prop :=
    first_testable_old : forall _big_l _big_m:term, testable_old _big_m -> testable_old (cons _big_m _big_l)
  | known_implies_testable_old : forall _big_m:term, knows_old _big_m -> testable_old _big_m
  | second_testable_old : forall _big_l _big_m:term, testable_old _big_l -> testable_old (cons _big_m _big_l)
  | testable_dec_dec_old : forall _big_k _big_m:term, knows_old _big_k -> testable_old (dec _big_m _big_k) -> testable_old _big_m
  | testable_dec_key_dec_old : forall _big_m X:term, knows_old (enc _big_m X) -> testable_old _big_m -> testable_old X
  | testable_dec_key_old : forall _big_m X:term, knows_old _big_m -> testable_old (dec _big_m X) -> testable_old X
  | testable_dec_old : forall _big_k _big_m:term, knows_old _big_k -> testable_old _big_m -> testable_old (enc _big_m _big_k)
  | testable_decrypt_key_private_key_old : forall _big_k _big_m:term, knows_old (crypt _big_m (key pub _big_k)) -> testable_old _big_m -> testable_old (key prv _big_k)
  | testable_decrypt_key_public_key_old : forall _big_k _big_m:term, knows_old (crypt _big_m (key prv _big_k)) -> testable_old _big_m -> testable_old (key pub _big_k)
  | testable_decrypt_key_symmetric_key_old : forall _big_k _big_m:term, knows_old (crypt _big_m (key sym _big_k)) -> testable_old _big_m -> testable_old (key sym _big_k)
  | testable_decrypt_private_key_old : forall _big_k _big_m:term, knows_old (key prv _big_k) -> testable_old _big_m -> testable_old (crypt _big_m (key pub _big_k))
  | testable_decrypt_public_key_old : forall _big_k _big_m:term, knows_old (key pub _big_k) -> testable_old _big_m -> testable_old (crypt _big_m (key prv _big_k))
  | testable_decrypt_symmetric_key_old : forall _big_m X:term, knows_old (key sym X) -> testable_old _big_m -> testable_old (crypt _big_m (key sym X))
  | testable_enc_dec_old : forall _big_k _big_m:term, knows_old _big_k -> testable_old _big_m -> testable_old (dec _big_m _big_k)
  | testable_enc_key_dec_old : forall _big_m X:term, knows_old (dec _big_m X) -> testable_old _big_m -> testable_old X
  | testable_enc_key_old : forall _big_m X:term, knows_old _big_m -> testable_old (enc _big_m X) -> testable_old X
  | testable_enc_old : forall _big_k _big_m:term, knows_old _big_k -> testable_old (enc _big_m _big_k) -> testable_old _big_m
  | testable_encrypt_key_old : forall _big_m X:term, knows_old _big_m -> testable_old (crypt _big_m X) -> testable_old X
  | testable_encrypt_old : forall _big_k _big_m:term, knows_old _big_k -> testable_old (crypt _big_m _big_k) -> testable_old _big_m
  | testable_pred_old : forall _big_m:term, testable_old _big_m -> testable_old (s _big_m)
  | testable_pred_pred_old : forall _big_m:term, testable_old (p _big_m) -> testable_old _big_m
  | testable_succ_old : forall _big_m:term, testable_old (s _big_m) -> testable_old _big_m
  | testable_succ_pred_old : forall _big_m:term, testable_old _big_m -> testable_old (p _big_m)
.

(* [srct] Translation from source clauses. *)

Definition translate_auto_agent_from_agent (x1 : term) (pi : agent x1) : auto_agent x1 :=
  match pi as pi in agent x1 return auto_agent x1 with
    (alice_agent) => 
      (lem_alice_agent)
  | (bob_agent) => 
      (lem_bob_agent)
  | (intruder_agent) => 
      (lem_intruder_agent)
  | (server_agent) => 
      (lem_server_agent)
  end
.
Fixpoint translate_auto_knows_old_from_knows_old (x1 : term) (pi : knows_old x1) {struct pi} : auto_knows_old x1 :=
  match pi as pi in knows_old x1 return auto_knows_old x1 with
    (intruder_can_build_pairs_old _big_m1 _big_m2 H1 H2) => 
      (lem_intruder_can_build_pairs_old _big_m1 _big_m2
        (translate_auto_knows_old_from_knows_old _big_m1 H1)
        (translate_auto_knows_old_from_knows_old _big_m2 H2))
  | (intruder_can_compute_predecessors_old _big_m H1) => 
      (lem_intruder_can_compute_predecessors_old _big_m
        (translate_auto_knows_old_from_knows_old (s _big_m) H1))
  | (intruder_can_compute_predecessors_succ_old _big_m H1) => 
      (lem_intruder_can_compute_predecessors_succ_old _big_m
        (translate_auto_knows_old_from_knows_old _big_m H1))
  | (intruder_can_compute_successors_old _big_m H1) => 
      (lem_intruder_can_compute_successors_old _big_m
        (translate_auto_knows_old_from_knows_old _big_m H1))
  | (intruder_can_compute_successors_pred_old _big_m H1) => 
      (lem_intruder_can_compute_successors_pred_old _big_m
        (translate_auto_knows_old_from_knows_old (p _big_m) H1))
  | (intruder_can_dec_enc_old _big_k _big_m H1 H2) => 
      (lem_intruder_can_dec_enc_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_k H1)
        (translate_auto_knows_old_from_knows_old (enc _big_m _big_k) H2))
  | (intruder_can_dec_old _big_k _big_m H1 H2) => 
      (lem_intruder_can_dec_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_k H1)
        (translate_auto_knows_old_from_knows_old _big_m H2))
  | (intruder_can_decrypt_if_has_private_key_old _big_k _big_m H1 H2) => 
      (lem_intruder_can_decrypt_if_has_private_key_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old (crypt _big_m (key pub _big_k)) H1)
        (translate_auto_knows_old_from_knows_old (key prv _big_k) H2))
  | (intruder_can_decrypt_if_has_public_key_old _big_k _big_m H1 H2) => 
      (lem_intruder_can_decrypt_if_has_public_key_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old (crypt _big_m (key prv _big_k)) H1)
        (translate_auto_knows_old_from_knows_old (key pub _big_k) H2))
  | (intruder_can_decrypt_if_has_symmetric_key_old _big_m X H1 H2) => 
      (lem_intruder_can_decrypt_if_has_symmetric_key_old _big_m X
        (translate_auto_knows_old_from_knows_old (crypt _big_m (key sym X)) H1)
        (translate_auto_knows_old_from_knows_old (key sym X) H2))
  | (intruder_can_enc_dec_old _big_k _big_m H1 H2) => 
      (lem_intruder_can_enc_dec_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_k H1)
        (translate_auto_knows_old_from_knows_old (dec _big_m _big_k) H2))
  | (intruder_can_enc_old _big_k _big_m H1 H2) => 
      (lem_intruder_can_enc_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_k H1)
        (translate_auto_knows_old_from_knows_old _big_m H2))
  | (intruder_can_encrypt_old _big_k _big_m H1 H2) => 
      (lem_intruder_can_encrypt_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_m H1)
        (translate_auto_knows_old_from_knows_old _big_k H2))
  | (intruder_can_take_first_components_old _big_m1 _big_m2 H1) => 
      (lem_intruder_can_take_first_components_old _big_m1 _big_m2
        (translate_auto_knows_old_from_knows_old (cons _big_m1 _big_m2) H1))
  | (intruder_can_take_second_components_old _big_m1 _big_m2 H1) => 
      (lem_intruder_can_take_second_components_old _big_m1 _big_m2
        (translate_auto_knows_old_from_knows_old (cons _big_m1 _big_m2) H1))
  | (intruder_knows_agents_public_key_old X H1) => 
      (lem_intruder_knows_agents_public_key_old X
        (translate_auto_agent_from_agent X H1))
  | (intruder_knows_all_agents_old X H1) => 
      (lem_intruder_knows_all_agents_old X
        (translate_auto_agent_from_agent X H1))
  | (intruder_knows_nil_old) => 
      (lem_intruder_knows_nil_old)
  | (intruder_knows_own_private_key_old) => 
      (lem_intruder_knows_own_private_key_old)
  | (intruder_weak_secret_dec_dec_old _big_m _big_p H1 H2) => 
      (lem_intruder_weak_secret_dec_dec_old _big_m _big_p
        (translate_auto_testable_old_from_testable_old _big_m H1)
        (translate_auto_testable_old_from_testable_old (dec _big_m _big_p) H2))
  | (intruder_weak_secret_dec_old _big_m _big_p H1 H2) => 
      (lem_intruder_weak_secret_dec_old _big_m _big_p
        (translate_auto_testable_old_from_testable_old (enc _big_m _big_p) H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (message1_old _big_a _big_b H1 H2) => 
      (lem_message1_old _big_a _big_b
        (translate_auto_agent_from_agent _big_b H1)
        (translate_auto_agent_from_agent _big_a H2))
  | (message2_dec_old _big_a _big_b _big_m H1) => 
      (lem_message2_dec_old _big_a _big_b _big_m
        (translate_auto_knows_old_from_knows_old (cons _big_a (cons _big_m nil)) H1))
  | (message2_old _big_a _big_b _big_ka H1) => 
      (lem_message2_old _big_a _big_b _big_ka
        (translate_auto_knows_old_from_knows_old (cons _big_a (cons (enc _big_ka (passwd_old _big_a _big_b)) nil)) H1))
  | (message3_old _big_a _big_b _big_r H1) => 
      (lem_message3_old _big_a _big_b _big_r
        (translate_auto_knows_old_from_knows_old (enc (crypt _big_r (key pub (session_old _big_a _big_b))) (passwd_old _big_a _big_b)) H1))
  | (message4_dec_old _big_a _big_b _big_m _big_na H1 H2) => 
      (lem_message4_dec_old _big_a _big_b _big_m _big_na
        (translate_auto_knows_old_from_knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) H1)
        (translate_auto_knows_old_from_knows_old (cons _big_a (cons _big_m nil)) H2))
  | (message4_old _big_a _big_b _big_ka _big_na H1 H2) => 
      (lem_message4_old _big_a _big_b _big_ka _big_na
        (translate_auto_knows_old_from_knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) H1)
        (translate_auto_knows_old_from_knows_old (cons _big_a (cons (enc _big_ka (passwd_old _big_a _big_b)) nil)) H2))
  | (message5_old _big_a _big_b _big_nb _big_r H1 H2) => 
      (lem_message5_old _big_a _big_b _big_nb _big_r
        (translate_auto_knows_old_from_knows_old (crypt (cons (noncea_old _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) H1)
        (translate_auto_knows_old_from_knows_old (enc (crypt _big_r (key pub (session_old _big_a _big_b))) (passwd_old _big_a _big_b)) H2))
  end

with translate_auto_testable_old_from_testable_old (x1 : term) (pi : testable_old x1) {struct pi} : auto_testable_old x1 :=
  match pi as pi in testable_old x1 return auto_testable_old x1 with
    (first_testable_old _big_l _big_m H1) => 
      (lem_first_testable_old _big_l _big_m
        (translate_auto_testable_old_from_testable_old _big_m H1))
  | (known_implies_testable_old _big_m H1) => 
      (lem_known_implies_testable_old _big_m
        (translate_auto_knows_old_from_knows_old _big_m H1))
  | (second_testable_old _big_l _big_m H1) => 
      (lem_second_testable_old _big_l _big_m
        (translate_auto_testable_old_from_testable_old _big_l H1))
  | (testable_dec_dec_old _big_k _big_m H1 H2) => 
      (lem_testable_dec_dec_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_k H1)
        (translate_auto_testable_old_from_testable_old (dec _big_m _big_k) H2))
  | (testable_dec_key_dec_old _big_m X H1 H2) => 
      (lem_testable_dec_key_dec_old _big_m X
        (translate_auto_knows_old_from_knows_old (enc _big_m X) H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (testable_dec_key_old _big_m X H1 H2) => 
      (lem_testable_dec_key_old _big_m X
        (translate_auto_knows_old_from_knows_old _big_m H1)
        (translate_auto_testable_old_from_testable_old (dec _big_m X) H2))
  | (testable_dec_old _big_k _big_m H1 H2) => 
      (lem_testable_dec_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_k H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (testable_decrypt_key_private_key_old _big_k _big_m H1 H2) => 
      (lem_testable_decrypt_key_private_key_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old (crypt _big_m (key pub _big_k)) H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (testable_decrypt_key_public_key_old _big_k _big_m H1 H2) => 
      (lem_testable_decrypt_key_public_key_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old (crypt _big_m (key prv _big_k)) H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (testable_decrypt_key_symmetric_key_old _big_k _big_m H1 H2) => 
      (lem_testable_decrypt_key_symmetric_key_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old (crypt _big_m (key sym _big_k)) H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (testable_decrypt_private_key_old _big_k _big_m H1 H2) => 
      (lem_testable_decrypt_private_key_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old (key prv _big_k) H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (testable_decrypt_public_key_old _big_k _big_m H1 H2) => 
      (lem_testable_decrypt_public_key_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old (key pub _big_k) H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (testable_decrypt_symmetric_key_old _big_m X H1 H2) => 
      (lem_testable_decrypt_symmetric_key_old _big_m X
        (translate_auto_knows_old_from_knows_old (key sym X) H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (testable_enc_dec_old _big_k _big_m H1 H2) => 
      (lem_testable_enc_dec_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_k H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (testable_enc_key_dec_old _big_m X H1 H2) => 
      (lem_testable_enc_key_dec_old _big_m X
        (translate_auto_knows_old_from_knows_old (dec _big_m X) H1)
        (translate_auto_testable_old_from_testable_old _big_m H2))
  | (testable_enc_key_old _big_m X H1 H2) => 
      (lem_testable_enc_key_old _big_m X
        (translate_auto_knows_old_from_knows_old _big_m H1)
        (translate_auto_testable_old_from_testable_old (enc _big_m X) H2))
  | (testable_enc_old _big_k _big_m H1 H2) => 
      (lem_testable_enc_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_k H1)
        (translate_auto_testable_old_from_testable_old (enc _big_m _big_k) H2))
  | (testable_encrypt_key_old _big_m X H1 H2) => 
      (lem_testable_encrypt_key_old _big_m X
        (translate_auto_knows_old_from_knows_old _big_m H1)
        (translate_auto_testable_old_from_testable_old (crypt _big_m X) H2))
  | (testable_encrypt_old _big_k _big_m H1 H2) => 
      (lem_testable_encrypt_old _big_k _big_m
        (translate_auto_knows_old_from_knows_old _big_k H1)
        (translate_auto_testable_old_from_testable_old (crypt _big_m _big_k) H2))
  | (testable_pred_old _big_m H1) => 
      (lem_testable_pred_old _big_m
        (translate_auto_testable_old_from_testable_old _big_m H1))
  | (testable_pred_pred_old _big_m H1) => 
      (lem_testable_pred_pred_old _big_m
        (translate_auto_testable_old_from_testable_old (p _big_m) H1))
  | (testable_succ_old _big_m H1) => 
      (lem_testable_succ_old _big_m
        (translate_auto_testable_old_from_testable_old (s _big_m) H1))
  | (testable_succ_pred_old _big_m H1) => 
      (lem_testable_succ_pred_old _big_m
        (translate_auto_testable_old_from_testable_old _big_m H1))
  end
.
Fixpoint translate_auto_knows_current_from_knows_current (x1 : term) (pi : knows_current x1) {struct pi} : auto_knows_current x1 :=
  match pi as pi in knows_current x1 return auto_knows_current x1 with
    (intruder_can_build_pairs_current _big_m1 _big_m2 H1 H2) => 
      (lem_intruder_can_build_pairs_current _big_m1 _big_m2
        (translate_auto_knows_current_from_knows_current _big_m1 H1)
        (translate_auto_knows_current_from_knows_current _big_m2 H2))
  | (intruder_can_compute_predecessors_current _big_m H1) => 
      (lem_intruder_can_compute_predecessors_current _big_m
        (translate_auto_knows_current_from_knows_current (s _big_m) H1))
  | (intruder_can_compute_predecessors_succ_current _big_m H1) => 
      (lem_intruder_can_compute_predecessors_succ_current _big_m
        (translate_auto_knows_current_from_knows_current _big_m H1))
  | (intruder_can_compute_successors_current _big_m H1) => 
      (lem_intruder_can_compute_successors_current _big_m
        (translate_auto_knows_current_from_knows_current _big_m H1))
  | (intruder_can_compute_successors_pred_current _big_m H1) => 
      (lem_intruder_can_compute_successors_pred_current _big_m
        (translate_auto_knows_current_from_knows_current (p _big_m) H1))
  | (intruder_can_dec_current _big_k _big_m H1 H2) => 
      (lem_intruder_can_dec_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_k H1)
        (translate_auto_knows_current_from_knows_current _big_m H2))
  | (intruder_can_dec_enc_current _big_k _big_m H1 H2) => 
      (lem_intruder_can_dec_enc_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_k H1)
        (translate_auto_knows_current_from_knows_current (enc _big_m _big_k) H2))
  | (intruder_can_decrypt_if_has_private_key_current _big_k _big_m H1 H2) => 
      (lem_intruder_can_decrypt_if_has_private_key_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current (crypt _big_m (key pub _big_k)) H1)
        (translate_auto_knows_current_from_knows_current (key prv _big_k) H2))
  | (intruder_can_decrypt_if_has_public_key_current _big_k _big_m H1 H2) => 
      (lem_intruder_can_decrypt_if_has_public_key_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current (crypt _big_m (key prv _big_k)) H1)
        (translate_auto_knows_current_from_knows_current (key pub _big_k) H2))
  | (intruder_can_decrypt_if_has_symmetric_key_current _big_m X H1 H2) => 
      (lem_intruder_can_decrypt_if_has_symmetric_key_current _big_m X
        (translate_auto_knows_current_from_knows_current (crypt _big_m (key sym X)) H1)
        (translate_auto_knows_current_from_knows_current (key sym X) H2))
  | (intruder_can_enc_current _big_k _big_m H1 H2) => 
      (lem_intruder_can_enc_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_k H1)
        (translate_auto_knows_current_from_knows_current _big_m H2))
  | (intruder_can_enc_dec_current _big_k _big_m H1 H2) => 
      (lem_intruder_can_enc_dec_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_k H1)
        (translate_auto_knows_current_from_knows_current (dec _big_m _big_k) H2))
  | (intruder_can_encrypt_current _big_k _big_m H1 H2) => 
      (lem_intruder_can_encrypt_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_m H1)
        (translate_auto_knows_current_from_knows_current _big_k H2))
  | (intruder_can_take_first_components_current _big_m1 _big_m2 H1) => 
      (lem_intruder_can_take_first_components_current _big_m1 _big_m2
        (translate_auto_knows_current_from_knows_current (cons _big_m1 _big_m2) H1))
  | (intruder_can_take_second_components_current _big_m1 _big_m2 H1) => 
      (lem_intruder_can_take_second_components_current _big_m1 _big_m2
        (translate_auto_knows_current_from_knows_current (cons _big_m1 _big_m2) H1))
  | (intruder_knows_agents_public_key_current X H1) => 
      (lem_intruder_knows_agents_public_key_current X
        (translate_auto_agent_from_agent X H1))
  | (intruder_knows_all_agents_current X H1) => 
      (lem_intruder_knows_all_agents_current X
        (translate_auto_agent_from_agent X H1))
  | (intruder_knows_all_previous_noncea _big_a _big_b) => 
      (lem_intruder_knows_all_previous_noncea _big_a _big_b)
  | (intruder_knows_all_previous_nonceb _big_a _big_b) => 
      (lem_intruder_knows_all_previous_nonceb _big_a _big_b)
  | (intruder_knows_all_previous_passwords _big_a _big_b) => 
      (lem_intruder_knows_all_previous_passwords _big_a _big_b)
  | (intruder_knows_nil_current) => 
      (lem_intruder_knows_nil_current)
  | (intruder_knows_own_private_key_current) => 
      (lem_intruder_knows_own_private_key_current)
  | (intruder_remembers _big_m H1) => 
      (lem_intruder_remembers _big_m
        (translate_auto_knows_old_from_knows_old _big_m H1))
  | (intruder_weak_secret_dec_current _big_m _big_p H1 H2) => 
      (lem_intruder_weak_secret_dec_current _big_m _big_p
        (translate_auto_testable_current_from_testable_current (enc _big_m _big_p) H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (intruder_weak_secret_dec_dec_current _big_m _big_p H1 H2) => 
      (lem_intruder_weak_secret_dec_dec_current _big_m _big_p
        (translate_auto_testable_current_from_testable_current _big_m H1)
        (translate_auto_testable_current_from_testable_current (dec _big_m _big_p) H2))
  | (message1_current _big_a _big_b H1 H2) => 
      (lem_message1_current _big_a _big_b
        (translate_auto_agent_from_agent _big_b H1)
        (translate_auto_agent_from_agent _big_a H2))
  | (message2_current _big_a _big_b _big_ka H1) => 
      (lem_message2_current _big_a _big_b _big_ka
        (translate_auto_knows_current_from_knows_current (cons _big_a (cons (enc _big_ka (passwd_current _big_a _big_b)) nil)) H1))
  | (message2_dec_current _big_a _big_b _big_m H1) => 
      (lem_message2_dec_current _big_a _big_b _big_m
        (translate_auto_knows_current_from_knows_current (cons _big_a (cons _big_m nil)) H1))
  | (message3_current _big_a _big_b _big_r H1) => 
      (lem_message3_current _big_a _big_b _big_r
        (translate_auto_knows_current_from_knows_current (enc (crypt _big_r (key pub (session_current _big_a _big_b))) (passwd_current _big_a _big_b)) H1))
  | (message4_current _big_a _big_b _big_ka _big_na H1 H2) => 
      (lem_message4_current _big_a _big_b _big_ka _big_na
        (translate_auto_knows_current_from_knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) H1)
        (translate_auto_knows_current_from_knows_current (cons _big_a (cons (enc _big_ka (passwd_current _big_a _big_b)) nil)) H2))
  | (message4_dec_current _big_a _big_b _big_m _big_na H1 H2) => 
      (lem_message4_dec_current _big_a _big_b _big_m _big_na
        (translate_auto_knows_current_from_knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) H1)
        (translate_auto_knows_current_from_knows_current (cons _big_a (cons _big_m nil)) H2))
  | (message5_current _big_a _big_b _big_nb _big_r H1 H2) => 
      (lem_message5_current _big_a _big_b _big_nb _big_r
        (translate_auto_knows_current_from_knows_current (crypt (cons (noncea_current _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) H1)
        (translate_auto_knows_current_from_knows_current (enc (crypt _big_r (key pub (session_current _big_a _big_b))) (passwd_current _big_a _big_b)) H2))
  end

with translate_auto_testable_current_from_testable_current (x1 : term) (pi : testable_current x1) {struct pi} : auto_testable_current x1 :=
  match pi as pi in testable_current x1 return auto_testable_current x1 with
    (first_testable_current _big_l _big_m H1) => 
      (lem_first_testable_current _big_l _big_m
        (translate_auto_testable_current_from_testable_current _big_m H1))
  | (known_implies_testable_current _big_m H1) => 
      (lem_known_implies_testable_current _big_m
        (translate_auto_knows_current_from_knows_current _big_m H1))
  | (second_testable_current _big_l _big_m H1) => 
      (lem_second_testable_current _big_l _big_m
        (translate_auto_testable_current_from_testable_current _big_l H1))
  | (testable_dec_current _big_k _big_m H1 H2) => 
      (lem_testable_dec_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_k H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (testable_dec_dec_current _big_k _big_m H1 H2) => 
      (lem_testable_dec_dec_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_k H1)
        (translate_auto_testable_current_from_testable_current (dec _big_m _big_k) H2))
  | (testable_dec_key_current _big_m X H1 H2) => 
      (lem_testable_dec_key_current _big_m X
        (translate_auto_knows_current_from_knows_current _big_m H1)
        (translate_auto_testable_current_from_testable_current (dec _big_m X) H2))
  | (testable_dec_key_dec_current _big_m X H1 H2) => 
      (lem_testable_dec_key_dec_current _big_m X
        (translate_auto_knows_current_from_knows_current (enc _big_m X) H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (testable_decrypt_key_private_key_current _big_k _big_m H1 H2) => 
      (lem_testable_decrypt_key_private_key_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current (crypt _big_m (key pub _big_k)) H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (testable_decrypt_key_public_key_current _big_k _big_m H1 H2) => 
      (lem_testable_decrypt_key_public_key_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current (crypt _big_m (key prv _big_k)) H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (testable_decrypt_key_symmetric_key_current _big_k _big_m H1 H2) => 
      (lem_testable_decrypt_key_symmetric_key_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current (crypt _big_m (key sym _big_k)) H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (testable_decrypt_private_key_current _big_k _big_m H1 H2) => 
      (lem_testable_decrypt_private_key_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current (key prv _big_k) H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (testable_decrypt_public_key_current _big_k _big_m H1 H2) => 
      (lem_testable_decrypt_public_key_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current (key pub _big_k) H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (testable_decrypt_symmetric_key_current _big_m X H1 H2) => 
      (lem_testable_decrypt_symmetric_key_current _big_m X
        (translate_auto_knows_current_from_knows_current (key sym X) H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (testable_enc_current _big_k _big_m H1 H2) => 
      (lem_testable_enc_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_k H1)
        (translate_auto_testable_current_from_testable_current (enc _big_m _big_k) H2))
  | (testable_enc_dec_current _big_k _big_m H1 H2) => 
      (lem_testable_enc_dec_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_k H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (testable_enc_key_current _big_m X H1 H2) => 
      (lem_testable_enc_key_current _big_m X
        (translate_auto_knows_current_from_knows_current _big_m H1)
        (translate_auto_testable_current_from_testable_current (enc _big_m X) H2))
  | (testable_enc_key_dec_current _big_m X H1 H2) => 
      (lem_testable_enc_key_dec_current _big_m X
        (translate_auto_knows_current_from_knows_current (dec _big_m X) H1)
        (translate_auto_testable_current_from_testable_current _big_m H2))
  | (testable_encrypt_current _big_k _big_m H1 H2) => 
      (lem_testable_encrypt_current _big_k _big_m
        (translate_auto_knows_current_from_knows_current _big_k H1)
        (translate_auto_testable_current_from_testable_current (crypt _big_m _big_k) H2))
  | (testable_encrypt_key_current _big_m X H1 H2) => 
      (lem_testable_encrypt_key_current _big_m X
        (translate_auto_knows_current_from_knows_current _big_m H1)
        (translate_auto_testable_current_from_testable_current (crypt _big_m X) H2))
  | (testable_pred_current _big_m H1) => 
      (lem_testable_pred_current _big_m
        (translate_auto_testable_current_from_testable_current _big_m H1))
  | (testable_pred_pred_current _big_m H1) => 
      (lem_testable_pred_pred_current _big_m
        (translate_auto_testable_current_from_testable_current (p _big_m) H1))
  | (testable_succ_current _big_m H1) => 
      (lem_testable_succ_current _big_m
        (translate_auto_testable_current_from_testable_current (s _big_m) H1))
  | (testable_succ_pred_current _big_m H1) => 
      (lem_testable_succ_pred_current _big_m
        (translate_auto_testable_current_from_testable_current _big_m H1))
  end
.
Definition translate_auto_alice_key_current_from_alice_key_current (x1 : term) (x2 : term) (pi : alice_key_current x1 x2) : auto_alice_key_current x1 x2 :=
  match pi as pi in alice_key_current x1 x2 return auto_alice_key_current x1 x2 with
    (define_alice_key_current _big_a _big_b _big_nb _big_r H1 H2) => 
      (lem_define_alice_key_current _big_a _big_b _big_nb _big_r
        (translate_auto_knows_current_from_knows_current (crypt (cons (noncea_current _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) H1)
        (translate_auto_knows_current_from_knows_current (enc (crypt _big_r (key pub (session_current _big_a _big_b))) (passwd_current _big_a _big_b)) H2))
  end
.
Definition translate_auto___query__intruder_knows_session_key_as_seen_by_alice_from___query__intruder_knows_session_key_as_seen_by_alice (pi : __query__intruder_knows_session_key_as_seen_by_alice) : auto___query__intruder_knows_session_key_as_seen_by_alice :=
  match pi  with
    (intruder_knows_session_key_as_seen_by_alice _big_k H1 H2) => 
      (lem_intruder_knows_session_key_as_seen_by_alice _big_k
        (translate_auto_alice_key_current_from_alice_key_current alice _big_k H1)
        (translate_auto_knows_current_from_knows_current _big_k H2))
  end
.
Definition translate_auto_bob_key_old_from_bob_key_old (x1 : term) (x2 : term) (pi : bob_key_old x1 x2) : auto_bob_key_old x1 x2 :=
  match pi as pi in bob_key_old x1 x2 return auto_bob_key_old x1 x2 with
    (define_bob_key_dec_old _big_a _big_b _big_m _big_na H1 H2 H3) => 
      (lem_define_bob_key_dec_old _big_a _big_b _big_m _big_na
        (translate_auto_knows_old_from_knows_old (crypt (nonceb_old _big_a _big_b) (key sym (r_old _big_a _big_b))) H1)
        (translate_auto_knows_old_from_knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) H2)
        (translate_auto_knows_old_from_knows_old (cons _big_a (cons _big_m nil)) H3))
  | (define_bob_key_old _big_a _big_b _big_ka _big_na H1 H2 H3) => 
      (lem_define_bob_key_old _big_a _big_b _big_ka _big_na
        (translate_auto_knows_old_from_knows_old (crypt (nonceb_old _big_a _big_b) (key sym (r_old _big_a _big_b))) H1)
        (translate_auto_knows_old_from_knows_old (crypt _big_na (key sym (r_old _big_a _big_b))) H2)
        (translate_auto_knows_old_from_knows_old (cons _big_a (cons (enc _big_ka (passwd_old _big_a _big_b)) nil)) H3))
  end
.
Definition translate_auto_alice_key_old_from_alice_key_old (x1 : term) (x2 : term) (pi : alice_key_old x1 x2) : auto_alice_key_old x1 x2 :=
  match pi as pi in alice_key_old x1 x2 return auto_alice_key_old x1 x2 with
    (define_alice_key_old _big_a _big_b _big_nb _big_r H1 H2) => 
      (lem_define_alice_key_old _big_a _big_b _big_nb _big_r
        (translate_auto_knows_old_from_knows_old (crypt (cons (noncea_old _big_a _big_b) (cons _big_nb nil)) (key sym _big_r)) H1)
        (translate_auto_knows_old_from_knows_old (enc (crypt _big_r (key pub (session_old _big_a _big_b))) (passwd_old _big_a _big_b)) H2))
  end
.
Definition translate_auto_bob_key_current_from_bob_key_current (x1 : term) (x2 : term) (pi : bob_key_current x1 x2) : auto_bob_key_current x1 x2 :=
  match pi as pi in bob_key_current x1 x2 return auto_bob_key_current x1 x2 with
    (define_bob_key_current _big_a _big_b _big_ka _big_na H1 H2 H3) => 
      (lem_define_bob_key_current _big_a _big_b _big_ka _big_na
        (translate_auto_knows_current_from_knows_current (crypt (nonceb_current _big_a _big_b) (key sym (r_current _big_a _big_b))) H1)
        (translate_auto_knows_current_from_knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) H2)
        (translate_auto_knows_current_from_knows_current (cons _big_a (cons (enc _big_ka (passwd_current _big_a _big_b)) nil)) H3))
  | (define_bob_key_dec_current _big_a _big_b _big_m _big_na H1 H2 H3) => 
      (lem_define_bob_key_dec_current _big_a _big_b _big_m _big_na
        (translate_auto_knows_current_from_knows_current (crypt (nonceb_current _big_a _big_b) (key sym (r_current _big_a _big_b))) H1)
        (translate_auto_knows_current_from_knows_current (crypt _big_na (key sym (r_current _big_a _big_b))) H2)
        (translate_auto_knows_current_from_knows_current (cons _big_a (cons _big_m nil)) H3))
  end
.
Definition translate_auto___query__intruder_knows_session_key_as_seen_by_bob_from___query__intruder_knows_session_key_as_seen_by_bob (pi : __query__intruder_knows_session_key_as_seen_by_bob) : auto___query__intruder_knows_session_key_as_seen_by_bob :=
  match pi  with
    (intruder_knows_session_key_as_seen_by_bob _big_k H1 H2) => 
      (lem_intruder_knows_session_key_as_seen_by_bob _big_k
        (translate_auto_bob_key_current_from_bob_key_current bob _big_k H1)
        (translate_auto_knows_current_from_knows_current _big_k H2))
  end
.


(* [conp] Consistency proofs. *)

Theorem thm_intruder_knows_session_key_as_seen_by_alice : ~__query__intruder_knows_session_key_as_seen_by_alice.
Proof.
  unfold not. intro H.
  elim (translate_auto___query__intruder_knows_session_key_as_seen_by_alice_from___query__intruder_knows_session_key_as_seen_by_alice H).
Qed.

Theorem thm_intruder_knows_session_key_as_seen_by_bob : ~__query__intruder_knows_session_key_as_seen_by_bob.
Proof.
  unfold not. intro H.
  elim (translate_auto___query__intruder_knows_session_key_as_seen_by_bob_from___query__intruder_knows_session_key_as_seen_by_bob H).
Qed.

