(* [sigd] Signature definition. *)

Inductive term : Set :=
    alice : term
  | bob : term
  | cons : term -> term -> term
  | crypt : term -> term -> term
  | i : term
  | key : term -> term -> term
  | nil : term
  | noncea_current : term -> term
  | noncea_old : term -> term
  | nonceb_current : term -> term -> term -> term
  | nonceb_old : term -> term -> term -> term
  | prv : term
  | pub : term
  | s : term -> term
  | server : term
  | session_current : term -> term -> term -> term -> term
  | session_old : term -> term -> 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___def_59 : term -> Prop :=
    trans___def_59_1 : forall X:term, auto___def_59 X
with auto___def_4 : term -> Prop :=
    trans___def_4_1 : forall X:term, auto___def_4 X
with auto___def_60 : term -> term -> Prop :=
    trans___def_60_1 : forall X1 X2:term, auto___def_78 X1 -> auto___def_86 X2 -> auto___def_60 X1 X2
  | trans___def_60_2 : forall X1 X2:term, auto___type_13 X1 -> auto___def_84 X2 -> auto___def_60 X1 X2
  | trans___def_60_3 : forall X1 X2:term, auto___def_29 X1 -> auto___def_37 X2 -> auto___def_60 X1 X2
  | trans___def_60_4 : forall X1 X2:term, auto_knows_current X1 -> auto___def_55 X2 -> auto___def_60 X1 X2
  | trans___def_60_5 : forall X1 X2:term, auto___def_40 X1 -> auto___def_45 X2 -> auto___def_60 X1 X2
  | trans___def_60_6 : forall X1 X2:term, auto___def_70 X1 -> auto___def_21 X2 -> auto___def_60 X1 X2
  | trans___def_60_7 : forall X1 X2:term, auto___def_89 X1 -> auto___def_94 X2 -> auto___def_60 X1 X2
with auto_bob_key_current : term -> term -> Prop :=
    trans_bob_key_current_1 : forall X1 X2:term, auto_agent X1 -> auto___type_14 X1 -> auto___def_81 X2 -> auto_bob_key_current X1 X2
with auto___def_58 : term -> term -> Prop :=
    trans___def_58_1 : forall X1 X2:term, auto___def_52 X1 -> auto_knows_current X2 -> auto___def_58 X1 X2
with auto_agent : term -> Prop :=
    trans_agent_bob_1 : auto_agent bob
  | trans_agent_alice_1 : auto_agent alice
  | trans_agent_server_1 : auto_agent server
  | trans_agent_i_1 : auto_agent i
with auto___def_89 : term -> Prop :=
    trans___def_89_cons_1 : forall X1 X2:term, auto___type_16 X1 -> auto___def_91 X2 -> auto___def_89 (cons X1 X2)
with auto___def_46 : term -> term -> term -> term -> term -> Prop :=
    trans___def_46_1 : forall X1 X2 X3 X4 X5:term, auto_agent X1 -> auto___type_7 X1 -> auto_knows_old X2 -> auto___type_5 X3 -> auto_knows_old X4 -> auto___def_32 X5 -> auto___def_46 X1 X2 X3 X4 X5
with auto___def_49 : term -> Prop :=
    trans___def_49_nil_1 : auto___def_49 nil
with auto___def_84 : term -> Prop :=
    trans___def_84_session_current_1 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto_agent X2 -> auto_knows_current X2 -> auto___type_12 X3 -> auto_knows_current X4 -> auto___def_84 (session_current X1 X2 X3 X4)
with auto___def_61 : term -> Prop :=
    trans___def_61_session_old_1 : forall X1 X2 X3 X4:term, auto___def_61 (session_old X1 X2 X3 X4)
with auto___type_12 : term -> Prop :=
    trans___type_12_bob_1 : auto___type_12 bob
  | trans___type_12_alice_1 : auto___type_12 alice
  | trans___type_12_s_1 : forall X1:term, auto_knows_current X1 -> auto___type_12 (s X1)
  | trans___type_12_server_1 : auto___type_12 server
  | trans___type_12_nil_1 : auto___type_12 nil
  | trans___type_12_i_1 : auto___type_12 i
  | trans___type_12_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_12 (key X1 X2)
  | trans___type_12_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_12 (key X1 X2)
  | trans___type_12_key_3 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_12 (key X1 X2)
  | trans___type_12_noncea_current_1 : forall X1:term, auto_agent X1 -> auto___type_12 (noncea_current X1)
  | trans___type_12_nonceb_old_1 : forall X1 X2 X3:term, auto___type_12 (nonceb_old X1 X2 X3)
  | trans___type_12_noncea_old_1 : forall X1:term, auto___type_12 (noncea_old X1)
  | trans___type_12_nonceb_current_1 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_12 (nonceb_current X1 X2 X3)
  | trans___type_12_crypt_1 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_3 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_4 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_5 : forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_6 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_crypt_7 : forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_12 (crypt X1 X2)
  | trans___type_12_cons_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_12 (cons X1 X2)
with auto___def_22 : term -> Prop :=
    trans___def_22_cons_1 : forall X1 X2:term, auto___def_23 X1 -> auto___def_24 X2 -> auto___def_22 (cons X1 X2)
with auto___def_95 : term -> term -> term -> term -> term -> Prop :=
    trans___def_95_1 : forall X1 X2 X3 X4 X5:term, auto_agent X1 -> auto___type_16 X1 -> auto_knows_current X2 -> auto___type_14 X3 -> auto_knows_current X4 -> auto___def_81 X5 -> auto___def_95 X1 X2 X3 X4 X5
with auto___type_3 : term -> Prop :=
    trans___type_3_bob_1 : auto___type_3 bob
  | trans___type_3_alice_1 : auto___type_3 alice
  | trans___type_3_s_1 : forall X1:term, auto_knows_old X1 -> auto___type_3 (s X1)
  | trans___type_3_server_1 : auto___type_3 server
  | trans___type_3_nil_1 : auto___type_3 nil
  | trans___type_3_i_1 : auto___type_3 i
  | trans___type_3_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_3 (key X1 X2)
  | trans___type_3_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_3 (key X1 X2)
  | trans___type_3_nonceb_old_1 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_3 (nonceb_old X1 X2 X3)
  | trans___type_3_noncea_old_1 : forall X1:term, auto_agent X1 -> auto___type_3 (noncea_old X1)
  | trans___type_3_crypt_1 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_3 (crypt X1 X2)
  | trans___type_3_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_3 (crypt X1 X2)
  | trans___type_3_crypt_3 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_3 (crypt X1 X2)
  | trans___type_3_crypt_4 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_3 (crypt X1 X2)
  | trans___type_3_crypt_5 : forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_3 (crypt 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)
with auto___def_93 : term -> Prop :=
    trans___def_93_cons_1 : forall X1 X2:term, auto___type_13 X1 -> auto___def_85 X2 -> auto___def_93 (cons X1 X2)
with auto___def_16 : term -> Prop :=
    trans___def_16_cons_1 : forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_16 (cons X1 X2)
with auto___def_86 : term -> Prop :=
    trans___def_86_cons_1 : forall X1 X2:term, auto___type_16 X1 -> auto___def_87 X2 -> auto___def_86 (cons X1 X2)
with auto___def_37 : term -> Prop :=
    trans___def_37_cons_1 : forall X1 X2:term, auto___type_7 X1 -> auto___def_38 X2 -> auto___def_37 (cons X1 X2)
with auto___def_21 : term -> Prop :=
    trans___def_21_cons_1 : forall X1 X2:term, auto_agent X1 -> auto___def_22 X2 -> auto___def_21 (cons X1 X2)
with auto___def_69 : term -> Prop :=
    trans___def_69_nil_1 : auto___def_69 nil
with auto___def_31 : term -> Prop :=
    trans___def_31_cons_1 : forall X1 X2:term, auto___def_32 X1 -> auto___def_33 X2 -> auto___def_31 (cons X1 X2)
with auto___type_16 : term -> Prop :=
    trans___type_16_bob_1 : auto___type_16 bob
  | trans___type_16_alice_1 : auto___type_16 alice
  | trans___type_16_s_1 : forall X1:term, auto_knows_current X1 -> auto___type_16 (s X1)
  | trans___type_16_server_1 : auto___type_16 server
  | trans___type_16_nil_1 : auto___type_16 nil
  | trans___type_16_i_1 : auto___type_16 i
  | trans___type_16_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_16 (key X1 X2)
  | trans___type_16_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_16 (key X1 X2)
  | trans___type_16_key_3 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_16 (key X1 X2)
  | trans___type_16_noncea_current_1 : forall X1:term, auto_agent X1 -> auto___type_16 (noncea_current X1)
  | trans___type_16_nonceb_old_1 : forall X1 X2 X3:term, auto___type_16 (nonceb_old X1 X2 X3)
  | trans___type_16_noncea_old_1 : forall X1:term, auto___type_16 (noncea_old X1)
  | trans___type_16_nonceb_current_1 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_16 (nonceb_current X1 X2 X3)
  | trans___type_16_crypt_1 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_16 (crypt X1 X2)
  | trans___type_16_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_16 (crypt X1 X2)
  | trans___type_16_crypt_3 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_16 (crypt X1 X2)
  | trans___type_16_crypt_4 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_16 (crypt X1 X2)
  | trans___type_16_crypt_5 : forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_16 (crypt X1 X2)
  | trans___type_16_crypt_6 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_16 (crypt X1 X2)
  | trans___type_16_crypt_7 : forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_16 (crypt X1 X2)
  | trans___type_16_cons_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_16 (cons X1 X2)
with auto_knows_current : term -> Prop :=
    trans_knows_current_bob_1 : auto_knows_current bob
  | trans_knows_current_alice_1 : auto_knows_current alice
  | trans_knows_current_s_1 : forall X1:term, auto_knows_current X1 -> auto_knows_current (s X1)
  | trans_knows_current_server_1 : auto_knows_current server
  | trans_knows_current_nil_1 : auto_knows_current nil
  | trans_knows_current_i_1 : auto_knows_current i
  | trans_knows_current_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_3 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_noncea_current_1 : forall X1:term, auto_agent X1 -> auto_knows_current (noncea_current X1)
  | trans_knows_current_nonceb_old_1 : forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_noncea_old_1 : forall X1:term, auto_knows_current (noncea_old X1)
  | trans_knows_current_nonceb_current_1 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_crypt_1 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_3 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 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___def_70 X1 -> auto___def_71 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_6 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_7 : forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current (crypt 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)
with auto___def_44 : term -> Prop :=
    trans___def_44_cons_1 : forall X1 X2:term, auto___type_4 X1 -> auto___def_36 X2 -> auto___def_44 (cons X1 X2)
with auto___def_25 : term -> term -> term -> term -> Prop :=
    trans___def_25_1 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___type_3 X4 -> auto___def_25 X1 X2 X3 X4
with auto___def_26 : term -> Prop :=
    trans___def_26_cons_1 : forall X1 X2:term, auto___def_27 X1 -> auto___def_28 X2 -> auto___def_26 (cons X1 X2)
with auto___def_52 : term -> Prop :=
    trans___def_52_i_1 : auto___def_52 i
with auto___def_45 : term -> Prop :=
    trans___def_45_cons_1 : forall X1 X2:term, auto___type_5 X1 -> auto___def_38 X2 -> auto___def_45 (cons X1 X2)
with auto___def_23 : term -> Prop :=
    trans___def_23_server_1 : auto___def_23 server
with auto___def_10 : term -> term -> Prop :=
    trans___def_10_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___def_10 X1 X2
with auto___def_48 : term -> Prop :=
    trans___def_48_crypt_1 : forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_48 (crypt X1 X2)
with auto___def_17 : term -> Prop :=
    trans___def_17_key_1 : forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> auto___def_17 (key X1 X2)
with auto___type_7 : term -> Prop :=
    trans___type_7_bob_1 : auto___type_7 bob
  | trans___type_7_alice_1 : auto___type_7 alice
  | trans___type_7_s_1 : forall X1:term, auto_knows_old X1 -> auto___type_7 (s X1)
  | trans___type_7_server_1 : auto___type_7 server
  | trans___type_7_nil_1 : auto___type_7 nil
  | trans___type_7_i_1 : auto___type_7 i
  | trans___type_7_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_7 (key X1 X2)
  | trans___type_7_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_7 (key X1 X2)
  | trans___type_7_nonceb_old_1 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_7 (nonceb_old X1 X2 X3)
  | trans___type_7_noncea_old_1 : forall X1:term, auto_agent X1 -> auto___type_7 (noncea_old X1)
  | trans___type_7_crypt_1 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_7 (crypt X1 X2)
  | trans___type_7_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_7 (crypt X1 X2)
  | trans___type_7_crypt_3 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_7 (crypt X1 X2)
  | trans___type_7_crypt_4 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_7 (crypt X1 X2)
  | trans___type_7_crypt_5 : forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_7 (crypt X1 X2)
  | trans___type_7_cons_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_7 (cons X1 X2)
with auto___def_92 : term -> Prop :=
    trans___def_92_cons_1 : forall X1 X2:term, auto___def_81 X1 -> auto___def_93 X2 -> auto___def_92 (cons X1 X2)
with auto___def_34 : term -> Prop :=
    trans___def_34_sym_1 : auto___def_34 sym
with auto___def_47 : term -> Prop :=
    trans___def_47_cons_1 : forall X1 X2:term, auto___def_48 X1 -> auto___def_49 X2 -> auto___def_47 (cons X1 X2)
with auto___def_78 : term -> Prop :=
    trans___def_78_cons_1 : forall X1 X2:term, auto___type_14 X1 -> auto___def_80 X2 -> auto___def_78 (cons X1 X2)
with auto___def_94 : term -> Prop :=
    trans___def_94_cons_1 : forall X1 X2:term, auto___type_14 X1 -> auto___def_87 X2 -> auto___def_94 (cons X1 X2)
with auto___def_51 : term -> Prop :=
    trans___def_51_prv_1 : auto___def_51 prv
with auto___def_55 : term -> Prop :=
    trans___def_55_session_old_1 : forall X1 X2 X3 X4:term, auto___def_55 (session_old X1 X2 X3 X4)
with auto___def_13 : term -> Prop :=
    trans___def_13_cons_1 : forall X1 X2:term, auto___def_14 X1 -> auto___def_15 X2 -> auto___def_13 (cons X1 X2)
with auto___def_74 : term -> term -> term -> term -> Prop :=
    trans___def_74_1 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___type_12 X4 -> auto___def_74 X1 X2 X3 X4
with auto___def_87 : term -> Prop :=
    trans___def_87_cons_1 : forall X1 X2:term, auto___def_23 X1 -> auto___def_24 X2 -> auto___def_87 (cons X1 X2)
with auto___def_54 : term -> Prop :=
    trans___def_54_sym_1 : auto___def_54 sym
with auto___def_88 : term -> Prop :=
    trans___def_88_crypt_1 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_88 (crypt X1 X2)
with auto___def_57 : term -> Prop :=
    trans___def_57_i_1 : auto___def_57 i
with auto___def_24 : term -> Prop :=
    trans___def_24_nil_1 : auto___def_24 nil
with auto___type_17 : term -> Prop :=
    trans___type_17_bob_1 : auto___type_17 bob
  | trans___type_17_alice_1 : auto___type_17 alice
  | trans___type_17_s_1 : forall X1:term, auto_knows_current X1 -> auto___type_17 (s X1)
  | trans___type_17_server_1 : auto___type_17 server
  | trans___type_17_nil_1 : auto___type_17 nil
  | trans___type_17_i_1 : auto___type_17 i
  | trans___type_17_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_17 (key X1 X2)
  | trans___type_17_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_17 (key X1 X2)
  | trans___type_17_key_3 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_17 (key X1 X2)
  | trans___type_17_noncea_current_1 : forall X1:term, auto_agent X1 -> auto___type_17 (noncea_current X1)
  | trans___type_17_nonceb_old_1 : forall X1 X2 X3:term, auto___type_17 (nonceb_old X1 X2 X3)
  | trans___type_17_noncea_old_1 : forall X1:term, auto___type_17 (noncea_old X1)
  | trans___type_17_nonceb_current_1 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_17 (nonceb_current X1 X2 X3)
  | trans___type_17_crypt_1 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_17 (crypt X1 X2)
  | trans___type_17_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_17 (crypt X1 X2)
  | trans___type_17_crypt_3 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_17 (crypt X1 X2)
  | trans___type_17_crypt_4 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_17 (crypt X1 X2)
  | trans___type_17_crypt_5 : forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_17 (crypt X1 X2)
  | trans___type_17_crypt_6 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_17 (crypt X1 X2)
  | trans___type_17_crypt_7 : forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_17 (crypt X1 X2)
  | trans___type_17_cons_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_17 (cons X1 X2)
with auto___def_38 : term -> Prop :=
    trans___def_38_cons_1 : forall X1 X2:term, auto___def_23 X1 -> auto___def_24 X2 -> auto___def_38 (cons X1 X2)
with auto___def_19 : term -> Prop :=
    trans___def_19_nil_1 : auto___def_19 nil
with auto_knows_old : term -> Prop :=
    trans_knows_old_bob_1 : auto_knows_old bob
  | trans_knows_old_alice_1 : auto_knows_old alice
  | trans_knows_old_s_1 : forall X1:term, auto_knows_old X1 -> auto_knows_old (s X1)
  | trans_knows_old_server_1 : auto_knows_old server
  | trans_knows_old_nil_1 : auto_knows_old nil
  | trans_knows_old_i_1 : auto_knows_old i
  | trans_knows_old_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_nonceb_old_1 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_noncea_old_1 : forall X1:term, auto_agent X1 -> auto_knows_old (noncea_old X1)
  | trans_knows_old_crypt_1 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_3 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_4 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_5 : forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_old (crypt 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)
with auto___def_85 : term -> Prop :=
    trans___def_85_nil_1 : auto___def_85 nil
with auto___def_36 : term -> Prop :=
    trans___def_36_nil_1 : auto___def_36 nil
with auto___def_64 : term -> term -> Prop :=
    trans___def_64_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___def_64 X1 X2
with auto___def_82 : term -> Prop :=
    trans___def_82_cons_1 : forall X1 X2:term, auto___type_15 X1 -> auto___def_85 X2 -> auto___def_82 (cons X1 X2)
with auto___def_91 : term -> Prop :=
    trans___def_91_cons_1 : forall X1 X2:term, auto___type_14 X1 -> auto___def_92 X2 -> auto___def_91 (cons X1 X2)
with auto___def_75 : term -> Prop :=
    trans___def_75_cons_1 : forall X1 X2:term, auto___def_76 X1 -> auto___def_77 X2 -> auto___def_75 (cons X1 X2)
with auto___type_2 : term -> Prop :=
    trans___type_2_bob_1 : auto___type_2 bob
  | trans___type_2_alice_1 : auto___type_2 alice
  | trans___type_2_s_1 : forall X1:term, auto_knows_old X1 -> auto___type_2 (s X1)
  | trans___type_2_server_1 : auto___type_2 server
  | trans___type_2_nil_1 : auto___type_2 nil
  | trans___type_2_i_1 : auto___type_2 i
  | trans___type_2_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_2 (key X1 X2)
  | trans___type_2_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_2 (key X1 X2)
  | trans___type_2_nonceb_old_1 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_2 (nonceb_old X1 X2 X3)
  | trans___type_2_noncea_old_1 : forall X1:term, auto_agent X1 -> auto___type_2 (noncea_old X1)
  | trans___type_2_crypt_1 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_2 (crypt X1 X2)
  | trans___type_2_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_2 (crypt X1 X2)
  | trans___type_2_crypt_3 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_2 (crypt X1 X2)
  | trans___type_2_crypt_4 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_2 (crypt X1 X2)
  | trans___type_2_crypt_5 : forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_2 (crypt X1 X2)
  | trans___type_2_cons_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_2 (cons X1 X2)
with auto___def_80 : term -> Prop :=
    trans___def_80_cons_1 : forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> auto___def_80 (cons X1 X2)
with auto___def_72 : term -> Prop :=
    trans___def_72_cons_1 : forall X1 X2:term, auto___type_12 X1 -> auto___def_73 X2 -> auto___def_72 (cons X1 X2)
with auto___def_53 : term -> term -> term -> term -> Prop :=
    trans___def_53_1 : forall X1 X2 X3 X4:term, auto___def_53 X1 X2 X3 X4
with auto___def_83 : term -> Prop :=
    trans___def_83_sym_1 : auto___def_83 sym
with auto___def_90 : term -> Prop :=
    trans___def_90_key_1 : forall X1 X2:term, auto___def_83 X1 -> auto___def_94 X2 -> auto___def_90 (key X1 X2)
with auto___def_81 : term -> Prop :=
    trans___def_81_key_1 : forall X1 X2:term, auto___def_83 X1 -> auto___def_84 X2 -> auto___def_81 (key X1 X2)
with auto___def_29 : term -> Prop :=
    trans___def_29_cons_1 : forall X1 X2:term, auto___type_5 X1 -> auto___def_31 X2 -> auto___def_29 (cons X1 X2)
with auto___def_50 : term -> Prop :=
    trans___def_50_pub_1 : auto___def_50 pub
with auto___type_4 : term -> Prop :=
    trans___type_4_bob_1 : auto___type_4 bob
  | trans___type_4_alice_1 : auto___type_4 alice
  | trans___type_4_s_1 : forall X1:term, auto_knows_old X1 -> auto___type_4 (s X1)
  | trans___type_4_server_1 : auto___type_4 server
  | trans___type_4_nil_1 : auto___type_4 nil
  | trans___type_4_i_1 : auto___type_4 i
  | trans___type_4_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_4 (key X1 X2)
  | trans___type_4_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_4 (key X1 X2)
  | trans___type_4_nonceb_old_1 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_4 (nonceb_old X1 X2 X3)
  | trans___type_4_noncea_old_1 : forall X1:term, auto_agent X1 -> auto___type_4 (noncea_old X1)
  | trans___type_4_crypt_1 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_4 (crypt X1 X2)
  | trans___type_4_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_4 (crypt X1 X2)
  | trans___type_4_crypt_3 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_4 (crypt X1 X2)
  | trans___type_4_crypt_4 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_4 (crypt X1 X2)
  | trans___type_4_crypt_5 : forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 (crypt X1 X2)
  | trans___type_4_cons_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_4 (cons X1 X2)
with auto___def_11 : term -> Prop :=
    trans___def_11_cons_1 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_11 (cons X1 X2)
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_server_1 : auto___type_14 server
  | trans___type_14_i_1 : auto___type_14 i
with auto___type_11 : term -> Prop :=
    trans___type_11_bob_1 : auto___type_11 bob
  | trans___type_11_alice_1 : auto___type_11 alice
  | trans___type_11_s_1 : forall X1:term, auto_knows_current X1 -> auto___type_11 (s X1)
  | trans___type_11_server_1 : auto___type_11 server
  | trans___type_11_nil_1 : auto___type_11 nil
  | trans___type_11_i_1 : auto___type_11 i
  | trans___type_11_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_11 (key X1 X2)
  | trans___type_11_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_11 (key X1 X2)
  | trans___type_11_key_3 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_11 (key X1 X2)
  | trans___type_11_noncea_current_1 : forall X1:term, auto_agent X1 -> auto___type_11 (noncea_current X1)
  | trans___type_11_nonceb_old_1 : forall X1 X2 X3:term, auto___type_11 (nonceb_old X1 X2 X3)
  | trans___type_11_noncea_old_1 : forall X1:term, auto___type_11 (noncea_old X1)
  | trans___type_11_nonceb_current_1 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_11 (nonceb_current X1 X2 X3)
  | trans___type_11_crypt_1 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_3 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_4 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_5 : forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_6 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_crypt_7 : forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_11 (crypt X1 X2)
  | trans___type_11_cons_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_11 (cons X1 X2)
with auto___type_8 : term -> Prop :=
    trans___type_8_bob_1 : auto___type_8 bob
  | trans___type_8_alice_1 : auto___type_8 alice
  | trans___type_8_s_1 : forall X1:term, auto_knows_old X1 -> auto___type_8 (s X1)
  | trans___type_8_server_1 : auto___type_8 server
  | trans___type_8_nil_1 : auto___type_8 nil
  | trans___type_8_i_1 : auto___type_8 i
  | trans___type_8_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_8 (key X1 X2)
  | trans___type_8_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_8 (key X1 X2)
  | trans___type_8_nonceb_old_1 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_8 (nonceb_old X1 X2 X3)
  | trans___type_8_noncea_old_1 : forall X1:term, auto_agent X1 -> auto___type_8 (noncea_old X1)
  | trans___type_8_crypt_1 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_8 (crypt X1 X2)
  | trans___type_8_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_8 (crypt X1 X2)
  | trans___type_8_crypt_3 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_8 (crypt X1 X2)
  | trans___type_8_crypt_4 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_8 (crypt X1 X2)
  | trans___type_8_crypt_5 : forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_8 (crypt X1 X2)
  | trans___type_8_cons_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_8 (cons X1 X2)
with auto___def_27 : term -> Prop :=
    trans___def_27_crypt_1 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_27 (crypt X1 X2)
with auto___def_14 : term -> Prop :=
    trans___def_14_crypt_1 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_14 (crypt X1 X2)
with auto___def_8 : term -> Prop :=
    trans___def_8_noncea_old_1 : forall X1:term, auto_agent X1 -> auto___def_8 (noncea_old X1)
with auto___def_12 : term -> Prop :=
    trans___def_12_nonceb_old_1 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___def_12 (nonceb_old X1 X2 X3)
with auto___type_13 : term -> Prop :=
    trans___type_13_bob_1 : auto___type_13 bob
  | trans___type_13_alice_1 : auto___type_13 alice
  | trans___type_13_s_1 : forall X1:term, auto_knows_current X1 -> auto___type_13 (s X1)
  | trans___type_13_server_1 : auto___type_13 server
  | trans___type_13_nil_1 : auto___type_13 nil
  | trans___type_13_i_1 : auto___type_13 i
  | trans___type_13_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_13 (key X1 X2)
  | trans___type_13_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_13 (key X1 X2)
  | trans___type_13_key_3 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_13 (key X1 X2)
  | trans___type_13_noncea_current_1 : forall X1:term, auto_agent X1 -> auto___type_13 (noncea_current X1)
  | trans___type_13_nonceb_old_1 : forall X1 X2 X3:term, auto___type_13 (nonceb_old X1 X2 X3)
  | trans___type_13_noncea_old_1 : forall X1:term, auto___type_13 (noncea_old X1)
  | trans___type_13_nonceb_current_1 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_13 (nonceb_current X1 X2 X3)
  | trans___type_13_crypt_1 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_3 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_4 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_5 : forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_6 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_crypt_7 : forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_13 (crypt X1 X2)
  | trans___type_13_cons_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_13 (cons X1 X2)
with auto___def_20 : term -> Prop :=
    trans___def_20_sym_1 : auto___def_20 sym
with auto___def_70 : term -> Prop :=
    trans___def_70_cons_1 : forall X1 X2:term, auto___type_11 X1 -> auto___def_72 X2 -> auto___def_70 (cons X1 X2)
with auto___type_15 : term -> Prop :=
    trans___type_15_bob_1 : auto___type_15 bob
  | trans___type_15_alice_1 : auto___type_15 alice
  | trans___type_15_s_1 : forall X1:term, auto_knows_current X1 -> auto___type_15 (s X1)
  | trans___type_15_server_1 : auto___type_15 server
  | trans___type_15_nil_1 : auto___type_15 nil
  | trans___type_15_i_1 : auto___type_15 i
  | trans___type_15_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_15 (key X1 X2)
  | trans___type_15_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_15 (key X1 X2)
  | trans___type_15_key_3 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_15 (key X1 X2)
  | trans___type_15_noncea_current_1 : forall X1:term, auto_agent X1 -> auto___type_15 (noncea_current X1)
  | trans___type_15_nonceb_old_1 : forall X1 X2 X3:term, auto___type_15 (nonceb_old X1 X2 X3)
  | trans___type_15_noncea_old_1 : forall X1:term, auto___type_15 (noncea_old X1)
  | trans___type_15_nonceb_current_1 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_15 (nonceb_current X1 X2 X3)
  | trans___type_15_crypt_1 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_15 (crypt X1 X2)
  | trans___type_15_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_15 (crypt X1 X2)
  | trans___type_15_crypt_3 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_15 (crypt X1 X2)
  | trans___type_15_crypt_4 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_15 (crypt X1 X2)
  | trans___type_15_crypt_5 : forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_15 (crypt X1 X2)
  | trans___type_15_crypt_6 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_15 (crypt X1 X2)
  | trans___type_15_crypt_7 : forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_15 (crypt X1 X2)
  | trans___type_15_cons_1 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_15 (cons X1 X2)
with auto___def_56 : term -> term -> Prop :=
    trans___def_56_1 : forall X1 X2:term, auto___type_9 X1 -> auto_knows_current X2 -> auto___def_56 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_79 : term -> Prop :=
    trans___def_79_key_1 : forall X1 X2:term, auto___def_83 X1 -> auto___def_86 X2 -> auto___def_79 (key X1 X2)
with auto___def_18 : term -> Prop :=
    trans___def_18_cons_1 : forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_18 (cons X1 X2)
with auto___def_65 : term -> Prop :=
    trans___def_65_cons_1 : forall X1 X2:term, auto___def_66 X1 -> auto___def_67 X2 -> auto___def_65 (cons X1 X2)
with auto___def_15 : term -> Prop :=
    trans___def_15_nil_1 : auto___def_15 nil
with auto___def_73 : term -> Prop :=
    trans___def_73_nil_1 : auto___def_73 nil
with auto___def_30 : term -> Prop :=
    trans___def_30_key_1 : forall X1 X2:term, auto___def_34 X1 -> auto___def_37 X2 -> auto___def_30 (key X1 X2)
with auto___def_63 : term -> Prop :=
    trans___def_63_noncea_current_1 : forall X1:term, auto_agent X1 -> auto___def_63 (noncea_current X1)
with auto___def_42 : term -> Prop :=
    trans___def_42_cons_1 : forall X1 X2:term, auto___type_5 X1 -> auto___def_43 X2 -> auto___def_42 (cons X1 X2)
with auto___def_71 : term -> Prop :=
    trans___def_71_key_1 : forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> auto___def_71 (key X1 X2)
with auto___def_41 : term -> Prop :=
    trans___def_41_key_1 : forall X1 X2:term, auto___def_34 X1 -> auto___def_45 X2 -> auto___def_41 (key X1 X2)
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___def_66 : term -> Prop :=
    trans___def_66_nonceb_current_1 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___def_66 (nonceb_current X1 X2 X3)
with auto___def_98 : term -> Prop :=
    trans___def_98_nil_1 : auto___def_98 nil
with auto___def_67 : term -> Prop :=
    trans___def_67_cons_1 : forall X1 X2:term, auto___def_68 X1 -> auto___def_69 X2 -> auto___def_67 (cons X1 X2)
with auto___def_2 : term -> Prop :=
    trans___def_2_i_1 : auto___def_2 i
with auto___type_5 : term -> Prop :=
    trans___type_5_bob_1 : auto___type_5 bob
  | trans___type_5_alice_1 : auto___type_5 alice
  | trans___type_5_server_1 : auto___type_5 server
  | trans___type_5_i_1 : auto___type_5 i
with auto___def_43 : term -> Prop :=
    trans___def_43_cons_1 : forall X1 X2:term, auto___def_32 X1 -> auto___def_44 X2 -> auto___def_43 (cons X1 X2)
with auto___def_62 : term -> Prop :=
    trans___def_62_cons_1 : forall X1 X2:term, auto___def_63 X1 -> auto___def_9 X2 -> auto___def_62 (cons X1 X2)
with auto___def_97 : term -> Prop :=
    trans___def_97_crypt_1 : forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_97 (crypt X1 X2)
with auto___def_39 : term -> Prop :=
    trans___def_39_crypt_1 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_39 (crypt X1 X2)
with auto___def_28 : term -> Prop :=
    trans___def_28_cons_1 : forall X1 X2:term, auto___def_39 X1 -> auto___def_36 X2 -> auto___def_28 (cons X1 X2)
with auto___def_3 : term -> term -> Prop :=
    trans___def_3_1 : forall X1 X2:term, auto___def_52 X1 -> auto_knows_old X2 -> auto___def_3 X1 X2
with auto___def_5 : term -> term -> Prop :=
    trans___def_5_1 : forall X1 X2:term, auto___type_4 X1 -> auto___def_35 X2 -> auto___def_5 X1 X2
  | trans___def_5_2 : forall X1 X2:term, auto___def_29 X1 -> auto___def_37 X2 -> auto___def_5 X1 X2
  | trans___def_5_3 : forall X1 X2:term, auto___def_40 X1 -> auto___def_45 X2 -> auto___def_5 X1 X2
  | trans___def_5_4 : forall X1 X2:term, auto___def_16 X1 -> auto___def_21 X2 -> auto___def_5 X1 X2
with auto___def_40 : term -> Prop :=
    trans___def_40_cons_1 : forall X1 X2:term, auto___type_7 X1 -> auto___def_42 X2 -> auto___def_40 (cons X1 X2)
with auto___def_33 : term -> Prop :=
    trans___def_33_cons_1 : forall X1 X2:term, auto___type_6 X1 -> auto___def_36 X2 -> auto___def_33 (cons X1 X2)
with auto_alice_key_current : term -> term -> Prop :=
    trans_alice_key_current_1 : forall X1 X2:term, auto_agent X1 -> auto___type_16 X1 -> auto___def_81 X2 -> auto_alice_key_current 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_server_1 : auto___type_1 server
  | trans___type_1_i_1 : auto___type_1 i
with auto___def_96 : term -> Prop :=
    trans___def_96_cons_1 : forall X1 X2:term, auto___def_97 X1 -> auto___def_98 X2 -> auto___def_96 (cons X1 X2)
with auto___def_1 : term -> term -> Prop :=
    trans___def_1_1 : forall X1 X2:term, auto___type_9 X1 -> auto_knows_old X2 -> auto___def_1 X1 X2
with auto___def_76 : term -> Prop :=
    trans___def_76_crypt_1 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_76 (crypt X1 X2)
with auto___type_10 : term -> Prop :=
    trans___type_10_bob_1 : auto___type_10 bob
  | trans___type_10_alice_1 : auto___type_10 alice
  | trans___type_10_server_1 : auto___type_10 server
  | trans___type_10_i_1 : auto___type_10 i
with auto___def_99 : term -> term -> term -> term -> Prop :=
    trans___def_99_1 : forall X1 X2 X3 X4:term, auto_knows_current X1 -> auto_agent X2 -> auto___type_14 X2 -> auto___def_81 X3 -> auto_knows_current X4 -> auto___def_99 X1 X2 X3 X4
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_9 : term -> Prop :=
    trans___def_9_nil_1 : auto___def_9 nil
with auto___type_6 : term -> Prop :=
    trans___type_6_bob_1 : auto___type_6 bob
  | trans___type_6_alice_1 : auto___type_6 alice
  | trans___type_6_s_1 : forall X1:term, auto_knows_old X1 -> auto___type_6 (s X1)
  | trans___type_6_server_1 : auto___type_6 server
  | trans___type_6_nil_1 : auto___type_6 nil
  | trans___type_6_i_1 : auto___type_6 i
  | trans___type_6_key_1 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_6 (key X1 X2)
  | trans___type_6_key_2 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_6 (key X1 X2)
  | trans___type_6_nonceb_old_1 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_6 (nonceb_old X1 X2 X3)
  | trans___type_6_noncea_old_1 : forall X1:term, auto_agent X1 -> auto___type_6 (noncea_old X1)
  | trans___type_6_crypt_1 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_6 (crypt X1 X2)
  | trans___type_6_crypt_2 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_6 (crypt X1 X2)
  | trans___type_6_crypt_3 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_6 (crypt X1 X2)
  | trans___type_6_crypt_4 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_6 (crypt X1 X2)
  | trans___type_6_crypt_5 : forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_6 (crypt X1 X2)
  | trans___type_6_cons_1 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_6 (cons X1 X2)
with auto___def_77 : term -> Prop :=
    trans___def_77_cons_1 : forall X1 X2:term, auto___def_88 X1 -> auto___def_85 X2 -> auto___def_77 (cons X1 X2)
with auto___def_32 : term -> Prop :=
    trans___def_32_key_1 : forall X1 X2:term, auto___def_34 X1 -> auto___def_35 X2 -> auto___def_32 (key X1 X2)
with auto___def_68 : term -> Prop :=
    trans___def_68_crypt_1 : forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_68 (crypt X1 X2)
with auto___def_35 : term -> Prop :=
    trans___def_35_session_old_1 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto_agent X2 -> auto_knows_old X2 -> auto___type_3 X3 -> auto_knows_old X4 -> auto___def_35 (session_old X1 X2 X3 X4)
with auto___query__intruder_knows_session_key_as_seen_by_alice : Prop :=
with auto___query__intruder_knows_session_key_generated_by_server : Prop :=
with auto___query__intruder_knows_session_key_as_seen_by_B : Prop :=
with auto___def_6 : term -> Prop :=
.

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


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

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

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

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

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

Remark rem_6 : forall X1 X2:term, auto___def_14 X1 -> auto___def_15 X2 -> auto___def_13 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_13_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7 : forall X1 X2:term, auto___def_15 X2 -> auto___def_14 X1 -> auto___def_13 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_14 X1 -> auto___def_15 X2 -> auto___def_13 (cons X1 X2)). tauto. exact (rem_6 X1 X2).
Qed.

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

Remark rem_9 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> auto___type_13 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13.  case (rem_8 epsilon_mknows_current_p__type_13). clear  epsilon_mknows_current_p__type_13. intros. apply trans___type_13_bob_1;  tauto.
 clear  epsilon_mknows_current_p__type_13. tauto.
Defined.

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

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

Remark rem_11 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> auto_knows_current bob -> auto___type_13 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intro H. intros.
  elim (rem_10 H);  intros.
  apply (rem_9 epsilon_mknows_current_p__type_13);  tauto.
Defined.

Remark rem_12 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> auto___type_13 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13.  case (rem_8 epsilon_mknows_current_p__type_13). clear  epsilon_mknows_current_p__type_13. intros. apply trans___type_13_alice_1;  tauto.
 clear  epsilon_mknows_current_p__type_13. tauto.
Defined.

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

Remark rem_14 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> auto_knows_current alice -> auto___type_13 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intro H. intros.
  elim (rem_13 H);  intros.
  apply (rem_12 epsilon_mknows_current_p__type_13);  tauto.
Defined.

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

Remark rem_16 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_15 epsilon_mknows_current_p__type_13 X1);  assumption.
  tauto.
Defined.

Remark rem_17 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_13 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1. intros A1.
  case (rem_16 epsilon_mknows_current_p__type_13 X1 A1). clear  epsilon_mknows_current_p__type_13 A1. intros. apply trans___type_13_s_1;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1. tauto.
Defined.

Remark rem_18 : 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_19 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1:term, auto_knows_current (s X1) -> auto___type_13 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1. intro H. intros.
  elim (rem_18 X1 H);  intros.
  apply (rem_17 epsilon_mknows_current_p__type_13 X1);  tauto.
Defined.

Remark rem_20 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> auto___type_13 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13.  case (rem_8 epsilon_mknows_current_p__type_13). clear  epsilon_mknows_current_p__type_13. intros. apply trans___type_13_server_1;  tauto.
 clear  epsilon_mknows_current_p__type_13. tauto.
Defined.

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

Remark rem_22 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> auto_knows_current server -> auto___type_13 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intro H. intros.
  elim (rem_21 H);  intros.
  apply (rem_20 epsilon_mknows_current_p__type_13);  tauto.
Defined.

Remark rem_23 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> auto___type_13 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13.  case (rem_8 epsilon_mknows_current_p__type_13). clear  epsilon_mknows_current_p__type_13. intros. apply trans___type_13_nil_1;  tauto.
 clear  epsilon_mknows_current_p__type_13. tauto.
Defined.

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

Remark rem_25 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> auto_knows_current nil -> auto___type_13 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intro H. intros.
  elim (rem_24 H);  intros.
  apply (rem_23 epsilon_mknows_current_p__type_13);  tauto.
Defined.

Remark rem_26 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> auto___type_13 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13.  case (rem_8 epsilon_mknows_current_p__type_13). clear  epsilon_mknows_current_p__type_13. intros. apply trans___type_13_i_1;  tauto.
 clear  epsilon_mknows_current_p__type_13. tauto.
Defined.

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

Remark rem_28 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> auto_knows_current i -> auto___type_13 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intro H. intros.
  elim (rem_27 H);  intros.
  apply (rem_26 epsilon_mknows_current_p__type_13);  tauto.
Defined.

Remark rem_29 : (forall X:term, auto_knows_current 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_30 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_29 epsilon_mknows_current_p__type_13 X1).
Defined.

Remark rem_31 : (forall X:term, auto_knows_current 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_32 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_31 epsilon_mknows_current_p__type_13 X2).
Defined.

Remark rem_33 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_30 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_32 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_34 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_13 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_33 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_key_1;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2. tauto.
Defined.

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

Remark rem_36 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_35 epsilon_mknows_current_p__type_13 X1).
Defined.

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

Remark rem_38 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_37 epsilon_mknows_current_p__type_13 X2).
Defined.

Remark rem_39 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_36 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_38 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_40 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_13 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_39 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_key_2;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2. tauto.
Defined.

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

Remark rem_42 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_41 epsilon_mknows_current_p__type_13 X1).
Defined.

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

Remark rem_44 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_43 epsilon_mknows_current_p__type_13 X2).
Defined.

Remark rem_45 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_42 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_44 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_46 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_13 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_45 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_key_3;  tauto.
 clear  epsilon_mknows_current_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_47 : forall X1 X2:term, auto_knows_current (key X1 X2) -> or_3
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
    (auto___def_54 X1 /\ auto___def_55 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_3_intro_1; tauto.
  intros. apply or_3_intro_2; tauto.
  intros. apply or_3_intro_3; tauto.
Qed.

Remark rem_48 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___type_13 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intro H. intros.
  elim (rem_47 X1 X2 H);  intros.
  apply (rem_34 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
  apply (rem_40 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
  apply (rem_46 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
Defined.

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

Remark rem_50 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_49 epsilon_mknows_current_p__type_13 X1);  assumption.
  tauto.
Defined.

Remark rem_51 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1:term, auto_agent X1 -> auto___type_13 (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1. intros A1.
  case (rem_50 epsilon_mknows_current_p__type_13 X1 A1). clear  epsilon_mknows_current_p__type_13 A1. intros. apply trans___type_13_noncea_current_1;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1. tauto.
Defined.

Remark rem_52 : forall X1:term, auto_knows_current (noncea_current X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_53 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1:term, auto_knows_current (noncea_current X1) -> auto___type_13 (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1. intro H. intros.
  elim (rem_52 X1 H);  intros.
  apply (rem_51 epsilon_mknows_current_p__type_13 X1);  tauto.
Defined.

Remark rem_54 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2 X3:term, auto___type_13 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2 X3.  case (rem_8 epsilon_mknows_current_p__type_13). clear  epsilon_mknows_current_p__type_13. intros. apply trans___type_13_nonceb_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_13. tauto.
Defined.

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

Remark rem_56 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3) -> auto___type_13 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2 X3. intro H. intros.
  elim (rem_55 X1 X2 X3 H);  intros.
  apply (rem_54 epsilon_mknows_current_p__type_13 X1 X2 X3);  tauto.
Defined.

Remark rem_57 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1:term, auto___type_13 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1.  case (rem_8 epsilon_mknows_current_p__type_13). clear  epsilon_mknows_current_p__type_13. intros. apply trans___type_13_noncea_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_13. tauto.
Defined.

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

Remark rem_59 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1:term, auto_knows_current (noncea_old X1) -> auto___type_13 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1. intro H. intros.
  elim (rem_58 X1 H);  intros.
  apply (rem_57 epsilon_mknows_current_p__type_13 X1);  tauto.
Defined.

Remark rem_60 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_15 epsilon_mknows_current_p__type_13 X1).
Defined.

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

Remark rem_62 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_61 epsilon_mknows_current_p__type_13 X2).
Defined.

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

Remark rem_64 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_63 epsilon_mknows_current_p__type_13 X3).
Defined.

Remark rem_65 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_60 epsilon_mknows_current_p__type_13 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_62 epsilon_mknows_current_p__type_13 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_64 epsilon_mknows_current_p__type_13 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_66 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_13 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_65 epsilon_mknows_current_p__type_13 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_current_p__type_13 A1 A2 A3. intros. apply trans___type_13_nonceb_current_1;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2 A3. tauto.
Defined.

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

Remark rem_68 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto___type_13 (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2 X3. intro H. intros.
  elim (rem_67 X1 X2 X3 H);  intros.
  apply (rem_66 epsilon_mknows_current_p__type_13 X1 X2 X3);  tauto.
Defined.

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

Remark rem_70 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_69 epsilon_mknows_current_p__type_13 X1).
Defined.

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

Remark rem_72 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_71 epsilon_mknows_current_p__type_13 X2).
Defined.

Remark rem_73 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_70 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_72 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_74 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_73 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_crypt_1;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2. tauto.
Defined.

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

Remark rem_76 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_75 epsilon_mknows_current_p__type_13 X1).
Defined.

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

Remark rem_78 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_77 epsilon_mknows_current_p__type_13 X2).
Defined.

Remark rem_79 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_76 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_78 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_80 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_79 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_crypt_2;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2. tauto.
Defined.

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

Remark rem_82 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_81 epsilon_mknows_current_p__type_13 X1).
Defined.

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

Remark rem_84 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_83 epsilon_mknows_current_p__type_13 X2).
Defined.

Remark rem_85 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_82 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_84 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_86 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_85 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_crypt_3;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2. tauto.
Defined.

Remark rem_87 : (forall X:term, auto_knows_current X -> auto___type_13 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_13. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_15 epsilon_mknows_current_p__type_13 X1).
Defined.

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

Remark rem_89 : (forall X:term, auto_knows_current X -> auto___type_13 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_13. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_88 epsilon_mknows_current_p__type_13 X2).
Defined.

Remark rem_90 : (forall X:term, auto_knows_current X -> auto___type_13 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_13. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_87 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_89 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_91 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_90 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_crypt_4;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2. tauto.
Defined.

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

Remark rem_93 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_92 epsilon_mknows_current_p__type_13 X1).
Defined.

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

Remark rem_95 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_94 epsilon_mknows_current_p__type_13 X2).
Defined.

Remark rem_96 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_93 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_95 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_97 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_96 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_crypt_5;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2. tauto.
Defined.

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

Remark rem_99 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_98 epsilon_mknows_current_p__type_13 X1).
Defined.

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

Remark rem_101 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_100 epsilon_mknows_current_p__type_13 X2).
Defined.

Remark rem_102 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_99 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_101 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_103 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_102 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_crypt_6;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2. tauto.
Defined.

Remark rem_104 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_15 epsilon_mknows_current_p__type_13 X1).
Defined.

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

Remark rem_106 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_105 epsilon_mknows_current_p__type_13 X2).
Defined.

Remark rem_107 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_104 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_106 epsilon_mknows_current_p__type_13 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_108 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_13 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_107 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_crypt_7;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2. tauto.
Defined.

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

Remark rem_109 : forall X1 X2:term, auto_knows_current (crypt X1 X2) -> or_7
    (auto___def_78 X1 /\ auto___def_79 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___def_70 X1 /\ auto___def_71 X2)
    (auto___def_89 X1 /\ auto___def_90 X2)
    (auto_knows_current X1 /\ auto___def_81 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_7_intro_1; tauto.
  intros. apply or_7_intro_2; tauto.
  intros. apply or_7_intro_3; tauto.
  intros. apply or_7_intro_4; tauto.
  intros. apply or_7_intro_5; tauto.
  intros. apply or_7_intro_6; tauto.
  intros. apply or_7_intro_7; tauto.
Qed.

Remark rem_110 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___type_13 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intro H. intros.
  elim (rem_109 X1 X2 H);  intros.
  apply (rem_74 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
  apply (rem_80 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
  apply (rem_86 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
  apply (rem_91 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
  apply (rem_97 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
  apply (rem_103 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
  apply (rem_108 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
Defined.

Remark rem_111 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_13 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intros A1 A2.
  case (rem_90 epsilon_mknows_current_p__type_13 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_13 A1 A2. intros. apply trans___type_13_cons_1;  tauto.
 clear  epsilon_mknows_current_p__type_13 A1 A2. tauto.
Defined.

Remark rem_112 : 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_113 : (forall X:term, auto_knows_current X -> auto___type_13 X)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___type_13 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_13. intros X1 X2. intro H. intros.
  elim (rem_112 X1 X2 H);  intros.
  apply (rem_111 epsilon_mknows_current_p__type_13 X1 X2);  tauto.
Defined.

Inductive or_0 : Prop :=
.

Remark rem_114 : auto_knows_current sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_115 : auto_knows_current prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_116 : auto_knows_current pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_117 : forall X1 X2 X3 X4:term, auto_knows_current (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_118 : forall X1 X2 X3 X4:term, auto_knows_current (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_119 : forall X1:term, auto_knows_current X1 -> auto___type_13 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_current_p__type_13 1.
  intro X. case X.
  exact (rem_14 epsilon_mknows_current_p__type_13 ).
  exact (rem_11 epsilon_mknows_current_p__type_13 ).
  intros X1 X2;  exact (rem_113 epsilon_mknows_current_p__type_13 X1 X2).
  intros X1 X2;  exact (rem_110 epsilon_mknows_current_p__type_13 X1 X2).
  exact (rem_28 epsilon_mknows_current_p__type_13 ).
  intros X1 X2;  exact (rem_48 epsilon_mknows_current_p__type_13 X1 X2).
  exact (rem_25 epsilon_mknows_current_p__type_13 ).
  intros X1;  exact (rem_53 epsilon_mknows_current_p__type_13 X1).
  intros X1;  exact (rem_59 epsilon_mknows_current_p__type_13 X1).
  intros X1 X2 X3;  exact (rem_68 epsilon_mknows_current_p__type_13 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_56 epsilon_mknows_current_p__type_13 X1 X2 X3).
   intro H. elim (rem_115  H).
   intro H. elim (rem_116  H).
  intros X1;  exact (rem_19 epsilon_mknows_current_p__type_13 X1).
  exact (rem_22 epsilon_mknows_current_p__type_13 ).
  intros X1 X2 X3 X4. intro H. elim (rem_117 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_118 X1 X2 X3 X4 H).
   intro H. elim (rem_114  H).
Qed.

Remark rem_120 : forall X1 X2 X3 X4:term, auto___type_11 X2 -> auto___type_12 X3 -> auto_agent X4 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___type_13 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X1 -> auto___type_13 X1). tauto. exact (rem_119 X1).
Qed.

Remark rem_121 : forall X1 X2 X3 X4:term, auto___type_11 X2 -> auto_agent X3 -> auto_knows_current X3 -> auto_knows_current X1 -> auto___type_12 X4 -> auto___type_13 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto___type_11 X2 -> auto___type_12 X3 -> auto_agent X4 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___type_13 X1). tauto. exact (rem_120 X1 X2 X3 X4).
Qed.

Remark rem_122 : forall X1 X2 X3 X4:term, auto___def_74 X1 X2 X3 X4 -> or_1
    (auto___type_11 X1 /\ auto_agent X2 /\ auto_knows_current X2 /\ auto_knows_current X3 /\ auto___type_12 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_123 : forall X1 X2 X3 X4:term, auto___def_74 X2 X3 X1 X4 -> auto___type_13 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_122 X2 X3 X1 X4 H);  intros.
  apply (rem_121 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_124 : True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   tauto.
Qed.

Remark rem_125 : auto___def_51 prv. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_51_prv_1;  tauto.
 tauto.
Qed.

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

Remark rem_127 : forall X1 X2:term, auto___def_27 X1 -> auto___def_28 X2 -> auto___def_27 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_27 X1 -> auto___def_27 X1). tauto. exact (rem_126 X1).
Qed.

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

Remark rem_129 : forall X1 X2:term, auto___def_27 X1 -> auto___def_28 X2 -> auto___def_28 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_28 X2 -> auto___def_28 X2). tauto. exact (rem_128 X2).
Qed.

Remark rem_130 : forall X1 X2:term, auto___def_27 X1 -> auto___def_28 X2 -> (auto___def_27 X1 /\ auto___def_28 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_27 X1). 2:apply (rem_127 X1 X2);  assumption.
  cut (auto___def_28 X2). 2:apply (rem_129 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_131 : forall X1 X2:term, auto___def_27 X1 -> auto___def_28 X2 -> auto___def_26 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_130 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_26_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_132 : forall X1 X2:term, auto___def_28 X2 -> auto___def_27 X1 -> auto___def_26 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_27 X1 -> auto___def_28 X2 -> auto___def_26 (cons X1 X2)). tauto. exact (rem_131 X1 X2).
Qed.

Remark rem_133 : auto___def_36 nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_36_nil_1;  tauto.
 tauto.
Qed.

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

Remark rem_135 : forall X1 X2:term, auto___def_43 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_134 X1).
Qed.

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

Remark rem_137 : forall X1 X2:term, auto___def_43 X2 -> auto___type_5 X1 -> auto___def_43 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_43 X2 -> auto___def_43 X2). tauto. exact (rem_136 X2).
Qed.

Remark rem_138 : forall X1 X2:term, auto___def_43 X2 -> auto___type_5 X1 -> (auto___type_5 X1 /\ auto___def_43 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_5 X1). 2:apply (rem_135 X1 X2);  assumption.
  cut (auto___def_43 X2). 2:apply (rem_137 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_139 : forall X1 X2:term, auto___def_43 X2 -> auto___type_5 X1 -> auto___def_42 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_138 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_42_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_141 : forall X1 X2:term, auto___def_81 X1 -> auto___def_93 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_140 X1).
Qed.

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

Remark rem_143 : forall X1 X2:term, auto___def_81 X1 -> auto___def_93 X2 -> auto___def_93 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_93 X2 -> auto___def_93 X2). tauto. exact (rem_142 X2).
Qed.

Remark rem_144 : forall X1 X2:term, auto___def_81 X1 -> auto___def_93 X2 -> (auto___def_81 X1 /\ auto___def_93 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_81 X1). 2:apply (rem_141 X1 X2);  assumption.
  cut (auto___def_93 X2). 2:apply (rem_143 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_145 : forall X1 X2:term, auto___def_81 X1 -> auto___def_93 X2 -> auto___def_92 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_144 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_92_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_146 : forall X1 X2:term, auto___def_93 X2 -> auto___def_81 X1 -> auto___def_92 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_93 X2 -> auto___def_92 (cons X1 X2)). tauto. exact (rem_145 X1 X2).
Qed.

Remark rem_147 : auto___def_23 server. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_23_server_1;  tauto.
 tauto.
Qed.

Remark rem_148 : auto___def_85 nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_85_nil_1;  tauto.
 tauto.
Qed.

Remark rem_149 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_p__type_6.  tauto.
Defined.

Remark rem_150 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> auto___type_6 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6.  case (rem_149 epsilon_m__type_3_p__type_6). clear  epsilon_m__type_3_p__type_6. intros. apply trans___type_6_bob_1;  tauto.
 clear  epsilon_m__type_3_p__type_6. tauto.
Defined.

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

Remark rem_152 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> auto___type_3 bob -> auto___type_6 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intro H. intros.
  elim (rem_151 H);  intros.
  apply (rem_150 epsilon_m__type_3_p__type_6);  tauto.
Defined.

Remark rem_153 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> auto___type_6 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6.  case (rem_149 epsilon_m__type_3_p__type_6). clear  epsilon_m__type_3_p__type_6. intros. apply trans___type_6_alice_1;  tauto.
 clear  epsilon_m__type_3_p__type_6. tauto.
Defined.

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

Remark rem_155 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> auto___type_3 alice -> auto___type_6 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intro H. intros.
  elim (rem_154 H);  intros.
  apply (rem_153 epsilon_m__type_3_p__type_6);  tauto.
Defined.

Remark rem_156 : (forall X:term, auto___type_3 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_157 : (forall X:term, auto___type_3 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_3_p__type_6. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_156 epsilon_m__type_3_p__type_6 X1);  assumption.
  tauto.
Defined.

Remark rem_158 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_6 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1. intros A1.
  case (rem_157 epsilon_m__type_3_p__type_6 X1 A1). clear  epsilon_m__type_3_p__type_6 A1. intros. apply trans___type_6_s_1;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1. tauto.
Defined.

Remark rem_159 : 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_160 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto___type_3 (s X1) -> auto___type_6 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1. intro H. intros.
  elim (rem_159 X1 H);  intros.
  apply (rem_158 epsilon_m__type_3_p__type_6 X1);  tauto.
Defined.

Remark rem_161 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> auto___type_6 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6.  case (rem_149 epsilon_m__type_3_p__type_6). clear  epsilon_m__type_3_p__type_6. intros. apply trans___type_6_server_1;  tauto.
 clear  epsilon_m__type_3_p__type_6. tauto.
Defined.

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

Remark rem_163 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> auto___type_3 server -> auto___type_6 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intro H. intros.
  elim (rem_162 H);  intros.
  apply (rem_161 epsilon_m__type_3_p__type_6);  tauto.
Defined.

Remark rem_164 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> auto___type_6 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6.  case (rem_149 epsilon_m__type_3_p__type_6). clear  epsilon_m__type_3_p__type_6. intros. apply trans___type_6_nil_1;  tauto.
 clear  epsilon_m__type_3_p__type_6. tauto.
Defined.

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

Remark rem_166 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> auto___type_3 nil -> auto___type_6 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intro H. intros.
  elim (rem_165 H);  intros.
  apply (rem_164 epsilon_m__type_3_p__type_6);  tauto.
Defined.

Remark rem_167 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> auto___type_6 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6.  case (rem_149 epsilon_m__type_3_p__type_6). clear  epsilon_m__type_3_p__type_6. intros. apply trans___type_6_i_1;  tauto.
 clear  epsilon_m__type_3_p__type_6. tauto.
Defined.

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

Remark rem_169 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> auto___type_3 i -> auto___type_6 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intro H. intros.
  elim (rem_168 H);  intros.
  apply (rem_167 epsilon_m__type_3_p__type_6);  tauto.
Defined.

Remark rem_170 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_171 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_170 epsilon_m__type_3_p__type_6 X1).
Defined.

Remark rem_172 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_173 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_172 epsilon_m__type_3_p__type_6 X2).
Defined.

Remark rem_174 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_171 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_173 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_175 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_6 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_174 epsilon_m__type_3_p__type_6 X1 X2 A1 A2). clear  epsilon_m__type_3_p__type_6 A1 A2. intros. apply trans___type_6_key_1;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1 A2. tauto.
Defined.

Remark rem_176 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_177 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_176 epsilon_m__type_3_p__type_6 X1).
Defined.

Remark rem_178 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_179 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_178 epsilon_m__type_3_p__type_6 X2).
Defined.

Remark rem_180 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_177 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_179 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_181 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_6 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_180 epsilon_m__type_3_p__type_6 X1 X2 A1 A2). clear  epsilon_m__type_3_p__type_6 A1 A2. intros. apply trans___type_6_key_2;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1 A2. 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_182 : forall X1 X2:term, auto___type_3 (key X1 X2) -> or_2
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_183 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_3 (key X1 X2) -> auto___type_6 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intro H. intros.
  elim (rem_182 X1 X2 H);  intros.
  apply (rem_175 epsilon_m__type_3_p__type_6 X1 X2);  tauto.
  apply (rem_181 epsilon_m__type_3_p__type_6 X1 X2);  tauto.
Defined.

Remark rem_184 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_156 epsilon_m__type_3_p__type_6 X1).
Defined.

Remark rem_185 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_186 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_185 epsilon_m__type_3_p__type_6 X2).
Defined.

Remark rem_187 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X3:term, auto_knows_old X3 -> auto_knows_old X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_188 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_187 epsilon_m__type_3_p__type_6 X3).
Defined.

Remark rem_189 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_184 epsilon_m__type_3_p__type_6 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_186 epsilon_m__type_3_p__type_6 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_188 epsilon_m__type_3_p__type_6 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_190 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_6 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_189 epsilon_m__type_3_p__type_6 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_3_p__type_6 A1 A2 A3. intros. apply trans___type_6_nonceb_old_1;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1 A2 A3. tauto.
Defined.

Remark rem_191 : forall X1 X2 X3:term, auto___type_3 (nonceb_old X1 X2 X3) -> or_1
    (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_192 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2 X3:term, auto___type_3 (nonceb_old X1 X2 X3) -> auto___type_6 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2 X3. intro H. intros.
  elim (rem_191 X1 X2 X3 H);  intros.
  apply (rem_190 epsilon_m__type_3_p__type_6 X1 X2 X3);  tauto.
Defined.

Remark rem_193 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_194 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_193 epsilon_m__type_3_p__type_6 X1);  assumption.
  tauto.
Defined.

Remark rem_195 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto_agent X1 -> auto___type_6 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1. intros A1.
  case (rem_194 epsilon_m__type_3_p__type_6 X1 A1). clear  epsilon_m__type_3_p__type_6 A1. intros. apply trans___type_6_noncea_old_1;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1. tauto.
Defined.

Remark rem_196 : forall X1:term, auto___type_3 (noncea_old X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_197 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto___type_3 (noncea_old X1) -> auto___type_6 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1. intro H. intros.
  elim (rem_196 X1 H);  intros.
  apply (rem_195 epsilon_m__type_3_p__type_6 X1);  tauto.
Defined.

Remark rem_198 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_16 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_199 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_198 epsilon_m__type_3_p__type_6 X1).
Defined.

Remark rem_200 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_201 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_200 epsilon_m__type_3_p__type_6 X2).
Defined.

Remark rem_202 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_199 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_201 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_203 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_6 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_202 epsilon_m__type_3_p__type_6 X1 X2 A1 A2). clear  epsilon_m__type_3_p__type_6 A1 A2. intros. apply trans___type_6_crypt_1;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1 A2. tauto.
Defined.

Remark rem_204 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_205 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_204 epsilon_m__type_3_p__type_6 X1).
Defined.

Remark rem_206 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_207 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_206 epsilon_m__type_3_p__type_6 X2).
Defined.

Remark rem_208 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_205 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_207 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_209 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_6 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_208 epsilon_m__type_3_p__type_6 X1 X2 A1 A2). clear  epsilon_m__type_3_p__type_6 A1 A2. intros. apply trans___type_6_crypt_2;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1 A2. tauto.
Defined.

Remark rem_210 : (forall X:term, auto___type_3 X -> auto___type_6 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_3_p__type_6. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_156 epsilon_m__type_3_p__type_6 X1).
Defined.

Remark rem_211 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_212 : (forall X:term, auto___type_3 X -> auto___type_6 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_3_p__type_6. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_211 epsilon_m__type_3_p__type_6 X2).
Defined.

Remark rem_213 : (forall X:term, auto___type_3 X -> auto___type_6 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_3_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_210 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_212 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_214 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_6 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_213 epsilon_m__type_3_p__type_6 X1 X2 A1 A2). clear  epsilon_m__type_3_p__type_6 A1 A2. intros. apply trans___type_6_crypt_3;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1 A2. tauto.
Defined.

Remark rem_215 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_216 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_215 epsilon_m__type_3_p__type_6 X1).
Defined.

Remark rem_217 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_218 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_217 epsilon_m__type_3_p__type_6 X2).
Defined.

Remark rem_219 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_216 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_218 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_220 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_6 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_219 epsilon_m__type_3_p__type_6 X1 X2 A1 A2). clear  epsilon_m__type_3_p__type_6 A1 A2. intros. apply trans___type_6_crypt_4;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1 A2. tauto.
Defined.

Remark rem_221 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1:term, auto___type_4 X1 -> auto___type_4 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_222 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_221 epsilon_m__type_3_p__type_6 X1).
Defined.

Remark rem_223 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_224 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_223 epsilon_m__type_3_p__type_6 X2).
Defined.

Remark rem_225 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_222 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_224 epsilon_m__type_3_p__type_6 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_226 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_6 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_225 epsilon_m__type_3_p__type_6 X1 X2 A1 A2). clear  epsilon_m__type_3_p__type_6 A1 A2. intros. apply trans___type_6_crypt_5;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1 A2. tauto.
Defined.

Inductive or_5(H1 H2 H3 H4 H5:Prop) : Prop :=
    or_5_intro_1 : H1 -> (or_5 H1 H2 H3 H4 H5)
  | or_5_intro_2 : H2 -> (or_5 H1 H2 H3 H4 H5)
  | or_5_intro_3 : H3 -> (or_5 H1 H2 H3 H4 H5)
  | or_5_intro_4 : H4 -> (or_5 H1 H2 H3 H4 H5)
  | or_5_intro_5 : H5 -> (or_5 H1 H2 H3 H4 H5)
.

Remark rem_227 : forall X1 X2:term, auto___type_3 (crypt X1 X2) -> or_5
    (auto___def_16 X1 /\ auto___def_17 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto___type_4 X1 /\ auto___def_32 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_5_intro_1; tauto.
  intros. apply or_5_intro_2; tauto.
  intros. apply or_5_intro_3; tauto.
  intros. apply or_5_intro_4; tauto.
  intros. apply or_5_intro_5; tauto.
Qed.

Remark rem_228 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_3 (crypt X1 X2) -> auto___type_6 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intro H. intros.
  elim (rem_227 X1 X2 H);  intros.
  apply (rem_203 epsilon_m__type_3_p__type_6 X1 X2);  tauto.
  apply (rem_209 epsilon_m__type_3_p__type_6 X1 X2);  tauto.
  apply (rem_214 epsilon_m__type_3_p__type_6 X1 X2);  tauto.
  apply (rem_220 epsilon_m__type_3_p__type_6 X1 X2);  tauto.
  apply (rem_226 epsilon_m__type_3_p__type_6 X1 X2);  tauto.
Defined.

Remark rem_229 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_6 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intros A1 A2.
  case (rem_213 epsilon_m__type_3_p__type_6 X1 X2 A1 A2). clear  epsilon_m__type_3_p__type_6 A1 A2. intros. apply trans___type_6_cons_1;  tauto.
 clear  epsilon_m__type_3_p__type_6 A1 A2. tauto.
Defined.

Remark rem_230 : 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_231 : (forall X:term, auto___type_3 X -> auto___type_6 X)
    -> forall X1 X2:term, auto___type_3 (cons X1 X2) -> auto___type_6 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_p__type_6. intros X1 X2. intro H. intros.
  elim (rem_230 X1 X2 H);  intros.
  apply (rem_229 epsilon_m__type_3_p__type_6 X1 X2);  tauto.
Defined.

Remark rem_232 : auto___type_3 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_233 : auto___type_3 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_234 : forall X1:term, auto___type_3 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_235 : auto___type_3 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_236 : forall X1 X2 X3:term, auto___type_3 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_237 : forall X1 X2 X3 X4:term, auto___type_3 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_238 : forall X1 X2 X3 X4:term, auto___type_3 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_239 : forall X1:term, auto___type_3 X1 -> auto___type_6 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_3_p__type_6 1.
  intro X. case X.
  exact (rem_155 epsilon_m__type_3_p__type_6 ).
  exact (rem_152 epsilon_m__type_3_p__type_6 ).
  intros X1 X2;  exact (rem_231 epsilon_m__type_3_p__type_6 X1 X2).
  intros X1 X2;  exact (rem_228 epsilon_m__type_3_p__type_6 X1 X2).
  exact (rem_169 epsilon_m__type_3_p__type_6 ).
  intros X1 X2;  exact (rem_183 epsilon_m__type_3_p__type_6 X1 X2).
  exact (rem_166 epsilon_m__type_3_p__type_6 ).
  intros X1. intro H. elim (rem_234 X1 H).
  intros X1;  exact (rem_197 epsilon_m__type_3_p__type_6 X1).
  intros X1 X2 X3. intro H. elim (rem_236 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_192 epsilon_m__type_3_p__type_6 X1 X2 X3).
   intro H. elim (rem_233  H).
   intro H. elim (rem_235  H).
  intros X1;  exact (rem_160 epsilon_m__type_3_p__type_6 X1).
  exact (rem_163 epsilon_m__type_3_p__type_6 ).
  intros X1 X2 X3 X4. intro H. elim (rem_237 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_238 X1 X2 X3 X4 H).
   intro H. elim (rem_232  H).
Qed.

Remark rem_240 : forall X1 X2 X3 X4:term, auto___type_2 X2 -> auto___type_3 X1 -> auto_agent X3 -> auto_knows_old X3 -> auto_knows_old X4 -> auto___type_6 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_3 X1 -> auto___type_6 X1). tauto. exact (rem_239 X1).
Qed.

Remark rem_241 : forall X1 X2 X3 X4:term, auto___type_2 X2 -> auto_agent X3 -> auto_knows_old X3 -> auto_knows_old X4 -> auto___type_3 X1 -> auto___type_6 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___type_2 X2 -> auto___type_3 X1 -> auto_agent X3 -> auto_knows_old X3 -> auto_knows_old X4 -> auto___type_6 X1). tauto. exact (rem_240 X1 X2 X3 X4).
Qed.

Remark rem_242 : forall X1 X2 X3 X4:term, auto___def_25 X1 X2 X3 X4 -> or_1
    (auto___type_2 X1 /\ auto_agent X2 /\ auto_knows_old X2 /\ auto_knows_old X3 /\ auto___type_3 X4)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_243 : forall X1 X2 X3 X4:term, auto___def_25 X2 X3 X4 X1 -> auto___type_6 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_242 X2 X3 X4 X1 H);  intros.
  apply (rem_241 X1 X2 X3 X4);  tauto.
Qed.

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

Remark rem_245 : forall X1 X2:term, auto___def_32 X1 -> auto___def_33 X2 -> auto___def_32 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_32 X1 -> auto___def_32 X1). tauto. exact (rem_244 X1).
Qed.

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

Remark rem_247 : forall X1 X2:term, auto___def_32 X1 -> auto___def_33 X2 -> auto___def_33 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_33 X2 -> auto___def_33 X2). tauto. exact (rem_246 X2).
Qed.

Remark rem_248 : forall X1 X2:term, auto___def_32 X1 -> auto___def_33 X2 -> (auto___def_32 X1 /\ auto___def_33 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_32 X1). 2:apply (rem_245 X1 X2);  assumption.
  cut (auto___def_33 X2). 2:apply (rem_247 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_249 : forall X1 X2:term, auto___def_32 X1 -> auto___def_33 X2 -> auto___def_31 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_248 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_31_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_250 : forall X1 X2:term, auto___def_33 X2 -> auto___def_32 X1 -> auto___def_31 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_32 X1 -> auto___def_33 X2 -> auto___def_31 (cons X1 X2)). tauto. exact (rem_249 X1 X2).
Qed.

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

Remark rem_252 : forall X1 X2:term, auto___def_87 X2 -> auto___type_16 X1 -> auto___type_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_16 X1 -> auto___type_16 X1). tauto. exact (rem_251 X1).
Qed.

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

Remark rem_254 : forall X1 X2:term, auto___def_87 X2 -> auto___type_16 X1 -> auto___def_87 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_87 X2 -> auto___def_87 X2). tauto. exact (rem_253 X2).
Qed.

Remark rem_255 : forall X1 X2:term, auto___def_87 X2 -> auto___type_16 X1 -> (auto___type_16 X1 /\ auto___def_87 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_16 X1). 2:apply (rem_252 X1 X2);  assumption.
  cut (auto___def_87 X2). 2:apply (rem_254 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_256 : forall X1 X2:term, auto___def_87 X2 -> auto___type_16 X1 -> auto___def_86 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_255 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_86_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_258 : forall X1 X2 X3:term, auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_257 X1).
Qed.

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

Remark rem_260 : forall X1 X2 X3:term, auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_259 X2).
Qed.

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

Remark rem_262 : forall X1 X2 X3:term, auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1 -> 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_261 X3).
Qed.

Remark rem_263 : forall X1 X2 X3:term, auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_258 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_260 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_262 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_264 : forall X1 X2 X3:term, auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1 -> auto___def_12 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_263 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_12_nonceb_old_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_265 : forall X1 X2 X3:term, auto_knows_old X1 -> auto_knows_old X3 -> auto_agent X2 -> auto___def_12 (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1 -> auto___def_12 (nonceb_old X1 X2 X3)). tauto. exact (rem_264 X1 X2 X3).
Qed.

Remark rem_266 : forall X1 X2:term, auto___def_10 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_267 : forall X1 X2 X3:term, auto___def_10 X1 X3 -> auto_agent X2 -> auto___def_12 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_266 X1 X3 H);  intros.
  apply (rem_265 X1 X2 X3);  tauto.
Qed.

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

Remark rem_269 : forall X1 X2:term, auto___def_16 X1 -> auto___def_20 sym -> auto___def_21 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_268 X1).
Qed.

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

Remark rem_271 : forall X1 X2:term, auto___def_16 X1 -> auto___def_20 sym -> auto___def_21 X2 -> auto___def_21 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_21 X2 -> auto___def_21 X2). tauto. exact (rem_270 X2).
Qed.

Remark rem_272 : forall X1 X2:term, auto___def_16 X1 -> auto___def_20 sym -> auto___def_21 X2 -> (auto___def_16 X1 /\ auto___def_21 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_16 X1). 2:apply (rem_269 X1 X2);  assumption.
  cut (auto___def_21 X2). 2:apply (rem_271 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_273 : forall X1 X2:term, auto___def_16 X1 -> auto___def_20 sym -> auto___def_21 X2 -> auto___def_5 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_272 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_5_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_274 : forall X1 X2:term, auto___def_20 sym -> auto___def_21 X2 -> auto___def_16 X1 -> auto___def_5 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_20 sym -> auto___def_21 X2 -> auto___def_5 X1 X2). tauto. exact (rem_273 X1 X2).
Qed.

Remark rem_275 : forall X1 X2:term, auto___def_17 (key X1 X2) -> or_1
    (auto___def_20 X1 /\ auto___def_21 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_276 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 (key sym X2) -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_275 sym X2 H);  intros.
  apply (rem_274 X1 X2);  tauto.
Qed.

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

Remark rem_278 : forall X1 X2:term, auto___def_34 sym -> auto___def_40 X1 -> auto___def_45 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_277 X1).
Qed.

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

Remark rem_280 : forall X1 X2:term, auto___def_34 sym -> auto___def_40 X1 -> auto___def_45 X2 -> auto___def_45 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_45 X2 -> auto___def_45 X2). tauto. exact (rem_279 X2).
Qed.

Remark rem_281 : forall X1 X2:term, auto___def_34 sym -> auto___def_40 X1 -> auto___def_45 X2 -> (auto___def_40 X1 /\ auto___def_45 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_40 X1). 2:apply (rem_278 X1 X2);  assumption.
  cut (auto___def_45 X2). 2:apply (rem_280 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_282 : forall X1 X2:term, auto___def_34 sym -> auto___def_40 X1 -> auto___def_45 X2 -> auto___def_5 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_281 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_5_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_283 : forall X1 X2:term, auto___def_34 sym -> auto___def_45 X2 -> auto___def_40 X1 -> auto___def_5 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_34 sym -> auto___def_40 X1 -> auto___def_45 X2 -> auto___def_5 X1 X2). tauto. exact (rem_282 X1 X2).
Qed.

Remark rem_284 : forall X1 X2:term, auto___def_41 (key X1 X2) -> or_1
    (auto___def_34 X1 /\ auto___def_45 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_285 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 (key sym X2) -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_284 sym X2 H);  intros.
  apply (rem_283 X1 X2);  tauto.
Qed.

Remark rem_286 : auto___def_51 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_287 : auto___def_51 sym -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_286 H);  intros.
Qed.

Remark rem_288 : forall X1 X2:term, auto___def_51 sym -> auto___def_52 X2 -> auto_knows_old X1 -> auto___def_5 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_287).
Qed.

Remark rem_289 : auto___def_50 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_290 : auto___def_50 sym -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_289 H);  intros.
Qed.

Remark rem_291 : forall X1 X2:term, auto___def_50 sym -> auto_knows_old X1 -> auto___def_5 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_50 sym -> False). tauto.
  exact (rem_290).
Qed.

Remark rem_292 : forall X1 X2:term, auto___def_50 sym -> auto___type_9 X2 -> auto_knows_old X1 -> auto___def_5 X1 X2. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2. intros. apply (rem_291 X1 X2);  assumption.
Qed.

Remark rem_293 : forall X1 X2:term, auto_knows_old (key X1 X2) -> or_2
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_294 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old (key sym X2) -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_293 sym X2 H);  intros.
  apply (rem_288 X1 X2);  tauto.
  apply (rem_292 X1 X2);  tauto.
Qed.

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

Remark rem_296 : forall X1 X2:term, auto___def_29 X1 -> auto___def_34 sym -> auto___def_37 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_295 X1).
Qed.

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

Remark rem_298 : forall X1 X2:term, auto___def_29 X1 -> auto___def_34 sym -> 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_297 X2).
Qed.

Remark rem_299 : forall X1 X2:term, auto___def_29 X1 -> auto___def_34 sym -> auto___def_37 X2 -> (auto___def_29 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_29 X1). 2:apply (rem_296 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_298 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_300 : forall X1 X2:term, auto___def_29 X1 -> auto___def_34 sym -> auto___def_37 X2 -> auto___def_5 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_299 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_5_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_301 : forall X1 X2:term, auto___def_34 sym -> auto___def_37 X2 -> auto___def_29 X1 -> auto___def_5 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_34 sym -> auto___def_37 X2 -> auto___def_5 X1 X2). tauto. exact (rem_300 X1 X2).
Qed.

Remark rem_302 : forall X1 X2:term, auto___def_30 (key X1 X2) -> or_1
    (auto___def_34 X1 /\ auto___def_37 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_303 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 (key sym X2) -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_302 sym X2 H);  intros.
  apply (rem_301 X1 X2);  tauto.
Qed.

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

Remark rem_305 : forall X1 X2:term, auto___def_34 sym -> auto___def_35 X2 -> 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_304 X1).
Qed.

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

Remark rem_307 : forall X1 X2:term, auto___def_34 sym -> auto___def_35 X2 -> auto___type_4 X1 -> auto___def_35 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_35 X2 -> auto___def_35 X2). tauto. exact (rem_306 X2).
Qed.

Remark rem_308 : forall X1 X2:term, auto___def_34 sym -> auto___def_35 X2 -> auto___type_4 X1 -> (auto___type_4 X1 /\ auto___def_35 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___type_4 X1). 2:apply (rem_305 X1 X2);  assumption.
  cut (auto___def_35 X2). 2:apply (rem_307 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_309 : forall X1 X2:term, auto___def_34 sym -> auto___def_35 X2 -> auto___type_4 X1 -> auto___def_5 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_308 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_5_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_310 : forall X1 X2:term, auto___def_32 (key X1 X2) -> or_1
    (auto___def_34 X1 /\ auto___def_35 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_311 : forall X1 X2:term, auto___def_32 (key sym X2) -> auto___type_4 X1 -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_310 sym X2 H);  intros.
  apply (rem_309 X1 X2);  tauto.
Qed.

Remark rem_312 : forall X1 X2:term, auto___type_4 X1 -> auto___def_32 (key sym X2) -> auto___def_5 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_32 (key sym X2) -> auto___type_4 X1 -> auto___def_5 X1 X2). tauto. exact (rem_311 X1 X2).
Qed.

Remark rem_313 : forall X1 X2:term, auto_knows_old (crypt X1 X2) -> or_5
    (auto___def_16 X1 /\ auto___def_17 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto___type_4 X1 /\ auto___def_32 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_5_intro_1; tauto.
  intros. apply or_5_intro_2; tauto.
  intros. apply or_5_intro_3; tauto.
  intros. apply or_5_intro_4; tauto.
  intros. apply or_5_intro_5; tauto.
Qed.

Remark rem_314 : forall X1 X2:term, auto_knows_old (crypt X1 (key sym X2)) -> auto___def_5 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_313 X1 (key sym X2) H);  intros.
  apply (rem_276 X1 X2);  tauto.
  apply (rem_285 X1 X2);  tauto.
  apply (rem_294 X1 X2);  tauto.
  apply (rem_303 X1 X2);  tauto.
  apply (rem_312 X1 X2);  tauto.
Qed.

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

Remark rem_316 : forall X1 X2:term, auto___def_73 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_315 X1).
Qed.

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

Remark rem_318 : forall X1 X2:term, auto___def_73 X2 -> auto___type_12 X1 -> auto___def_73 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_73 X2 -> auto___def_73 X2). tauto. exact (rem_317 X2).
Qed.

Remark rem_319 : forall X1 X2:term, auto___def_73 X2 -> auto___type_12 X1 -> (auto___type_12 X1 /\ auto___def_73 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_316 X1 X2);  assumption.
  cut (auto___def_73 X2). 2:apply (rem_318 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_320 : forall X1 X2:term, auto___def_73 X2 -> auto___type_12 X1 -> auto___def_72 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_319 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_72_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_321 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11.  tauto.
Defined.

Remark rem_322 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> auto___type_11 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11.  case (rem_321 epsilon_mknows_current_p__type_11). clear  epsilon_mknows_current_p__type_11. intros. apply trans___type_11_bob_1;  tauto.
 clear  epsilon_mknows_current_p__type_11. tauto.
Defined.

Remark rem_323 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> auto_knows_current bob -> auto___type_11 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intro H. intros.
  elim (rem_10 H);  intros.
  apply (rem_322 epsilon_mknows_current_p__type_11);  tauto.
Defined.

Remark rem_324 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> auto___type_11 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11.  case (rem_321 epsilon_mknows_current_p__type_11). clear  epsilon_mknows_current_p__type_11. intros. apply trans___type_11_alice_1;  tauto.
 clear  epsilon_mknows_current_p__type_11. tauto.
Defined.

Remark rem_325 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> auto_knows_current alice -> auto___type_11 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intro H. intros.
  elim (rem_13 H);  intros.
  apply (rem_324 epsilon_mknows_current_p__type_11);  tauto.
Defined.

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

Remark rem_327 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_326 epsilon_mknows_current_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_328 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_11 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1. intros A1.
  case (rem_327 epsilon_mknows_current_p__type_11 X1 A1). clear  epsilon_mknows_current_p__type_11 A1. intros. apply trans___type_11_s_1;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1. tauto.
Defined.

Remark rem_329 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto_knows_current (s X1) -> auto___type_11 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1. intro H. intros.
  elim (rem_18 X1 H);  intros.
  apply (rem_328 epsilon_mknows_current_p__type_11 X1);  tauto.
Defined.

Remark rem_330 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> auto___type_11 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11.  case (rem_321 epsilon_mknows_current_p__type_11). clear  epsilon_mknows_current_p__type_11. intros. apply trans___type_11_server_1;  tauto.
 clear  epsilon_mknows_current_p__type_11. tauto.
Defined.

Remark rem_331 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> auto_knows_current server -> auto___type_11 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intro H. intros.
  elim (rem_21 H);  intros.
  apply (rem_330 epsilon_mknows_current_p__type_11);  tauto.
Defined.

Remark rem_332 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> auto___type_11 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11.  case (rem_321 epsilon_mknows_current_p__type_11). clear  epsilon_mknows_current_p__type_11. intros. apply trans___type_11_nil_1;  tauto.
 clear  epsilon_mknows_current_p__type_11. tauto.
Defined.

Remark rem_333 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> auto_knows_current nil -> auto___type_11 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intro H. intros.
  elim (rem_24 H);  intros.
  apply (rem_332 epsilon_mknows_current_p__type_11);  tauto.
Defined.

Remark rem_334 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> auto___type_11 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11.  case (rem_321 epsilon_mknows_current_p__type_11). clear  epsilon_mknows_current_p__type_11. intros. apply trans___type_11_i_1;  tauto.
 clear  epsilon_mknows_current_p__type_11. tauto.
Defined.

Remark rem_335 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> auto_knows_current i -> auto___type_11 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intro H. intros.
  elim (rem_27 H);  intros.
  apply (rem_334 epsilon_mknows_current_p__type_11);  tauto.
Defined.

Remark rem_336 : (forall X:term, auto_knows_current 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_337 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_336 epsilon_mknows_current_p__type_11 X1).
Defined.

Remark rem_338 : (forall X:term, auto_knows_current 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_339 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_338 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_340 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_337 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_339 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_341 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_340 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_key_1;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_342 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_343 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_342 epsilon_mknows_current_p__type_11 X1).
Defined.

Remark rem_344 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_345 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_344 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_346 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_343 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_345 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_347 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_346 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_key_2;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_348 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto___def_54 X1 -> auto___def_54 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_349 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_348 epsilon_mknows_current_p__type_11 X1).
Defined.

Remark rem_350 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X2:term, auto___def_55 X2 -> auto___def_55 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_351 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_350 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_352 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_349 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_351 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_353 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_352 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_key_3;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_354 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___type_11 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_47 X1 X2 H);  intros.
  apply (rem_341 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
  apply (rem_347 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
  apply (rem_353 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_355 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_356 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_355 epsilon_mknows_current_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_357 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto___type_11 (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1. intros A1.
  case (rem_356 epsilon_mknows_current_p__type_11 X1 A1). clear  epsilon_mknows_current_p__type_11 A1. intros. apply trans___type_11_noncea_current_1;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1. tauto.
Defined.

Remark rem_358 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto_knows_current (noncea_current X1) -> auto___type_11 (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1. intro H. intros.
  elim (rem_52 X1 H);  intros.
  apply (rem_357 epsilon_mknows_current_p__type_11 X1);  tauto.
Defined.

Remark rem_359 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_11 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2 X3.  case (rem_321 epsilon_mknows_current_p__type_11). clear  epsilon_mknows_current_p__type_11. intros. apply trans___type_11_nonceb_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_11. tauto.
Defined.

Remark rem_360 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3) -> auto___type_11 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_55 X1 X2 X3 H);  intros.
  apply (rem_359 epsilon_mknows_current_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_361 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto___type_11 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1.  case (rem_321 epsilon_mknows_current_p__type_11). clear  epsilon_mknows_current_p__type_11. intros. apply trans___type_11_noncea_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_11. tauto.
Defined.

Remark rem_362 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto_knows_current (noncea_old X1) -> auto___type_11 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1. intro H. intros.
  elim (rem_58 X1 H);  intros.
  apply (rem_361 epsilon_mknows_current_p__type_11 X1);  tauto.
Defined.

Remark rem_363 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_326 epsilon_mknows_current_p__type_11 X1).
Defined.

Remark rem_364 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_365 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_364 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_366 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_367 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_366 epsilon_mknows_current_p__type_11 X3).
Defined.

Remark rem_368 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_363 epsilon_mknows_current_p__type_11 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_365 epsilon_mknows_current_p__type_11 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_367 epsilon_mknows_current_p__type_11 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_369 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_11 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_368 epsilon_mknows_current_p__type_11 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_current_p__type_11 A1 A2 A3. intros. apply trans___type_11_nonceb_current_1;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2 A3. tauto.
Defined.

Remark rem_370 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto___type_11 (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_67 X1 X2 X3 H);  intros.
  apply (rem_369 epsilon_mknows_current_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_371 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto___def_78 X1 -> auto___def_78 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_372 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_371 epsilon_mknows_current_p__type_11 X1).
Defined.

Remark rem_373 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X2:term, auto___def_79 X2 -> auto___def_79 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_374 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_373 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_375 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_372 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_374 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_376 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_375 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_crypt_1;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_377 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_378 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_377 epsilon_mknows_current_p__type_11 X1).
Defined.

Remark rem_379 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_380 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_379 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_381 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_378 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_380 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_382 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_381 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_crypt_2;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_383 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_384 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_383 epsilon_mknows_current_p__type_11 X1).
Defined.

Remark rem_385 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_386 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_385 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_387 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_384 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_386 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_388 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_387 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_crypt_3;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_389 : (forall X:term, auto_knows_current X -> auto___type_11 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_11. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_326 epsilon_mknows_current_p__type_11 X1).
Defined.

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

Remark rem_391 : (forall X:term, auto_knows_current X -> auto___type_11 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_11. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_390 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_392 : (forall X:term, auto_knows_current X -> auto___type_11 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_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_389 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_391 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_393 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_392 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_394 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto___def_70 X1 -> auto___def_70 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_395 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_394 epsilon_mknows_current_p__type_11 X1).
Defined.

Remark rem_396 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X2:term, auto___def_71 X2 -> auto___def_71 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_397 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_396 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_398 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_395 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_397 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_399 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_398 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_crypt_5;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_400 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1:term, auto___def_89 X1 -> auto___def_89 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_401 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_400 epsilon_mknows_current_p__type_11 X1).
Defined.

Remark rem_402 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X2:term, auto___def_90 X2 -> auto___def_90 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_403 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_402 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_404 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_401 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_403 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_405 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_404 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_crypt_6;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_406 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_326 epsilon_mknows_current_p__type_11 X1).
Defined.

Remark rem_407 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X2:term, auto___def_81 X2 -> auto___def_81 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_408 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_407 epsilon_mknows_current_p__type_11 X2).
Defined.

Remark rem_409 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_406 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_408 epsilon_mknows_current_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_410 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_409 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_crypt_7;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_411 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___type_11 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_109 X1 X2 H);  intros.
  apply (rem_376 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
  apply (rem_382 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
  apply (rem_388 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
  apply (rem_393 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
  apply (rem_399 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
  apply (rem_405 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
  apply (rem_410 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_412 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_392 epsilon_mknows_current_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_11 A1 A2. intros. apply trans___type_11_cons_1;  tauto.
 clear  epsilon_mknows_current_p__type_11 A1 A2. tauto.
Defined.

Remark rem_413 : (forall X:term, auto_knows_current X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___type_11 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_112 X1 X2 H);  intros.
  apply (rem_412 epsilon_mknows_current_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_414 : forall X1:term, auto_knows_current X1 -> auto___type_11 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_current_p__type_11 1.
  intro X. case X.
  exact (rem_325 epsilon_mknows_current_p__type_11 ).
  exact (rem_323 epsilon_mknows_current_p__type_11 ).
  intros X1 X2;  exact (rem_413 epsilon_mknows_current_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_411 epsilon_mknows_current_p__type_11 X1 X2).
  exact (rem_335 epsilon_mknows_current_p__type_11 ).
  intros X1 X2;  exact (rem_354 epsilon_mknows_current_p__type_11 X1 X2).
  exact (rem_333 epsilon_mknows_current_p__type_11 ).
  intros X1;  exact (rem_358 epsilon_mknows_current_p__type_11 X1).
  intros X1;  exact (rem_362 epsilon_mknows_current_p__type_11 X1).
  intros X1 X2 X3;  exact (rem_370 epsilon_mknows_current_p__type_11 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_360 epsilon_mknows_current_p__type_11 X1 X2 X3).
   intro H. elim (rem_115  H).
   intro H. elim (rem_116  H).
  intros X1;  exact (rem_329 epsilon_mknows_current_p__type_11 X1).
  exact (rem_331 epsilon_mknows_current_p__type_11 ).
  intros X1 X2 X3 X4. intro H. elim (rem_117 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_118 X1 X2 X3 X4 H).
   intro H. elim (rem_114  H).
Qed.

Remark rem_415 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto___type_11 X1). tauto. exact (rem_414 X1).
Qed.

Remark rem_416 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_11 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto___type_11 X1). tauto. exact (rem_415 X1 X2).
Qed.

Remark rem_417 : forall X1 X2:term, auto___def_64 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_418 : forall X1 X2:term, auto___def_64 X1 X2 -> auto___type_11 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_417 X1 X2 H);  intros.
  apply (rem_416 X1 X2);  tauto.
Qed.

Remark rem_419 : forall X1 X2:term, auto___def_32 X1 -> auto___def_44 X2 -> auto___def_32 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_32 X1 -> auto___def_32 X1). tauto. exact (rem_244 X1).
Qed.

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

Remark rem_421 : forall X1 X2:term, auto___def_32 X1 -> auto___def_44 X2 -> auto___def_44 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_44 X2 -> auto___def_44 X2). tauto. exact (rem_420 X2).
Qed.

Remark rem_422 : forall X1 X2:term, auto___def_32 X1 -> auto___def_44 X2 -> (auto___def_32 X1 /\ auto___def_44 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_32 X1). 2:apply (rem_419 X1 X2);  assumption.
  cut (auto___def_44 X2). 2:apply (rem_421 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_423 : forall X1 X2:term, auto___def_32 X1 -> auto___def_44 X2 -> auto___def_43 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_422 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_43_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_424 : forall X1 X2:term, auto___def_44 X2 -> auto___def_32 X1 -> auto___def_43 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_32 X1 -> auto___def_44 X2 -> auto___def_43 (cons X1 X2)). tauto. exact (rem_423 X1 X2).
Qed.

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

Remark rem_426 : forall X1 X2:term, auto___def_72 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_425 X1).
Qed.

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

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

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

Remark rem_430 : forall X1 X2:term, auto___def_72 X2 -> auto___type_11 X1 -> auto___def_70 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_429 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_70_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_432 : forall X1 X2:term, auto___def_78 X1 -> auto___def_83 sym -> auto___def_86 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_431 X1).
Qed.

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

Remark rem_434 : forall X1 X2:term, auto___def_78 X1 -> auto___def_83 sym -> auto___def_86 X2 -> auto___def_86 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_86 X2 -> auto___def_86 X2). tauto. exact (rem_433 X2).
Qed.

Remark rem_435 : forall X1 X2:term, auto___def_78 X1 -> auto___def_83 sym -> auto___def_86 X2 -> (auto___def_78 X1 /\ auto___def_86 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_78 X1). 2:apply (rem_432 X1 X2);  assumption.
  cut (auto___def_86 X2). 2:apply (rem_434 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_436 : forall X1 X2:term, auto___def_78 X1 -> auto___def_83 sym -> auto___def_86 X2 -> auto___def_60 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_435 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_60_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_437 : forall X1 X2:term, auto___def_83 sym -> auto___def_86 X2 -> auto___def_78 X1 -> auto___def_60 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_83 sym -> auto___def_86 X2 -> auto___def_60 X1 X2). tauto. exact (rem_436 X1 X2).
Qed.

Remark rem_438 : forall X1 X2:term, auto___def_79 (key X1 X2) -> or_1
    (auto___def_83 X1 /\ auto___def_86 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_439 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 (key sym X2) -> auto___def_60 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_438 sym X2 H);  intros.
  apply (rem_437 X1 X2);  tauto.
Qed.

Remark rem_440 : forall X1 X2:term, auto___def_34 sym -> auto___def_40 X1 -> auto___def_45 X2 -> auto___def_60 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_281 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_60_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_441 : forall X1 X2:term, auto___def_34 sym -> auto___def_45 X2 -> auto___def_40 X1 -> auto___def_60 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_34 sym -> auto___def_40 X1 -> auto___def_45 X2 -> auto___def_60 X1 X2). tauto. exact (rem_440 X1 X2).
Qed.

Remark rem_442 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 (key sym X2) -> auto___def_60 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_284 sym X2 H);  intros.
  apply (rem_441 X1 X2);  tauto.
Qed.

Remark rem_443 : forall X1 X2:term, auto___def_29 X1 -> auto___def_34 sym -> auto___def_37 X2 -> auto___def_60 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_299 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_60_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_444 : forall X1 X2:term, auto___def_34 sym -> auto___def_37 X2 -> auto___def_29 X1 -> auto___def_60 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_34 sym -> auto___def_37 X2 -> auto___def_60 X1 X2). tauto. exact (rem_443 X1 X2).
Qed.

Remark rem_445 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 (key sym X2) -> auto___def_60 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_302 sym X2 H);  intros.
  apply (rem_444 X1 X2);  tauto.
Qed.

Remark rem_446 : forall X1 X2:term, auto___def_51 sym -> auto___def_52 X2 -> auto_knows_current X1 -> auto___def_60 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_287).
Qed.

Remark rem_447 : forall X1 X2:term, auto___def_50 sym -> auto_knows_current X1 -> auto___def_60 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_50 sym -> False). tauto.
  exact (rem_290).
Qed.

Remark rem_448 : forall X1 X2:term, auto___def_50 sym -> auto___type_9 X2 -> auto_knows_current X1 -> auto___def_60 X1 X2. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2. intros. apply (rem_447 X1 X2);  assumption.
Qed.

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

Remark rem_450 : forall X1 X2:term, auto___def_54 sym -> auto___def_55 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_449 X1).
Qed.

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

Remark rem_452 : forall X1 X2:term, auto___def_54 sym -> auto___def_55 X2 -> auto_knows_current X1 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_451 X2).
Qed.

Remark rem_453 : forall X1 X2:term, auto___def_54 sym -> auto___def_55 X2 -> auto_knows_current X1 -> (auto_knows_current X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_450 X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_452 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_454 : forall X1 X2:term, auto___def_54 sym -> auto___def_55 X2 -> auto_knows_current X1 -> auto___def_60 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_453 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_60_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_455 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current (key sym X2) -> auto___def_60 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_47 sym X2 H);  intros.
  apply (rem_446 X1 X2);  tauto.
  apply (rem_448 X1 X2);  tauto.
  apply (rem_454 X1 X2);  tauto.
Qed.

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

Remark rem_457 : forall X1 X2:term, auto___def_20 sym -> auto___def_21 X2 -> auto___def_70 X1 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_456 X1).
Qed.

Remark rem_458 : forall X1 X2:term, auto___def_20 sym -> auto___def_21 X2 -> auto___def_70 X1 -> auto___def_21 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_21 X2 -> auto___def_21 X2). tauto. exact (rem_270 X2).
Qed.

Remark rem_459 : forall X1 X2:term, auto___def_20 sym -> auto___def_21 X2 -> auto___def_70 X1 -> (auto___def_70 X1 /\ auto___def_21 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_70 X1). 2:apply (rem_457 X1 X2);  assumption.
  cut (auto___def_21 X2). 2:apply (rem_458 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_460 : forall X1 X2:term, auto___def_20 sym -> auto___def_21 X2 -> auto___def_70 X1 -> auto___def_60 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_459 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_60_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_461 : forall X1 X2:term, auto___def_71 (key X1 X2) -> or_1
    (auto___def_20 X1 /\ auto___def_21 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_462 : forall X1 X2:term, auto___def_70 X1 -> auto___def_71 (key sym X2) -> auto___def_60 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_461 sym X2 H);  intros.
  apply (rem_460 X1 X2);  tauto.
Qed.

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

Remark rem_464 : forall X1 X2:term, auto___def_83 sym -> auto___def_89 X1 -> auto___def_94 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_463 X1).
Qed.

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

Remark rem_466 : forall X1 X2:term, auto___def_83 sym -> auto___def_89 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_465 X2).
Qed.

Remark rem_467 : forall X1 X2:term, auto___def_83 sym -> auto___def_89 X1 -> auto___def_94 X2 -> (auto___def_89 X1 /\ auto___def_94 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_89 X1). 2:apply (rem_464 X1 X2);  assumption.
  cut (auto___def_94 X2). 2:apply (rem_466 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_468 : forall X1 X2:term, auto___def_83 sym -> auto___def_89 X1 -> auto___def_94 X2 -> auto___def_60 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_467 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_60_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_469 : forall X1 X2:term, auto___def_83 sym -> auto___def_94 X2 -> auto___def_89 X1 -> auto___def_60 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_83 sym -> auto___def_89 X1 -> auto___def_94 X2 -> auto___def_60 X1 X2). tauto. exact (rem_468 X1 X2).
Qed.

Remark rem_470 : forall X1 X2:term, auto___def_90 (key X1 X2) -> or_1
    (auto___def_83 X1 /\ auto___def_94 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_471 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 (key sym X2) -> auto___def_60 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_470 sym X2 H);  intros.
  apply (rem_469 X1 X2);  tauto.
Qed.

Remark rem_472 : forall X1 X2:term, auto___def_83 sym -> auto___def_84 X2 -> auto_knows_current X1 -> auto___type_13 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto___type_13 X1). tauto. exact (rem_119 X1).
Qed.

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

Remark rem_474 : forall X1 X2:term, auto___def_83 sym -> auto___def_84 X2 -> auto_knows_current 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_473 X2).
Qed.

Remark rem_475 : forall X1 X2:term, auto___def_83 sym -> auto___def_84 X2 -> auto_knows_current X1 -> (auto___type_13 X1 /\ auto___def_84 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___type_13 X1). 2:apply (rem_472 X1 X2);  assumption.
  cut (auto___def_84 X2). 2:apply (rem_474 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_476 : forall X1 X2:term, auto___def_83 sym -> auto___def_84 X2 -> auto_knows_current X1 -> auto___def_60 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_475 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_60_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_477 : forall X1 X2:term, auto___def_81 (key X1 X2) -> or_1
    (auto___def_83 X1 /\ auto___def_84 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_478 : forall X1 X2:term, auto___def_81 (key sym X2) -> auto_knows_current X1 -> auto___def_60 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_477 sym X2 H);  intros.
  apply (rem_476 X1 X2);  tauto.
Qed.

Remark rem_479 : forall X1 X2:term, auto_knows_current X1 -> auto___def_81 (key sym X2) -> auto___def_60 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_81 (key sym X2) -> auto_knows_current X1 -> auto___def_60 X1 X2). tauto. exact (rem_478 X1 X2).
Qed.

Remark rem_480 : forall X1 X2:term, auto_knows_current (crypt X1 (key sym X2)) -> auto___def_60 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_109 X1 (key sym X2) H);  intros.
  apply (rem_439 X1 X2);  tauto.
  apply (rem_442 X1 X2);  tauto.
  apply (rem_445 X1 X2);  tauto.
  apply (rem_455 X1 X2);  tauto.
  apply (rem_462 X1 X2);  tauto.
  apply (rem_471 X1 X2);  tauto.
  apply (rem_479 X1 X2);  tauto.
Qed.

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

Remark rem_482 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> auto___type_15 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15.  case (rem_481 epsilon_m__type_12_p__type_15). clear  epsilon_m__type_12_p__type_15. intros. apply trans___type_15_bob_1;  tauto.
 clear  epsilon_m__type_12_p__type_15. tauto.
Defined.

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

Remark rem_484 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> auto___type_12 bob -> auto___type_15 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intro H. intros.
  elim (rem_483 H);  intros.
  apply (rem_482 epsilon_m__type_12_p__type_15);  tauto.
Defined.

Remark rem_485 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> auto___type_15 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15.  case (rem_481 epsilon_m__type_12_p__type_15). clear  epsilon_m__type_12_p__type_15. intros. apply trans___type_15_alice_1;  tauto.
 clear  epsilon_m__type_12_p__type_15. tauto.
Defined.

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

Remark rem_487 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> auto___type_12 alice -> auto___type_15 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intro H. intros.
  elim (rem_486 H);  intros.
  apply (rem_485 epsilon_m__type_12_p__type_15);  tauto.
Defined.

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

Remark rem_489 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_488 epsilon_m__type_12_p__type_15 X1);  assumption.
  tauto.
Defined.

Remark rem_490 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_15 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1. intros A1.
  case (rem_489 epsilon_m__type_12_p__type_15 X1 A1). clear  epsilon_m__type_12_p__type_15 A1. intros. apply trans___type_15_s_1;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1. tauto.
Defined.

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

Remark rem_492 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1:term, auto___type_12 (s X1) -> auto___type_15 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1. intro H. intros.
  elim (rem_491 X1 H);  intros.
  apply (rem_490 epsilon_m__type_12_p__type_15 X1);  tauto.
Defined.

Remark rem_493 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> auto___type_15 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15.  case (rem_481 epsilon_m__type_12_p__type_15). clear  epsilon_m__type_12_p__type_15. intros. apply trans___type_15_server_1;  tauto.
 clear  epsilon_m__type_12_p__type_15. tauto.
Defined.

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

Remark rem_495 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> auto___type_12 server -> auto___type_15 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intro H. intros.
  elim (rem_494 H);  intros.
  apply (rem_493 epsilon_m__type_12_p__type_15);  tauto.
Defined.

Remark rem_496 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> auto___type_15 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15.  case (rem_481 epsilon_m__type_12_p__type_15). clear  epsilon_m__type_12_p__type_15. intros. apply trans___type_15_nil_1;  tauto.
 clear  epsilon_m__type_12_p__type_15. tauto.
Defined.

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

Remark rem_498 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> auto___type_12 nil -> auto___type_15 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intro H. intros.
  elim (rem_497 H);  intros.
  apply (rem_496 epsilon_m__type_12_p__type_15);  tauto.
Defined.

Remark rem_499 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> auto___type_15 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15.  case (rem_481 epsilon_m__type_12_p__type_15). clear  epsilon_m__type_12_p__type_15. intros. apply trans___type_15_i_1;  tauto.
 clear  epsilon_m__type_12_p__type_15. tauto.
Defined.

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

Remark rem_501 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> auto___type_12 i -> auto___type_15 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intro H. intros.
  elim (rem_500 H);  intros.
  apply (rem_499 epsilon_m__type_12_p__type_15);  tauto.
Defined.

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

Remark rem_503 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_502 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_505 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_504 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_506 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_503 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_505 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_507 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_15 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_506 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_key_1;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

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

Remark rem_509 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_508 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_511 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_510 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_512 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_509 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_511 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_513 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_15 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_512 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_key_2;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

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

Remark rem_515 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_514 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_517 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_516 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_518 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_515 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_517 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_519 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_15 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_518 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_key_3;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

Remark rem_520 : forall X1 X2:term, auto___type_12 (key X1 X2) -> or_3
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
    (auto___def_54 X1 /\ auto___def_55 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_3_intro_1; tauto.
  intros. apply or_3_intro_2; tauto.
  intros. apply or_3_intro_3; tauto.
Qed.

Remark rem_521 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___type_12 (key X1 X2) -> auto___type_15 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intro H. intros.
  elim (rem_520 X1 X2 H);  intros.
  apply (rem_507 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
  apply (rem_513 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
  apply (rem_519 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
Defined.

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

Remark rem_523 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_522 epsilon_m__type_12_p__type_15 X1);  assumption.
  tauto.
Defined.

Remark rem_524 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1:term, auto_agent X1 -> auto___type_15 (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1. intros A1.
  case (rem_523 epsilon_m__type_12_p__type_15 X1 A1). clear  epsilon_m__type_12_p__type_15 A1. intros. apply trans___type_15_noncea_current_1;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1. tauto.
Defined.

Remark rem_525 : forall X1:term, auto___type_12 (noncea_current X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_526 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1:term, auto___type_12 (noncea_current X1) -> auto___type_15 (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1. intro H. intros.
  elim (rem_525 X1 H);  intros.
  apply (rem_524 epsilon_m__type_12_p__type_15 X1);  tauto.
Defined.

Remark rem_527 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2 X3:term, auto___type_15 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2 X3.  case (rem_481 epsilon_m__type_12_p__type_15). clear  epsilon_m__type_12_p__type_15. intros. apply trans___type_15_nonceb_old_1;  tauto.
 clear  epsilon_m__type_12_p__type_15. tauto.
Defined.

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

Remark rem_529 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2 X3:term, auto___type_12 (nonceb_old X1 X2 X3) -> auto___type_15 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2 X3. intro H. intros.
  elim (rem_528 X1 X2 X3 H);  intros.
  apply (rem_527 epsilon_m__type_12_p__type_15 X1 X2 X3);  tauto.
Defined.

Remark rem_530 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1:term, auto___type_15 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1.  case (rem_481 epsilon_m__type_12_p__type_15). clear  epsilon_m__type_12_p__type_15. intros. apply trans___type_15_noncea_old_1;  tauto.
 clear  epsilon_m__type_12_p__type_15. tauto.
Defined.

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

Remark rem_532 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1:term, auto___type_12 (noncea_old X1) -> auto___type_15 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1. intro H. intros.
  elim (rem_531 X1 H);  intros.
  apply (rem_530 epsilon_m__type_12_p__type_15 X1);  tauto.
Defined.

Remark rem_533 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_488 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_535 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_534 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_536 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_537 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_536 epsilon_m__type_12_p__type_15 X3).
Defined.

Remark rem_538 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_533 epsilon_m__type_12_p__type_15 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_535 epsilon_m__type_12_p__type_15 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_537 epsilon_m__type_12_p__type_15 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_539 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_15 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_538 epsilon_m__type_12_p__type_15 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_12_p__type_15 A1 A2 A3. intros. apply trans___type_15_nonceb_current_1;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2 A3. tauto.
Defined.

Remark rem_540 : forall X1 X2 X3:term, auto___type_12 (nonceb_current X1 X2 X3) -> or_1
    (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_541 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2 X3:term, auto___type_12 (nonceb_current X1 X2 X3) -> auto___type_15 (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2 X3. intro H. intros.
  elim (rem_540 X1 X2 X3 H);  intros.
  apply (rem_539 epsilon_m__type_12_p__type_15 X1 X2 X3);  tauto.
Defined.

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

Remark rem_543 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_542 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_545 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_544 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_546 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_543 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_545 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_547 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_15 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_546 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_crypt_1;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

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

Remark rem_549 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_548 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_551 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_550 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_552 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_549 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_551 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_553 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_15 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_552 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_crypt_2;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

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

Remark rem_555 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_554 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_557 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_556 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_558 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_555 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_557 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_559 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_15 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_558 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_crypt_3;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

Remark rem_560 : (forall X:term, auto___type_12 X -> auto___type_15 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_12_p__type_15. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_488 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_562 : (forall X:term, auto___type_12 X -> auto___type_15 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_12_p__type_15. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_561 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_563 : (forall X:term, auto___type_12 X -> auto___type_15 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_12_p__type_15. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_560 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_562 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_564 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_15 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_563 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_crypt_4;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

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

Remark rem_566 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_565 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_568 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_567 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_569 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_566 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_568 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_570 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_15 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_569 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_crypt_5;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

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

Remark rem_572 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_571 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_574 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_573 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_575 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_572 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_574 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_576 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_15 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_575 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_crypt_6;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

Remark rem_577 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_488 epsilon_m__type_12_p__type_15 X1).
Defined.

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

Remark rem_579 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_578 epsilon_m__type_12_p__type_15 X2).
Defined.

Remark rem_580 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_577 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_579 epsilon_m__type_12_p__type_15 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_581 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_15 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_580 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_crypt_7;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

Remark rem_582 : forall X1 X2:term, auto___type_12 (crypt X1 X2) -> or_7
    (auto___def_78 X1 /\ auto___def_79 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___def_70 X1 /\ auto___def_71 X2)
    (auto___def_89 X1 /\ auto___def_90 X2)
    (auto_knows_current X1 /\ auto___def_81 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_7_intro_1; tauto.
  intros. apply or_7_intro_2; tauto.
  intros. apply or_7_intro_3; tauto.
  intros. apply or_7_intro_4; tauto.
  intros. apply or_7_intro_5; tauto.
  intros. apply or_7_intro_6; tauto.
  intros. apply or_7_intro_7; tauto.
Qed.

Remark rem_583 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___type_12 (crypt X1 X2) -> auto___type_15 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intro H. intros.
  elim (rem_582 X1 X2 H);  intros.
  apply (rem_547 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
  apply (rem_553 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
  apply (rem_559 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
  apply (rem_564 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
  apply (rem_570 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
  apply (rem_576 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
  apply (rem_581 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
Defined.

Remark rem_584 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_15 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intros A1 A2.
  case (rem_563 epsilon_m__type_12_p__type_15 X1 X2 A1 A2). clear  epsilon_m__type_12_p__type_15 A1 A2. intros. apply trans___type_15_cons_1;  tauto.
 clear  epsilon_m__type_12_p__type_15 A1 A2. tauto.
Defined.

Remark rem_585 : forall X1 X2:term, auto___type_12 (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_586 : (forall X:term, auto___type_12 X -> auto___type_15 X)
    -> forall X1 X2:term, auto___type_12 (cons X1 X2) -> auto___type_15 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_p__type_15. intros X1 X2. intro H. intros.
  elim (rem_585 X1 X2 H);  intros.
  apply (rem_584 epsilon_m__type_12_p__type_15 X1 X2);  tauto.
Defined.

Remark rem_587 : auto___type_12 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_588 : auto___type_12 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_589 : auto___type_12 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_590 : forall X1 X2 X3 X4:term, auto___type_12 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_591 : forall X1 X2 X3 X4:term, auto___type_12 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_592 : forall X1:term, auto___type_12 X1 -> auto___type_15 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_12_p__type_15 1.
  intro X. case X.
  exact (rem_487 epsilon_m__type_12_p__type_15 ).
  exact (rem_484 epsilon_m__type_12_p__type_15 ).
  intros X1 X2;  exact (rem_586 epsilon_m__type_12_p__type_15 X1 X2).
  intros X1 X2;  exact (rem_583 epsilon_m__type_12_p__type_15 X1 X2).
  exact (rem_501 epsilon_m__type_12_p__type_15 ).
  intros X1 X2;  exact (rem_521 epsilon_m__type_12_p__type_15 X1 X2).
  exact (rem_498 epsilon_m__type_12_p__type_15 ).
  intros X1;  exact (rem_526 epsilon_m__type_12_p__type_15 X1).
  intros X1;  exact (rem_532 epsilon_m__type_12_p__type_15 X1).
  intros X1 X2 X3;  exact (rem_541 epsilon_m__type_12_p__type_15 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_529 epsilon_m__type_12_p__type_15 X1 X2 X3).
   intro H. elim (rem_588  H).
   intro H. elim (rem_589  H).
  intros X1;  exact (rem_492 epsilon_m__type_12_p__type_15 X1).
  exact (rem_495 epsilon_m__type_12_p__type_15 ).
  intros X1 X2 X3 X4. intro H. elim (rem_590 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_591 X1 X2 X3 X4 H).
   intro H. elim (rem_587  H).
Qed.

Remark rem_593 : forall X1 X2 X3 X4:term, auto___type_11 X2 -> auto___type_12 X1 -> auto_agent X3 -> auto_knows_current X3 -> auto_knows_current X4 -> auto___type_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_12 X1 -> auto___type_15 X1). tauto. exact (rem_592 X1).
Qed.

Remark rem_594 : forall X1 X2 X3 X4:term, auto___type_11 X2 -> auto_agent X3 -> auto_knows_current X3 -> auto_knows_current X4 -> auto___type_12 X1 -> auto___type_15 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___type_11 X2 -> auto___type_12 X1 -> auto_agent X3 -> auto_knows_current X3 -> auto_knows_current X4 -> auto___type_15 X1). tauto. exact (rem_593 X1 X2 X3 X4).
Qed.

Remark rem_595 : forall X1 X2 X3 X4:term, auto___def_74 X2 X3 X4 X1 -> auto___type_15 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_122 X2 X3 X4 X1 H);  intros.
  apply (rem_594 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_596 : (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_597 : (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_596 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_598 : auto_agent bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_599 : (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_598 H);  intros.
  apply (rem_597 epsilon_magent_p__type_1);  tauto.
Defined.

Remark rem_600 : (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_596 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_601 : auto_agent alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_602 : (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_601 H);  intros.
  apply (rem_600 epsilon_magent_p__type_1);  tauto.
Defined.

Remark rem_603 : (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_596 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_604 : auto_agent server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_605 : (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_604 H);  intros.
  apply (rem_603 epsilon_magent_p__type_1);  tauto.
Defined.

Remark rem_606 : (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_596 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_607 : auto_agent i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_608 : (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_607 H);  intros.
  apply (rem_606 epsilon_magent_p__type_1);  tauto.
Defined.

Remark rem_609 : auto_agent sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_610 : auto_agent prv -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_612 : auto_agent nil -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_614 : forall X1:term, auto_agent (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_615 : forall X1 X2 X3:term, auto_agent (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_616 : auto_agent pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_617 : forall X1:term, auto_agent (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_618 : forall X1 X2 X3:term, auto_agent (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_621 : forall X1 X2 X3 X4:term, auto_agent (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_622 : forall X1 X2 X3 X4:term, auto_agent (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_623 : 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_602 epsilon_magent_p__type_1 ).
  exact (rem_599 epsilon_magent_p__type_1 ).
  intros X1 X2. intro H. elim (rem_620 X1 X2 H).
  intros X1 X2. intro H. elim (rem_619 X1 X2 H).
  exact (rem_608 epsilon_magent_p__type_1 ).
  intros X1 X2. intro H. elim (rem_613 X1 X2 H).
   intro H. elim (rem_612  H).
  intros X1. intro H. elim (rem_614 X1 H).
  intros X1. intro H. elim (rem_617 X1 H).
  intros X1 X2 X3. intro H. elim (rem_618 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_615 X1 X2 X3 H).
   intro H. elim (rem_610  H).
   intro H. elim (rem_616  H).
  intros X1. intro H. elim (rem_611 X1 H).
  exact (rem_605 epsilon_magent_p__type_1 ).
  intros X1 X2 X3 X4. intro H. elim (rem_621 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_622 X1 X2 X3 X4 H).
   intro H. elim (rem_609  H).
Qed.

Remark rem_624 : auto___def_83 sym. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_83_sym_1;  tauto.
 tauto.
Qed.

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

Remark rem_626 : forall X1 X2:term, auto___def_18 X2 -> auto___type_2 X1 -> auto___type_2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_2 X1 -> auto___type_2 X1). tauto. exact (rem_625 X1).
Qed.

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

Remark rem_628 : forall X1 X2:term, auto___def_18 X2 -> auto___type_2 X1 -> auto___def_18 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_18 X2 -> auto___def_18 X2). tauto. exact (rem_627 X2).
Qed.

Remark rem_629 : forall X1 X2:term, auto___def_18 X2 -> auto___type_2 X1 -> (auto___type_2 X1 /\ auto___def_18 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_2 X1). 2:apply (rem_626 X1 X2);  assumption.
  cut (auto___def_18 X2). 2:apply (rem_628 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_630 : forall X1 X2:term, auto___def_18 X2 -> auto___type_2 X1 -> auto___def_16 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_629 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_16_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_632 : forall X1 X2:term, auto___def_83 X1 -> auto___def_84 X2 -> auto___def_83 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_83 X1 -> auto___def_83 X1). tauto. exact (rem_631 X1).
Qed.

Remark rem_633 : forall X1 X2:term, auto___def_83 X1 -> auto___def_84 X2 -> auto___def_84 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_84 X2 -> auto___def_84 X2). tauto. exact (rem_473 X2).
Qed.

Remark rem_634 : forall X1 X2:term, auto___def_83 X1 -> auto___def_84 X2 -> (auto___def_83 X1 /\ auto___def_84 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_83 X1). 2:apply (rem_632 X1 X2);  assumption.
  cut (auto___def_84 X2). 2:apply (rem_633 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_635 : forall X1 X2:term, auto___def_83 X1 -> auto___def_84 X2 -> auto___def_81 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_634 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_81_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_636 : forall X1 X2:term, auto___def_84 X2 -> auto___def_83 X1 -> auto___def_81 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_83 X1 -> auto___def_84 X2 -> auto___def_81 (key X1 X2)). tauto. exact (rem_635 X1 X2).
Qed.

Remark rem_637 : auto___def_24 nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_24_nil_1;  tauto.
 tauto.
Qed.

Remark rem_638 : auto___def_49 nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_49_nil_1;  tauto.
 tauto.
Qed.

Remark rem_639 : (forall X:term, auto_agent X -> auto___type_5 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p__type_5.  tauto.
Defined.

Remark rem_640 : (forall X:term, auto_agent X -> auto___type_5 X)
    -> auto___type_5 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_5.  case (rem_639 epsilon_magent_p__type_5). clear  epsilon_magent_p__type_5. intros. apply trans___type_5_bob_1;  tauto.
 clear  epsilon_magent_p__type_5. tauto.
Defined.

Remark rem_641 : (forall X:term, auto_agent X -> auto___type_5 X)
    -> auto_agent bob -> auto___type_5 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_5. intro H. intros.
  elim (rem_598 H);  intros.
  apply (rem_640 epsilon_magent_p__type_5);  tauto.
Defined.

Remark rem_642 : (forall X:term, auto_agent X -> auto___type_5 X)
    -> auto___type_5 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_5.  case (rem_639 epsilon_magent_p__type_5). clear  epsilon_magent_p__type_5. intros. apply trans___type_5_alice_1;  tauto.
 clear  epsilon_magent_p__type_5. tauto.
Defined.

Remark rem_643 : (forall X:term, auto_agent X -> auto___type_5 X)
    -> auto_agent alice -> auto___type_5 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_5. intro H. intros.
  elim (rem_601 H);  intros.
  apply (rem_642 epsilon_magent_p__type_5);  tauto.
Defined.

Remark rem_644 : (forall X:term, auto_agent X -> auto___type_5 X)
    -> auto___type_5 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_5.  case (rem_639 epsilon_magent_p__type_5). clear  epsilon_magent_p__type_5. intros. apply trans___type_5_server_1;  tauto.
 clear  epsilon_magent_p__type_5. tauto.
Defined.

Remark rem_645 : (forall X:term, auto_agent X -> auto___type_5 X)
    -> auto_agent server -> auto___type_5 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_5. intro H. intros.
  elim (rem_604 H);  intros.
  apply (rem_644 epsilon_magent_p__type_5);  tauto.
Defined.

Remark rem_646 : (forall X:term, auto_agent X -> auto___type_5 X)
    -> auto___type_5 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_5.  case (rem_639 epsilon_magent_p__type_5). clear  epsilon_magent_p__type_5. intros. apply trans___type_5_i_1;  tauto.
 clear  epsilon_magent_p__type_5. tauto.
Defined.

Remark rem_647 : (forall X:term, auto_agent X -> auto___type_5 X)
    -> auto_agent i -> auto___type_5 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_5. intro H. intros.
  elim (rem_607 H);  intros.
  apply (rem_646 epsilon_magent_p__type_5);  tauto.
Defined.

Remark rem_648 : forall X1:term, auto_agent X1 -> auto___type_5 X1. (* Induct. *)
Proof.
  fix epsilon_magent_p__type_5 1.
  intro X. case X.
  exact (rem_643 epsilon_magent_p__type_5 ).
  exact (rem_641 epsilon_magent_p__type_5 ).
  intros X1 X2. intro H. elim (rem_620 X1 X2 H).
  intros X1 X2. intro H. elim (rem_619 X1 X2 H).
  exact (rem_647 epsilon_magent_p__type_5 ).
  intros X1 X2. intro H. elim (rem_613 X1 X2 H).
   intro H. elim (rem_612  H).
  intros X1. intro H. elim (rem_614 X1 H).
  intros X1. intro H. elim (rem_617 X1 H).
  intros X1 X2 X3. intro H. elim (rem_618 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_615 X1 X2 X3 H).
   intro H. elim (rem_610  H).
   intro H. elim (rem_616  H).
  intros X1. intro H. elim (rem_611 X1 H).
  exact (rem_645 epsilon_magent_p__type_5 ).
  intros X1 X2 X3 X4. intro H. elim (rem_621 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_622 X1 X2 X3 X4 H).
   intro H. elim (rem_609  H).
Qed.

Remark rem_649 : forall X1 X2 X3 X4:term, auto___type_2 X2 -> auto___type_3 X3 -> auto_agent X1 -> auto_knows_old X4 -> auto_knows_old X1 -> auto___type_5 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X1 -> auto___type_5 X1). tauto. exact (rem_648 X1).
Qed.

Remark rem_650 : forall X1 X2 X3 X4:term, auto___type_2 X2 -> auto_agent X1 -> auto_knows_old X1 -> auto_knows_old X3 -> auto___type_3 X4 -> auto___type_5 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto___type_2 X2 -> auto___type_3 X3 -> auto_agent X1 -> auto_knows_old X4 -> auto_knows_old X1 -> auto___type_5 X1). tauto. exact (rem_649 X1 X2 X3 X4).
Qed.

Remark rem_651 : forall X1 X2 X3 X4:term, auto___def_25 X2 X1 X3 X4 -> auto___type_5 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_242 X2 X1 X3 X4 H);  intros.
  apply (rem_650 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_652 : 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_449 X1).
Qed.

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

Remark rem_654 : 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_653 X2).
Qed.

Remark rem_655 : 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_652 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_654 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_656 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current nil -> auto___def_64 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_655 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_64_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_657 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current nil -> auto_knows_current X1 -> auto___def_64 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_64 X1 X2). tauto. exact (rem_656 X1 X2).
Qed.

Remark rem_658 : forall X1 X2:term, auto_knows_current X1 -> auto_knows_current (cons X2 nil) -> auto___def_64 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_112 X2 nil H);  intros.
  apply (rem_657 X1 X2);  tauto.
Qed.

Remark rem_659 : forall X1 X2:term, auto_knows_current (cons X1 (cons X2 nil)) -> auto___def_64 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_112 X1 (cons X2 nil) H);  intros.
  apply (rem_658 X1 X2);  tauto.
Qed.

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

Remark rem_661 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_660 X1).
Qed.

Remark rem_662 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___type_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___type_16 X1 -> auto___type_16 X1). tauto. exact (rem_251 X1).
Qed.

Remark rem_663 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_653 X2).
Qed.

Remark rem_664 : forall X3:term, auto___type_14 X3 -> auto___type_14 X3. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_665 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___type_14 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___type_14 X3 -> auto___type_14 X3). tauto. exact (rem_664 X3).
Qed.

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

Remark rem_667 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X4 -> auto_knows_current X4). tauto. exact (rem_666 X4).
Qed.

Remark rem_668 : forall X5:term, auto___def_81 X5 -> auto___def_81 X5. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_669 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_81 X5. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_81 X5 -> auto___def_81 X5). tauto. exact (rem_668 X5).
Qed.

Remark rem_670 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> (auto_agent X1 /\ auto___type_16 X1 /\ auto_knows_current X2 /\ auto___type_14 X3 /\ auto_knows_current X4 /\ auto___def_81 X5) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3 A4 A5 A6.
  cut (auto_agent X1). 2:apply (rem_661 X1 X2 X3 X4 X5);  assumption.
  cut (auto___type_16 X1). 2:apply (rem_662 X1 X2 X3 X4 X5);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_663 X1 X2 X3 X4 X5);  assumption.
  cut (auto___type_14 X3). 2:apply (rem_665 X1 X2 X3 X4 X5);  assumption.
  cut (auto_knows_current X4). 2:apply (rem_667 X1 X2 X3 X4 X5);  assumption.
  cut (auto___def_81 X5). 2:apply (rem_669 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_671 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3 A4 A5 A6.
  case (rem_670 X1 X2 X3 X4 X5 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans___def_95_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_672 : forall X1 X2 X3 X4 X5:term, auto_agent X1 -> auto___def_81 X5 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_81 X5 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_671 X1 X2 X3 X4 X5).
Qed.

Remark rem_673 : forall X1:term, auto___type_15 (noncea_current X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_674 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___type_14 X3 -> auto___type_15 (noncea_current X1) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2. intro H. intros.
  elim (rem_673 X1 H);  intros.
  apply (rem_672 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_675 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___def_87 (cons server nil) -> auto___type_14 X3 -> auto___type_15 (noncea_current X1) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_81 X5 -> auto___type_14 X3 -> auto___type_15 (noncea_current X1) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_674 X1 X2 X3 X4 X5).
Qed.

Remark rem_676 : forall X1 X2 X3 X4 X5:term, auto___type_16 X1 -> auto___def_87 (cons server nil) -> auto___def_81 X5 -> auto___type_14 X3 -> auto___type_15 (noncea_current X1) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_81 X5 -> auto___def_87 (cons server nil) -> auto___type_14 X3 -> auto___type_15 (noncea_current X1) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_675 X1 X2 X3 X4 X5).
Qed.

Remark rem_677 : forall X1 X2:term, auto___def_86 (cons X1 X2) -> or_1
    (auto___type_16 X1 /\ auto___def_87 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_678 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___def_86 (cons X1 (cons server nil)) -> auto___type_14 X3 -> auto___type_15 (noncea_current X1) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1. intro H. intros.
  elim (rem_677 X1 (cons server nil) H);  intros.
  apply (rem_676 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_679 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___def_85 nil -> auto___def_86 (cons X1 (cons server nil)) -> auto___type_14 X3 -> auto___type_15 (noncea_current X1) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_81 X5 -> auto___def_86 (cons X1 (cons server nil)) -> auto___type_14 X3 -> auto___type_15 (noncea_current X1) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_678 X1 X2 X3 X4 X5).
Qed.

Remark rem_680 : forall X1 X2 X3 X4 X5:term, auto___type_15 (noncea_current X1) -> auto___def_85 nil -> auto___def_81 X5 -> auto___def_86 (cons X1 (cons server nil)) -> auto___type_14 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_81 X5 -> auto___def_85 nil -> auto___def_86 (cons X1 (cons server nil)) -> auto___type_14 X3 -> auto___type_15 (noncea_current X1) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_679 X1 X2 X3 X4 X5).
Qed.

Remark rem_681 : forall X1 X2:term, auto___def_82 (cons X1 X2) -> or_1
    (auto___type_15 X1 /\ auto___def_85 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_682 : forall X1 X2 X3 X4 X5:term, auto___def_81 X5 -> auto___def_82 (cons (noncea_current X1) nil) -> auto___def_86 (cons X1 (cons server nil)) -> auto___type_14 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1. intro H. intros.
  elim (rem_681 (noncea_current X1) nil H);  intros.
  apply (rem_680 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_683 : forall X1 X2:term, auto___def_80 (cons 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_684 : forall X1 X2 X3 X4 X5:term, auto___def_80 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_86 (cons X1 (cons server nil)) -> auto___type_14 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_683 X5 (cons (noncea_current X1) nil) H);  intros.
  apply (rem_682 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_685 : forall X1 X2 X3 X4 X5:term, auto___def_80 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_83 sym -> auto___def_86 (cons X1 (cons server nil)) -> auto___type_14 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_80 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_86 (cons X1 (cons server nil)) -> auto___type_14 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_684 X1 X2 X3 X4 X5).
Qed.

Remark rem_686 : forall X1 X2 X3 X4 X5:term, auto___def_83 sym -> auto___def_86 (cons X1 (cons server nil)) -> auto___def_80 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_14 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_80 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_83 sym -> auto___def_86 (cons X1 (cons server nil)) -> auto___type_14 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_685 X1 X2 X3 X4 X5).
Qed.

Remark rem_687 : forall X1 X2 X3 X4 X5:term, auto___def_79 (key sym (cons X1 (cons server nil))) -> auto___def_80 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_14 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_438 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_686 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_688 : forall X1 X2 X3 X4 X5:term, auto___type_14 X3 -> auto___def_80 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_79 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_79 (key sym (cons X1 (cons server nil))) -> auto___def_80 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_14 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_687 X1 X2 X3 X4 X5).
Qed.

Remark rem_689 : forall X1 X2:term, auto___def_78 (cons X1 X2) -> or_1
    (auto___type_14 X1 /\ auto___def_80 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_690 : forall X1 X2 X3 X4 X5:term, auto___def_78 (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_79 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_689 X3 (cons X5 (cons (noncea_current X1) nil)) H);  intros.
  apply (rem_688 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_691 : forall X1:term, auto___def_32 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_692 : forall X1 X2 X3 X4 X5:term, auto___def_32 (noncea_current X1) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_5 X5 -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_691 X1 H);  intros.
Qed.

Remark rem_693 : forall X1 X2 X3 X4 X5:term, auto___def_32 (noncea_current X1) -> auto___def_44 nil -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_5 X5 -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_32 (noncea_current X1) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_5 X5 -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_692 X1 X2 X3 X4 X5).
Qed.

Remark rem_694 : forall X1 X2:term, auto___def_43 (cons X1 X2) -> or_1
    (auto___def_32 X1 /\ auto___def_44 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_695 : forall X1 X2 X3 X4 X5:term, auto___def_43 (cons (noncea_current X1) nil) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_5 X5 -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_694 (noncea_current X1) nil H);  intros.
  apply (rem_693 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_696 : forall X1 X2 X3 X4 X5:term, auto___type_5 X5 -> auto___def_43 (cons (noncea_current X1) nil) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_43 (cons (noncea_current X1) nil) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_5 X5 -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_695 X1 X2 X3 X4 X5).
Qed.

Remark rem_697 : forall X1 X2:term, auto___def_42 (cons X1 X2) -> or_1
    (auto___type_5 X1 /\ auto___def_43 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_698 : forall X1 X2 X3 X4 X5:term, auto___def_42 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_697 X5 (cons (noncea_current X1) nil) H);  intros.
  apply (rem_696 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_699 : forall X1 X2 X3 X4 X5:term, auto___def_34 sym -> auto___def_42 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_42 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_698 X1 X2 X3 X4 X5).
Qed.

Remark rem_700 : forall X1 X2 X3 X4 X5:term, auto___def_34 sym -> auto___def_45 (cons X1 (cons server nil)) -> auto___def_42 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_34 sym -> auto___def_42 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_699 X1 X2 X3 X4 X5).
Qed.

Remark rem_701 : forall X1 X2 X3 X4 X5:term, auto___def_41 (key sym (cons X1 (cons server nil))) -> auto___def_42 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_284 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_700 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_702 : forall X1 X2 X3 X4 X5:term, auto___type_7 X3 -> auto___def_42 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_41 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_41 (key sym (cons X1 (cons server nil))) -> auto___def_42 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_7 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_701 X1 X2 X3 X4 X5).
Qed.

Remark rem_703 : forall X1 X2:term, auto___def_40 (cons X1 X2) -> or_1
    (auto___type_7 X1 /\ auto___def_42 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_704 : forall X1 X2 X3 X4 X5:term, auto___def_40 (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_41 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_703 X3 (cons X5 (cons (noncea_current X1) nil)) H);  intros.
  apply (rem_702 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_705 : forall X1:term, auto___type_6 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_706 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___type_5 X3 -> auto___type_6 (noncea_current X1) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2. intro H. intros.
  elim (rem_705 X1 H);  intros.
Qed.

Remark rem_707 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___def_38 (cons server nil) -> auto___type_5 X3 -> auto___type_6 (noncea_current X1) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X5 -> auto___type_5 X3 -> auto___type_6 (noncea_current X1) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_706 X1 X2 X3 X4 X5).
Qed.

Remark rem_708 : forall X1 X2 X3 X4 X5:term, auto___type_7 X1 -> auto___def_38 (cons server nil) -> auto___def_32 X5 -> auto___type_5 X3 -> auto___type_6 (noncea_current X1) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X5 -> auto___def_38 (cons server nil) -> auto___type_5 X3 -> auto___type_6 (noncea_current X1) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_707 X1 X2 X3 X4 X5).
Qed.

Remark rem_709 : forall X1 X2:term, auto___def_37 (cons X1 X2) -> or_1
    (auto___type_7 X1 /\ auto___def_38 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_710 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto___type_6 (noncea_current X1) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1. intro H. intros.
  elim (rem_709 X1 (cons server nil) H);  intros.
  apply (rem_708 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_711 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___def_36 nil -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto___type_6 (noncea_current X1) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X5 -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto___type_6 (noncea_current X1) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_710 X1 X2 X3 X4 X5).
Qed.

Remark rem_712 : forall X1 X2 X3 X4 X5:term, auto___type_6 (noncea_current X1) -> auto___def_36 nil -> auto___def_32 X5 -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X5 -> auto___def_36 nil -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto___type_6 (noncea_current X1) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_711 X1 X2 X3 X4 X5).
Qed.

Remark rem_713 : forall X1 X2:term, auto___def_33 (cons X1 X2) -> or_1
    (auto___type_6 X1 /\ auto___def_36 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_714 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___def_33 (cons (noncea_current X1) nil) -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1. intro H. intros.
  elim (rem_713 (noncea_current X1) nil H);  intros.
  apply (rem_712 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_715 : forall X1 X2:term, auto___def_31 (cons X1 X2) -> or_1
    (auto___def_32 X1 /\ auto___def_33 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_716 : forall X1 X2 X3 X4 X5:term, auto___def_31 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_715 X5 (cons (noncea_current X1) nil) H);  intros.
  apply (rem_714 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_717 : forall X1 X2 X3 X4 X5:term, auto___def_31 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_34 sym -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_31 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_716 X1 X2 X3 X4 X5).
Qed.

Remark rem_718 : forall X1 X2 X3 X4 X5:term, auto___def_34 sym -> auto___def_37 (cons X1 (cons server nil)) -> auto___def_31 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_5 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_31 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_34 sym -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_717 X1 X2 X3 X4 X5).
Qed.

Remark rem_719 : forall X1 X2 X3 X4 X5:term, auto___def_30 (key sym (cons X1 (cons server nil))) -> auto___def_31 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_5 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_302 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_718 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_720 : forall X1 X2 X3 X4 X5:term, auto___type_5 X3 -> auto___def_31 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_30 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_30 (key sym (cons X1 (cons server nil))) -> auto___def_31 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_5 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_719 X1 X2 X3 X4 X5).
Qed.

Remark rem_721 : forall X1 X2:term, auto___def_29 (cons X1 X2) -> or_1
    (auto___type_5 X1 /\ auto___def_31 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_722 : forall X1 X2 X3 X4 X5:term, auto___def_29 (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_30 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_721 X3 (cons X5 (cons (noncea_current X1) nil)) H);  intros.
  apply (rem_720 X1 X2 X3 X4 X5);  tauto.
Qed.

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

Remark rem_724 : forall X1 X2 X3 X4 X5:term, auto___def_52 (cons X1 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_723 X1 (cons server nil) H);  intros.
Qed.

Remark rem_725 : forall X1 X2 X3 X4 X5:term, auto___def_51 sym -> auto___def_52 (cons X1 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_52 (cons X1 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_724 X1 X2 X3 X4 X5).
Qed.

Remark rem_726 : forall X1 X2 X3 X4 X5:term, auto___def_50 sym -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_50 sym -> False). tauto.
  exact (rem_290).
Qed.

Remark rem_727 : forall X1 X2 X3 X4 X5:term, auto___def_50 sym -> auto___type_9 (cons X1 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2 X3 X4 X5. intros. apply (rem_726 X1 X2 X3 X4 X5);  assumption.
Qed.

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

Remark rem_729 : forall X1 X2 X3 X4 X5:term, auto___def_55 (cons X1 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_728 X1 (cons server nil) H);  intros.
Qed.

Remark rem_730 : forall X1 X2 X3 X4 X5:term, auto___def_54 sym -> auto___def_55 (cons X1 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_55 (cons X1 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_729 X1 X2 X3 X4 X5).
Qed.

Remark rem_731 : forall X1 X2 X3 X4 X5:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2 H3 H4. intro H. intros.
  elim (rem_47 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_725 X1 X2 X3 X4 X5);  tauto.
  apply (rem_727 X1 X2 X3 X4 X5);  tauto.
  apply (rem_730 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_732 : forall X1 X2 X3 X4 X5:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto_knows_current nil -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_731 X1 X2 X3 X4 X5).
Qed.

Remark rem_733 : forall X1 X2 X3 X4 X5:term, auto_knows_current (noncea_current X1) -> auto_knows_current nil -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto_knows_current nil -> auto_knows_current (noncea_current X1) -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_732 X1 X2 X3 X4 X5).
Qed.

Remark rem_734 : forall X1 X2 X3 X4 X5:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (cons (noncea_current X1) nil) -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2 H3 H4. intro H. intros.
  elim (rem_112 (noncea_current X1) nil H);  intros.
  apply (rem_733 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_735 : forall X1 X2 X3 X4 X5:term, auto_knows_current X5 -> auto_knows_current (cons (noncea_current X1) nil) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_knows_current (cons (noncea_current X1) nil) -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_734 X1 X2 X3 X4 X5).
Qed.

Remark rem_736 : forall X1 X2 X3 X4 X5:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current (cons X5 (cons (noncea_current X1) nil)) -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2 H3. intro H. intros.
  elim (rem_112 X5 (cons (noncea_current X1) nil) H);  intros.
  apply (rem_735 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_737 : forall X1 X2 X3 X4 X5:term, auto_knows_current X3 -> auto_knows_current (cons X5 (cons (noncea_current X1) nil)) -> auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current (cons X5 (cons (noncea_current X1) nil)) -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_736 X1 X2 X3 X4 X5).
Qed.

Remark rem_738 : forall X1 X2 X3 X4 X5:term, auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2. intro H. intros.
  elim (rem_112 X3 (cons X5 (cons (noncea_current X1) nil)) H);  intros.
  apply (rem_737 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_739 : forall X1 X2 X3 X4 X5:term, auto_knows_current (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto_knows_current (key sym (cons X1 (cons server nil))) -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_738 X1 X2 X3 X4 X5).
Qed.

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

Remark rem_741 : forall X1 X2 X3 X4 X5:term, auto___def_73 (cons (noncea_current X1) nil) -> auto___type_11 X3 -> auto___type_12 X5 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_740 (noncea_current X1) nil H);  intros.
Qed.

Remark rem_742 : forall X1 X2 X3 X4 X5:term, auto___type_12 X5 -> auto___def_73 (cons (noncea_current X1) nil) -> auto___type_11 X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_73 (cons (noncea_current X1) nil) -> auto___type_11 X3 -> auto___type_12 X5 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_741 X1 X2 X3 X4 X5).
Qed.

Remark rem_743 : forall X1 X2:term, auto___def_72 (cons X1 X2) -> or_1
    (auto___type_12 X1 /\ auto___def_73 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_744 : forall X1 X2 X3 X4 X5:term, auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_11 X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_743 X5 (cons (noncea_current X1) nil) H);  intros.
  apply (rem_742 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_745 : forall X1 X2 X3 X4 X5:term, auto___def_22 (cons server nil) -> auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_11 X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_11 X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_744 X1 X2 X3 X4 X5).
Qed.

Remark rem_746 : forall X1 X2 X3 X4 X5:term, auto_agent X1 -> auto___def_22 (cons server nil) -> auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_11 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_22 (cons server nil) -> auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_11 X3 -> auto_agent X1 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_745 X1 X2 X3 X4 X5).
Qed.

Remark rem_747 : forall X1 X2:term, auto___def_21 (cons X1 X2) -> or_1
    (auto_agent X1 /\ auto___def_22 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_748 : forall X1 X2 X3 X4 X5:term, auto___def_21 (cons X1 (cons server nil)) -> auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_11 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_747 X1 (cons server nil) H);  intros.
  apply (rem_746 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_749 : forall X1 X2 X3 X4 X5:term, auto___def_20 sym -> auto___def_21 (cons X1 (cons server nil)) -> auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_11 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_21 (cons X1 (cons server nil)) -> auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_11 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_748 X1 X2 X3 X4 X5).
Qed.

Remark rem_750 : forall X1 X2 X3 X4 X5:term, auto___def_71 (key sym (cons X1 (cons server nil))) -> auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_11 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_461 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_749 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_751 : forall X1 X2 X3 X4 X5:term, auto___type_11 X3 -> auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_71 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_71 (key sym (cons X1 (cons server nil))) -> auto___def_72 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_11 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_750 X1 X2 X3 X4 X5).
Qed.

Remark rem_752 : forall X1 X2:term, auto___def_70 (cons X1 X2) -> or_1
    (auto___type_11 X1 /\ auto___def_72 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_753 : forall X1 X2 X3 X4 X5:term, auto___def_70 (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_71 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_752 X3 (cons X5 (cons (noncea_current X1) nil)) H);  intros.
  apply (rem_751 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_754 : forall X1:term, auto___def_81 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_755 : forall X1 X2 X3 X4 X5:term, auto___def_81 (noncea_current X1) -> auto___def_94 (cons X1 (cons server nil)) -> auto___type_14 X5 -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_754 X1 H);  intros.
Qed.

Remark rem_756 : forall X1 X2 X3 X4 X5:term, auto___def_81 (noncea_current X1) -> auto___def_93 nil -> auto___def_94 (cons X1 (cons server nil)) -> auto___type_14 X5 -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_81 (noncea_current X1) -> auto___def_94 (cons X1 (cons server nil)) -> auto___type_14 X5 -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_755 X1 X2 X3 X4 X5).
Qed.

Remark rem_757 : forall X1 X2:term, auto___def_92 (cons X1 X2) -> or_1
    (auto___def_81 X1 /\ auto___def_93 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_758 : forall X1 X2 X3 X4 X5:term, auto___def_92 (cons (noncea_current X1) nil) -> auto___def_94 (cons X1 (cons server nil)) -> auto___type_14 X5 -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_757 (noncea_current X1) nil H);  intros.
  apply (rem_756 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_759 : forall X1 X2 X3 X4 X5:term, auto___type_14 X5 -> auto___def_92 (cons (noncea_current X1) nil) -> auto___def_94 (cons X1 (cons server nil)) -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_92 (cons (noncea_current X1) nil) -> auto___def_94 (cons X1 (cons server nil)) -> auto___type_14 X5 -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_758 X1 X2 X3 X4 X5).
Qed.

Remark rem_760 : forall X1 X2:term, auto___def_91 (cons X1 X2) -> or_1
    (auto___type_14 X1 /\ auto___def_92 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_761 : forall X1 X2 X3 X4 X5:term, auto___def_91 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_94 (cons X1 (cons server nil)) -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_760 X5 (cons (noncea_current X1) nil) H);  intros.
  apply (rem_759 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_762 : forall X1 X2 X3 X4 X5:term, auto___def_83 sym -> auto___def_91 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_94 (cons X1 (cons server nil)) -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_91 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_94 (cons X1 (cons server nil)) -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_761 X1 X2 X3 X4 X5).
Qed.

Remark rem_763 : forall X1 X2 X3 X4 X5:term, auto___def_83 sym -> auto___def_94 (cons X1 (cons server nil)) -> auto___def_91 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_83 sym -> auto___def_91 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_94 (cons X1 (cons server nil)) -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_762 X1 X2 X3 X4 X5).
Qed.

Remark rem_764 : forall X1 X2 X3 X4 X5:term, auto___def_90 (key sym (cons X1 (cons server nil))) -> auto___def_91 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_470 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_763 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_765 : forall X1 X2 X3 X4 X5:term, auto___type_16 X3 -> auto___def_91 (cons X5 (cons (noncea_current X1) nil)) -> auto___def_90 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_90 (key sym (cons X1 (cons server nil))) -> auto___def_91 (cons X5 (cons (noncea_current X1) nil)) -> auto___type_16 X3 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_764 X1 X2 X3 X4 X5).
Qed.

Remark rem_766 : forall X1 X2:term, auto___def_89 (cons X1 X2) -> or_1
    (auto___type_16 X1 /\ auto___def_91 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_767 : forall X1 X2 X3 X4 X5:term, auto___def_89 (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_90 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_766 X3 (cons X5 (cons (noncea_current X1) nil)) H);  intros.
  apply (rem_765 X1 X2 X3 X4 X5);  tauto.
Qed.

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

Remark rem_769 : forall X1 X2 X3 X4 X5:term, auto___def_84 (cons X1 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_768 X1 (cons server nil) H);  intros.
Qed.

Remark rem_770 : forall X1 X2 X3 X4 X5:term, auto___def_83 sym -> auto___def_84 (cons X1 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_84 (cons X1 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_769 X1 X2 X3 X4 X5).
Qed.

Remark rem_771 : forall X1 X2 X3 X4 X5:term, auto___def_81 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_477 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_770 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_772 : forall X1 X2 X3 X4 X5:term, auto_knows_current (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_81 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_81 (key sym (cons X1 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (cons X3 (cons X5 (cons (noncea_current X1) nil))) -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_771 X1 X2 X3 X4 X5).
Qed.

Remark rem_773 : forall X1 X2 X3 X4 X5:term, auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2. intro H. intros.
  elim (rem_109 (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil))) H);  intros.
  apply (rem_690 X1 X2 X3 X4 X5);  tauto.
  apply (rem_704 X1 X2 X3 X4 X5);  tauto.
  apply (rem_722 X1 X2 X3 X4 X5);  tauto.
  apply (rem_739 X1 X2 X3 X4 X5);  tauto.
  apply (rem_753 X1 X2 X3 X4 X5);  tauto.
  apply (rem_767 X1 X2 X3 X4 X5);  tauto.
  apply (rem_772 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_774 : forall X1 X2 X3 X4 X5:term, auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto_knows_current nil -> auto___def_95 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto___def_95 X1 X2 X3 X4 X5). tauto.
  exact (rem_773 X1 X2 X3 X4 X5).
Qed.

Remark rem_775 : forall X1 X2 X3 X4 X5:term, auto_knows_current X2 -> auto_knows_current nil -> auto_knows_current X4 -> auto_knows_current (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto_knows_current nil -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_774 X1 X2 X3 X4 X5).
Qed.

Remark rem_776 : forall X1 X2 X3 X4 X5:term, auto_knows_current X4 -> auto_knows_current (cons X2 nil) -> auto_knows_current (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1. intro H. intros.
  elim (rem_112 X2 nil H);  intros.
  apply (rem_775 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_777 : forall X1 X2 X3 X4 X5:term, auto_knows_current (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto_knows_current (cons X2 nil) -> auto_knows_current X4 -> auto___def_95 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X4 -> auto_knows_current (cons X2 nil) -> auto_knows_current (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto___def_95 X1 X2 X3 X4 X5). tauto. exact (rem_776 X1 X2 X3 X4 X5).
Qed.

Remark rem_778 : forall X1 X2 X3 X4 X5:term, auto_knows_current X4 -> auto_knows_current (cons (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) (cons X2 nil)) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1. intro H. intros.
  elim (rem_112 (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) (cons X2 nil) H);  intros.
  apply (rem_777 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_779 : forall X1 X2 X3 X4 X5:term, auto_knows_current (cons X4 (cons (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) (cons X2 nil))) -> auto___def_95 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_112 X4 (cons (crypt (cons X3 (cons X5 (cons (noncea_current X1) nil))) (key sym (cons X1 (cons server nil)))) (cons X2 nil)) H);  intros.
  apply (rem_778 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_780 : auto___def_34 sym. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_34_sym_1;  tauto.
 tauto.
Qed.

Remark rem_781 : (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_782 : (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_781 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_783 : auto_knows_old bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_784 : (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_783 H);  intros.
  apply (rem_782 epsilon_mknows_old_p__type_3);  tauto.
Defined.

Remark rem_785 : (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_781 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_786 : auto_knows_old alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_787 : (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_786 H);  intros.
  apply (rem_785 epsilon_mknows_old_p__type_3);  tauto.
Defined.

Remark rem_788 : (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_789 : (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_788 epsilon_mknows_old_p__type_3 X1);  assumption.
  tauto.
Defined.

Remark rem_790 : (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_789 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_791 : 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_792 : (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_791 X1 H);  intros.
  apply (rem_790 epsilon_mknows_old_p__type_3 X1);  tauto.
Defined.

Remark rem_793 : (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_781 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_794 : auto_knows_old server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_795 : (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_794 H);  intros.
  apply (rem_793 epsilon_mknows_old_p__type_3);  tauto.
Defined.

Remark rem_796 : (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_781 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_797 : auto_knows_old nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_798 : (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_797 H);  intros.
  apply (rem_796 epsilon_mknows_old_p__type_3);  tauto.
Defined.

Remark rem_799 : (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_781 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_800 : auto_knows_old i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_801 : (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_800 H);  intros.
  apply (rem_799 epsilon_mknows_old_p__type_3);  tauto.
Defined.

Remark rem_802 : (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_803 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 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_802 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_804 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_805 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_804 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_806 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 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_803 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_805 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_807 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 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_806 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_808 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_809 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_808 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_810 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_811 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_810 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_812 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_809 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_811 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_813 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 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_812 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_814 : (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_293 X1 X2 H);  intros.
  apply (rem_807 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_813 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
Defined.

Remark rem_815 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_788 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_816 : (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_817 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_816 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_818 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X3:term, auto_knows_old X3 -> auto_knows_old X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_819 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_818 epsilon_mknows_old_p__type_3 X3).
Defined.

Remark rem_820 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_815 epsilon_mknows_old_p__type_3 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_817 epsilon_mknows_old_p__type_3 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_819 epsilon_mknows_old_p__type_3 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_821 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_3 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_820 epsilon_mknows_old_p__type_3 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p__type_3 A1 A2 A3. intros. apply trans___type_3_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2 A3. tauto.
Defined.

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

Remark rem_823 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2 X3:term, auto_knows_old (nonceb_old X1 X2 X3) -> auto___type_3 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2 X3. intro H. intros.
  elim (rem_822 X1 X2 X3 H);  intros.
  apply (rem_821 epsilon_mknows_old_p__type_3 X1 X2 X3);  tauto.
Defined.

Remark rem_824 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_825 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_824 epsilon_mknows_old_p__type_3 X1);  assumption.
  tauto.
Defined.

Remark rem_826 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto_agent X1 -> auto___type_3 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1. intros A1.
  case (rem_825 epsilon_mknows_old_p__type_3 X1 A1). clear  epsilon_mknows_old_p__type_3 A1. intros. apply trans___type_3_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1. tauto.
Defined.

Remark rem_827 : forall X1:term, auto_knows_old (noncea_old X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_828 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto_knows_old (noncea_old X1) -> auto___type_3 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1. intro H. intros.
  elim (rem_827 X1 H);  intros.
  apply (rem_826 epsilon_mknows_old_p__type_3 X1);  tauto.
Defined.

Remark rem_829 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_16 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_830 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_829 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_831 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_832 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_831 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_833 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_830 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_832 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_834 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 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_833 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_835 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_836 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_835 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_837 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_838 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_837 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_839 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_836 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_838 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_840 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 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_839 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_841 : (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_788 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_842 : (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_843 : (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_842 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_844 : (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_841 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_843 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_845 : (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_844 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_846 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_847 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_846 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_848 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_849 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_848 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_850 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_847 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_849 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_851 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 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_850 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_852 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1:term, auto___type_4 X1 -> auto___type_4 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_853 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_852 epsilon_mknows_old_p__type_3 X1).
Defined.

Remark rem_854 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_855 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_854 epsilon_mknows_old_p__type_3 X2).
Defined.

Remark rem_856 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_3. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_853 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_855 epsilon_mknows_old_p__type_3 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_857 : (forall X:term, auto_knows_old X -> auto___type_3 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 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_856 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_5;  tauto.
 clear  epsilon_mknows_old_p__type_3 A1 A2. tauto.
Defined.

Remark rem_858 : (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_313 X1 X2 H);  intros.
  apply (rem_834 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_840 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_845 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_851 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
  apply (rem_857 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
Defined.

Remark rem_859 : (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_844 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_860 : 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_861 : (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_860 X1 X2 H);  intros.
  apply (rem_859 epsilon_mknows_old_p__type_3 X1 X2);  tauto.
Defined.

Remark rem_862 : auto_knows_old sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_863 : auto_knows_old prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_864 : forall X1:term, auto_knows_old (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_865 : auto_knows_old pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_866 : forall X1 X2 X3:term, auto_knows_old (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_867 : forall X1 X2 X3 X4:term, auto_knows_old (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_868 : forall X1 X2 X3 X4:term, auto_knows_old (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_869 : 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_787 epsilon_mknows_old_p__type_3 ).
  exact (rem_784 epsilon_mknows_old_p__type_3 ).
  intros X1 X2;  exact (rem_861 epsilon_mknows_old_p__type_3 X1 X2).
  intros X1 X2;  exact (rem_858 epsilon_mknows_old_p__type_3 X1 X2).
  exact (rem_801 epsilon_mknows_old_p__type_3 ).
  intros X1 X2;  exact (rem_814 epsilon_mknows_old_p__type_3 X1 X2).
  exact (rem_798 epsilon_mknows_old_p__type_3 ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_828 epsilon_mknows_old_p__type_3 X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_823 epsilon_mknows_old_p__type_3 X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_792 epsilon_mknows_old_p__type_3 X1).
  exact (rem_795 epsilon_mknows_old_p__type_3 ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Qed.

Remark rem_870 : 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_869 X1).
Qed.

Remark rem_871 : forall X1 X2:term, auto___def_10 X2 X1 -> auto___type_3 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_266 X2 X1 H);  intros.
  apply (rem_870 X1 X2);  tauto.
Qed.

Remark rem_872 : auto___def_73 nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_73_nil_1;  tauto.
 tauto.
Qed.

Remark rem_873 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_4.  tauto.
Defined.

Remark rem_874 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> auto___type_4 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4.  case (rem_873 epsilon_mknows_old_p__type_4). clear  epsilon_mknows_old_p__type_4. intros. apply trans___type_4_bob_1;  tauto.
 clear  epsilon_mknows_old_p__type_4. tauto.
Defined.

Remark rem_875 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> auto_knows_old bob -> auto___type_4 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intro H. intros.
  elim (rem_783 H);  intros.
  apply (rem_874 epsilon_mknows_old_p__type_4);  tauto.
Defined.

Remark rem_876 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> auto___type_4 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4.  case (rem_873 epsilon_mknows_old_p__type_4). clear  epsilon_mknows_old_p__type_4. intros. apply trans___type_4_alice_1;  tauto.
 clear  epsilon_mknows_old_p__type_4. tauto.
Defined.

Remark rem_877 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> auto_knows_old alice -> auto___type_4 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intro H. intros.
  elim (rem_786 H);  intros.
  apply (rem_876 epsilon_mknows_old_p__type_4);  tauto.
Defined.

Remark rem_878 : (forall X:term, auto_knows_old 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_879 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_878 epsilon_mknows_old_p__type_4 X1);  assumption.
  tauto.
Defined.

Remark rem_880 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_4 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1. intros A1.
  case (rem_879 epsilon_mknows_old_p__type_4 X1 A1). clear  epsilon_mknows_old_p__type_4 A1. intros. apply trans___type_4_s_1;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1. tauto.
Defined.

Remark rem_881 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1:term, auto_knows_old (s X1) -> auto___type_4 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1. intro H. intros.
  elim (rem_791 X1 H);  intros.
  apply (rem_880 epsilon_mknows_old_p__type_4 X1);  tauto.
Defined.

Remark rem_882 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> auto___type_4 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4.  case (rem_873 epsilon_mknows_old_p__type_4). clear  epsilon_mknows_old_p__type_4. intros. apply trans___type_4_server_1;  tauto.
 clear  epsilon_mknows_old_p__type_4. tauto.
Defined.

Remark rem_883 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> auto_knows_old server -> auto___type_4 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intro H. intros.
  elim (rem_794 H);  intros.
  apply (rem_882 epsilon_mknows_old_p__type_4);  tauto.
Defined.

Remark rem_884 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> auto___type_4 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4.  case (rem_873 epsilon_mknows_old_p__type_4). clear  epsilon_mknows_old_p__type_4. intros. apply trans___type_4_nil_1;  tauto.
 clear  epsilon_mknows_old_p__type_4. tauto.
Defined.

Remark rem_885 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> auto_knows_old nil -> auto___type_4 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intro H. intros.
  elim (rem_797 H);  intros.
  apply (rem_884 epsilon_mknows_old_p__type_4);  tauto.
Defined.

Remark rem_886 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> auto___type_4 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4.  case (rem_873 epsilon_mknows_old_p__type_4). clear  epsilon_mknows_old_p__type_4. intros. apply trans___type_4_i_1;  tauto.
 clear  epsilon_mknows_old_p__type_4. tauto.
Defined.

Remark rem_887 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> auto_knows_old i -> auto___type_4 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intro H. intros.
  elim (rem_800 H);  intros.
  apply (rem_886 epsilon_mknows_old_p__type_4);  tauto.
Defined.

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

Remark rem_889 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_888 epsilon_mknows_old_p__type_4 X1).
Defined.

Remark rem_890 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_891 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_890 epsilon_mknows_old_p__type_4 X2).
Defined.

Remark rem_892 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_889 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_891 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_893 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_4 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  case (rem_892 epsilon_mknows_old_p__type_4 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_4 A1 A2. intros. apply trans___type_4_key_1;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1 A2. tauto.
Defined.

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

Remark rem_895 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_894 epsilon_mknows_old_p__type_4 X1).
Defined.

Remark rem_896 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_897 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_896 epsilon_mknows_old_p__type_4 X2).
Defined.

Remark rem_898 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_895 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_897 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_899 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_4 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  case (rem_898 epsilon_mknows_old_p__type_4 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_4 A1 A2. intros. apply trans___type_4_key_2;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1 A2. tauto.
Defined.

Remark rem_900 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto___type_4 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intro H. intros.
  elim (rem_293 X1 X2 H);  intros.
  apply (rem_893 epsilon_mknows_old_p__type_4 X1 X2);  tauto.
  apply (rem_899 epsilon_mknows_old_p__type_4 X1 X2);  tauto.
Defined.

Remark rem_901 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_878 epsilon_mknows_old_p__type_4 X1).
Defined.

Remark rem_902 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_903 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_902 epsilon_mknows_old_p__type_4 X2).
Defined.

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

Remark rem_905 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_904 epsilon_mknows_old_p__type_4 X3).
Defined.

Remark rem_906 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_901 epsilon_mknows_old_p__type_4 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_903 epsilon_mknows_old_p__type_4 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_905 epsilon_mknows_old_p__type_4 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_907 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_4 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_906 epsilon_mknows_old_p__type_4 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p__type_4 A1 A2 A3. intros. apply trans___type_4_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1 A2 A3. tauto.
Defined.

Remark rem_908 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2 X3:term, auto_knows_old (nonceb_old X1 X2 X3) -> auto___type_4 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2 X3. intro H. intros.
  elim (rem_822 X1 X2 X3 H);  intros.
  apply (rem_907 epsilon_mknows_old_p__type_4 X1 X2 X3);  tauto.
Defined.

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

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

Remark rem_911 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1:term, auto_agent X1 -> auto___type_4 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1. intros A1.
  case (rem_910 epsilon_mknows_old_p__type_4 X1 A1). clear  epsilon_mknows_old_p__type_4 A1. intros. apply trans___type_4_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1. tauto.
Defined.

Remark rem_912 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1:term, auto_knows_old (noncea_old X1) -> auto___type_4 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1. intro H. intros.
  elim (rem_827 X1 H);  intros.
  apply (rem_911 epsilon_mknows_old_p__type_4 X1);  tauto.
Defined.

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

Remark rem_914 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_913 epsilon_mknows_old_p__type_4 X1).
Defined.

Remark rem_915 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_916 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_915 epsilon_mknows_old_p__type_4 X2).
Defined.

Remark rem_917 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_914 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_916 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_918 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_4 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  case (rem_917 epsilon_mknows_old_p__type_4 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_4 A1 A2. intros. apply trans___type_4_crypt_1;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1 A2. tauto.
Defined.

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

Remark rem_920 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_919 epsilon_mknows_old_p__type_4 X1).
Defined.

Remark rem_921 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_922 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_921 epsilon_mknows_old_p__type_4 X2).
Defined.

Remark rem_923 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_920 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_922 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_924 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_4 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  case (rem_923 epsilon_mknows_old_p__type_4 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_4 A1 A2. intros. apply trans___type_4_crypt_2;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1 A2. tauto.
Defined.

Remark rem_925 : (forall X:term, auto_knows_old X -> auto___type_4 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_4. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_878 epsilon_mknows_old_p__type_4 X1).
Defined.

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

Remark rem_927 : (forall X:term, auto_knows_old X -> auto___type_4 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_4. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_926 epsilon_mknows_old_p__type_4 X2).
Defined.

Remark rem_928 : (forall X:term, auto_knows_old X -> auto___type_4 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_4. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_925 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_927 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_929 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_4 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  case (rem_928 epsilon_mknows_old_p__type_4 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_4 A1 A2. intros. apply trans___type_4_crypt_3;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1 A2. tauto.
Defined.

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

Remark rem_931 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_930 epsilon_mknows_old_p__type_4 X1).
Defined.

Remark rem_932 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_933 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_932 epsilon_mknows_old_p__type_4 X2).
Defined.

Remark rem_934 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_931 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_933 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_935 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_4 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  case (rem_934 epsilon_mknows_old_p__type_4 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_4 A1 A2. intros. apply trans___type_4_crypt_4;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1 A2. tauto.
Defined.

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

Remark rem_937 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_936 epsilon_mknows_old_p__type_4 X1).
Defined.

Remark rem_938 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_939 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_938 epsilon_mknows_old_p__type_4 X2).
Defined.

Remark rem_940 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_937 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_939 epsilon_mknows_old_p__type_4 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_941 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  case (rem_940 epsilon_mknows_old_p__type_4 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_4 A1 A2. intros. apply trans___type_4_crypt_5;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1 A2. tauto.
Defined.

Remark rem_942 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto___type_4 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intro H. intros.
  elim (rem_313 X1 X2 H);  intros.
  apply (rem_918 epsilon_mknows_old_p__type_4 X1 X2);  tauto.
  apply (rem_924 epsilon_mknows_old_p__type_4 X1 X2);  tauto.
  apply (rem_929 epsilon_mknows_old_p__type_4 X1 X2);  tauto.
  apply (rem_935 epsilon_mknows_old_p__type_4 X1 X2);  tauto.
  apply (rem_941 epsilon_mknows_old_p__type_4 X1 X2);  tauto.
Defined.

Remark rem_943 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_4 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intros A1 A2.
  case (rem_928 epsilon_mknows_old_p__type_4 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_4 A1 A2. intros. apply trans___type_4_cons_1;  tauto.
 clear  epsilon_mknows_old_p__type_4 A1 A2. tauto.
Defined.

Remark rem_944 : (forall X:term, auto_knows_old X -> auto___type_4 X)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto___type_4 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_4. intros X1 X2. intro H. intros.
  elim (rem_860 X1 X2 H);  intros.
  apply (rem_943 epsilon_mknows_old_p__type_4 X1 X2);  tauto.
Defined.

Remark rem_945 : forall X1:term, auto_knows_old X1 -> auto___type_4 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_old_p__type_4 1.
  intro X. case X.
  exact (rem_877 epsilon_mknows_old_p__type_4 ).
  exact (rem_875 epsilon_mknows_old_p__type_4 ).
  intros X1 X2;  exact (rem_944 epsilon_mknows_old_p__type_4 X1 X2).
  intros X1 X2;  exact (rem_942 epsilon_mknows_old_p__type_4 X1 X2).
  exact (rem_887 epsilon_mknows_old_p__type_4 ).
  intros X1 X2;  exact (rem_900 epsilon_mknows_old_p__type_4 X1 X2).
  exact (rem_885 epsilon_mknows_old_p__type_4 ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_912 epsilon_mknows_old_p__type_4 X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_908 epsilon_mknows_old_p__type_4 X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_881 epsilon_mknows_old_p__type_4 X1).
  exact (rem_883 epsilon_mknows_old_p__type_4 ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Qed.

Remark rem_946 : forall X1 X2 X3 X4:term, auto___type_2 X2 -> auto___type_3 X3 -> auto_agent X4 -> auto_knows_old X4 -> auto_knows_old X1 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X1 -> auto___type_4 X1). tauto. exact (rem_945 X1).
Qed.

Remark rem_947 : forall X1 X2 X3 X4:term, auto___type_2 X2 -> auto_agent X3 -> auto_knows_old X3 -> auto_knows_old X1 -> auto___type_3 X4 -> auto___type_4 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto___type_2 X2 -> auto___type_3 X3 -> auto_agent X4 -> auto_knows_old X4 -> auto_knows_old X1 -> auto___type_4 X1). tauto. exact (rem_946 X1 X2 X3 X4).
Qed.

Remark rem_948 : forall X1 X2 X3 X4:term, auto___def_25 X2 X3 X1 X4 -> auto___type_4 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_242 X2 X3 X1 X4 H);  intros.
  apply (rem_947 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_949 : forall X1:term, auto___type_9 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_9_1. Qed.

Remark rem_950 : auto___def_82 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_951 : auto___def_82 nil -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_950 H);  intros.
Qed.

Remark rem_952 : forall X1 X2 X3 X4:term, auto___def_81 X4 -> auto___def_82 nil -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_82 nil -> False). tauto.
  exact (rem_951).
Qed.

Remark rem_953 : forall X1 X2 X3 X4:term, auto___def_80 (cons X4 nil) -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_683 X4 nil H);  intros.
  apply (rem_952 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_954 : forall X1 X2 X3 X4:term, auto___def_80 (cons X4 nil) -> auto___def_83 sym -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_80 (cons X4 nil) -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_953 X1 X2 X3 X4).
Qed.

Remark rem_955 : forall X1 X2 X3 X4:term, auto___def_83 sym -> auto___def_86 (cons X2 (cons server nil)) -> auto___def_80 (cons X4 nil) -> auto___type_14 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_80 (cons X4 nil) -> auto___def_83 sym -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_954 X1 X2 X3 X4).
Qed.

Remark rem_956 : forall X1 X2 X3 X4:term, auto___def_79 (key sym (cons X2 (cons server nil))) -> auto___def_80 (cons X4 nil) -> auto___type_14 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_438 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_955 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_957 : forall X1 X2 X3 X4:term, auto___type_14 X1 -> auto___def_80 (cons X4 nil) -> auto___def_79 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_79 (key sym (cons X2 (cons server nil))) -> auto___def_80 (cons X4 nil) -> auto___type_14 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_956 X1 X2 X3 X4).
Qed.

Remark rem_958 : forall X1 X2 X3 X4:term, auto___def_78 (cons X1 (cons X4 nil)) -> auto___def_79 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_689 X1 (cons X4 nil) H);  intros.
  apply (rem_957 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_959 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11.  tauto.
Defined.

Remark rem_960 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> auto___type_11 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11.  case (rem_959 epsilon_m__type_7_p__type_11). clear  epsilon_m__type_7_p__type_11. intros. apply trans___type_11_bob_1;  tauto.
 clear  epsilon_m__type_7_p__type_11. tauto.
Defined.

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

Remark rem_962 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> auto___type_7 bob -> auto___type_11 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intro H. intros.
  elim (rem_961 H);  intros.
  apply (rem_960 epsilon_m__type_7_p__type_11);  tauto.
Defined.

Remark rem_963 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> auto___type_11 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11.  case (rem_959 epsilon_m__type_7_p__type_11). clear  epsilon_m__type_7_p__type_11. intros. apply trans___type_11_alice_1;  tauto.
 clear  epsilon_m__type_7_p__type_11. tauto.
Defined.

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

Remark rem_965 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> auto___type_7 alice -> auto___type_11 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intro H. intros.
  elim (rem_964 H);  intros.
  apply (rem_963 epsilon_m__type_7_p__type_11);  tauto.
Defined.

Remark rem_966 : (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_967 : (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_966 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_968 : (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_783 H);  intros.
  apply (rem_967 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_969 : (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_966 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_970 : (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_786 H);  intros.
  apply (rem_969 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_971 : (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_972 : (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_971 epsilon_mknows_old_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_973 : (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_972 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_974 : (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_791 X1 H);  intros.
  apply (rem_973 epsilon_mknows_old_pknows_current X1);  tauto.
Defined.

Remark rem_975 : (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_966 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_976 : (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_794 H);  intros.
  apply (rem_975 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_977 : (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_966 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_978 : (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_797 H);  intros.
  apply (rem_977 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_979 : (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_966 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_980 : (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_800 H);  intros.
  apply (rem_979 epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_981 : (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_982 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 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_981 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_983 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_984 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_983 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_985 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 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_982 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_984 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_986 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 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_985 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_987 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_988 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_987 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_989 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_990 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_989 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_991 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_988 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_990 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_992 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 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_991 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_993 : (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_293 X1 X2 H);  intros.
  apply (rem_986 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_992 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_994 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_995 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_994 epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_996 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_822 X1 X2 X3 H);  intros.
  apply (rem_995 epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_997 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_998 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intros A1.
  case (rem_997 epsilon_mknows_old_pknows_current X1 A1). clear  epsilon_mknows_old_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current A1. tauto.
Defined.

Remark rem_999 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1. intro H. intros.
  elim (rem_827 X1 H);  intros.
  apply (rem_998 epsilon_mknows_old_pknows_current X1);  tauto.
Defined.

Remark rem_1000 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  tauto.
Defined.

Remark rem_1001 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_1000 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_bob_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

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

Remark rem_1003 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 bob -> auto___type_11 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1002 H);  intros.
  apply (rem_1001 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_1004 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_1000 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_alice_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

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

Remark rem_1006 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 alice -> auto___type_11 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1005 H);  intros.
  apply (rem_1004 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_1007 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intro H. clear H. intro H. clear H. intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1008 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1007 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_1009 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_11 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_1008 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans___type_11_s_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

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

Remark rem_1011 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_2 (s X1) -> auto___type_11 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1010 X1 H);  intros.
  apply (rem_1009 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_1012 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_1000 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_server_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

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

Remark rem_1014 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 server -> auto___type_11 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1013 H);  intros.
  apply (rem_1012 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_1015 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_1000 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_nil_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

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

Remark rem_1017 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 nil -> auto___type_11 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1016 H);  intros.
  apply (rem_1015 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_1018 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_1000 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_i_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

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

Remark rem_1020 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 i -> auto___type_11 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1019 H);  intros.
  apply (rem_1018 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_1021 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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_1022 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1021 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1023 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1024 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1023 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1025 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1022 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1024 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1026 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1025 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_key_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1027 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1028 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_1027 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1029 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1030 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_1029 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1031 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_1028 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_1030 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1032 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1031 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_key_2;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1033 : forall X1 X2:term, auto___type_2 (key X1 X2) -> or_2
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_1034 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (key X1 X2) -> auto___type_11 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1033 X1 X2 H);  intros.
  apply (rem_1026 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_1032 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1035 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_1036 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_11 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1035 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. intros. apply trans___type_11_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. tauto.
Defined.

Remark rem_1037 : forall X1 X2 X3:term, auto___type_2 (nonceb_old X1 X2 X3) -> or_1
    (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1038 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_2 (nonceb_old X1 X2 X3) -> auto___type_11 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_1037 X1 X2 X3 H);  intros.
  apply (rem_1036 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_1039 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  tauto.
Defined.

Remark rem_1040 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto___type_11 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_1039 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans___type_11_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_1041 : forall X1:term, auto___type_2 (noncea_old X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1042 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_2 (noncea_old X1) -> auto___type_11 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1041 X1 H);  intros.
  apply (rem_1040 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_1043 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intro H. clear H. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1044 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_1043 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1045 : (forall X:term, auto___def_17 X -> auto___def_71 X)
    -> forall X1:term, auto___def_20 X1 -> auto___def_20 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1046 : (forall X:term, auto___def_17 X -> auto___def_71 X)
    -> forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> auto___def_20 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_17_p__def_71. intros X1 X2.
  cut (auto___def_20 X1 -> auto___def_20 X1). tauto. exact (rem_1045 epsilon_m__def_17_p__def_71 X1).
Defined.

Remark rem_1047 : (forall X:term, auto___def_17 X -> auto___def_71 X)
    -> forall X2:term, auto___def_21 X2 -> auto___def_21 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1048 : (forall X:term, auto___def_17 X -> auto___def_71 X)
    -> forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> auto___def_21 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_17_p__def_71. intros X1 X2.
  cut (auto___def_21 X2 -> auto___def_21 X2). tauto. exact (rem_1047 epsilon_m__def_17_p__def_71 X2).
Defined.

Remark rem_1049 : (forall X:term, auto___def_17 X -> auto___def_71 X)
    -> forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> (auto___def_20 X1 /\ auto___def_21 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_17_p__def_71. intros X1 X2. intros A1 A2.
  cut (auto___def_20 X1). 2:apply (rem_1046 epsilon_m__def_17_p__def_71 X1 X2);  assumption.
  cut (auto___def_21 X2). 2:apply (rem_1048 epsilon_m__def_17_p__def_71 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1050 : (forall X:term, auto___def_17 X -> auto___def_71 X)
    -> forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> auto___def_71 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_17_p__def_71. intros X1 X2. intros A1 A2.
  case (rem_1049 epsilon_m__def_17_p__def_71 X1 X2 A1 A2). clear  epsilon_m__def_17_p__def_71 A1 A2. intros. apply trans___def_71_key_1;  tauto.
 clear  epsilon_m__def_17_p__def_71 A1 A2. tauto.
Defined.

Remark rem_1051 : (forall X:term, auto___def_17 X -> auto___def_71 X)
    -> forall X1 X2:term, auto___def_17 (key X1 X2) -> auto___def_71 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_17_p__def_71. intros X1 X2. intro H. intros.
  elim (rem_275 X1 X2 H);  intros.
  apply (rem_1050 epsilon_m__def_17_p__def_71 X1 X2);  tauto.
Defined.

Remark rem_1052 : auto___def_17 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1053 : auto___def_17 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1054 : auto___def_17 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1055 : auto___def_17 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1057 : auto___def_17 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1058 : auto___def_17 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1059 : auto___def_17 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1060 : forall X1:term, auto___def_17 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1061 : forall X1 X2 X3:term, auto___def_17 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1062 : auto___def_17 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1063 : forall X1:term, auto___def_17 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1064 : forall X1 X2 X3:term, auto___def_17 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_1067 : forall X1 X2 X3 X4:term, auto___def_17 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1068 : forall X1 X2 X3 X4:term, auto___def_17 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1069 : forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_17_p__def_71 1.
  intro X. case X.
   intro H. elim (rem_1055  H).
   intro H. elim (rem_1052  H).
  intros X1 X2. intro H. elim (rem_1066 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1065 X1 X2 H).
   intro H. elim (rem_1059  H).
  intros X1 X2;  exact (rem_1051 epsilon_m__def_17_p__def_71 X1 X2).
   intro H. elim (rem_1058  H).
  intros X1. intro H. elim (rem_1060 X1 H).
  intros X1. intro H. elim (rem_1063 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1064 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1061 X1 X2 X3 H).
   intro H. elim (rem_1054  H).
   intro H. elim (rem_1062  H).
  intros X1. intro H. elim (rem_1056 X1 H).
   intro H. elim (rem_1057  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1067 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1068 X1 X2 X3 X4 H).
   intro H. elim (rem_1053  H).
Qed.

Remark rem_1070 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1069).
Defined.

Remark rem_1071 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_1070 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1072 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1044 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_1071 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1073 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1072 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_5;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1074 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1075 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_1074 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1076 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1077 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_1076 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1078 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_1075 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_1077 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1079 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1078 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_2;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1080 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_1007 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1081 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intro H. clear H. intro H. clear H. intros X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_1082 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_1081 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1083 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1080 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1082 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1084 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 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_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1083 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1085 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1086 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_1085 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1087 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1088 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_1087 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1089 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_1086 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_1088 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1090 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1089 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_3;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1091 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  tauto.
Defined.

Remark rem_1092 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  case (rem_1091 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

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

Remark rem_1094 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_1092 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1095 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  case (rem_1091 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

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

Remark rem_1097 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_1095 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1098 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intro H. clear H. intro H. clear H. intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1099 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1098 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1);  assumption.
  tauto.
Defined.

Remark rem_1100 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_1099 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

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

Remark rem_1102 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_1100 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_1103 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  case (rem_1091 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

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

Remark rem_1105 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_1103 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1106 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  case (rem_1091 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

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

Remark rem_1108 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_1106 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1109 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  case (rem_1091 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

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

Remark rem_1111 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_1109 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1112 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_1113 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1112 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1114 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1115 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1114 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1116 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1113 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1115 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1117 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1116 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1118 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1119 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_1118 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1120 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1121 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_1120 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1122 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_1119 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_1121 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1123 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1122 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1124 : forall X1 X2:term, auto___type_4 (key X1 X2) -> or_2
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_1125 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_1117 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1123 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1126 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_1127 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1126 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2 A3. tauto.
Defined.

Remark rem_1128 : forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> or_1
    (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1129 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_1127 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 X3);  tauto.
Defined.

Remark rem_1130 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  tauto.
Defined.

Remark rem_1131 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_1130 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_1132 : forall X1:term, auto___type_4 (noncea_old X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1133 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_1131 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_1134 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1135 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_1134 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1136 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. exact (rem_1069).
Defined.

Remark rem_1137 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_1136 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1138 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1135 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_1137 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1139 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1138 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1140 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1141 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_1140 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1142 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1143 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_1142 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1144 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_1141 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_1143 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1145 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1144 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1146 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_1098 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1147 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intro H. clear H. intro H. clear H. intros X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_1148 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_1147 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1149 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1146 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1148 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1150 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1149 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1151 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1152 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_1151 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1153 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1154 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_1153 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1155 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_1152 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_1154 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1156 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1155 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1157 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intro H. clear H. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1158 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_1157 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1159 : (forall X:term, auto___def_34 X -> auto___def_54 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_34_p__def_54.  tauto.
Defined.

Remark rem_1160 : (forall X:term, auto___def_34 X -> auto___def_54 X)
    -> auto___def_54 sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_34_p__def_54.  case (rem_1159 epsilon_m__def_34_p__def_54). clear  epsilon_m__def_34_p__def_54. intros. apply trans___def_54_sym_1;  tauto.
 clear  epsilon_m__def_34_p__def_54. tauto.
Defined.

Remark rem_1161 : auto___def_34 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1162 : (forall X:term, auto___def_34 X -> auto___def_54 X)
    -> auto___def_34 sym -> auto___def_54 sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_34_p__def_54. intro H. intros.
  elim (rem_1161 H);  intros.
  apply (rem_1160 epsilon_m__def_34_p__def_54);  tauto.
Defined.

Remark rem_1163 : auto___def_34 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1164 : auto___def_34 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1165 : auto___def_34 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1167 : auto___def_34 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1168 : auto___def_34 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1169 : auto___def_34 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1171 : forall X1:term, auto___def_34 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1172 : forall X1 X2 X3:term, auto___def_34 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1173 : auto___def_34 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1174 : forall X1:term, auto___def_34 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1175 : forall X1 X2 X3:term, auto___def_34 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_1178 : forall X1 X2 X3 X4:term, auto___def_34 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1179 : forall X1 X2 X3 X4:term, auto___def_34 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1180 : forall X1:term, auto___def_34 X1 -> auto___def_54 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_34_p__def_54 1.
  intro X. case X.
   intro H. elim (rem_1165  H).
   intro H. elim (rem_1163  H).
  intros X1 X2. intro H. elim (rem_1177 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1176 X1 X2 H).
   intro H. elim (rem_1169  H).
  intros X1 X2. intro H. elim (rem_1170 X1 X2 H).
   intro H. elim (rem_1168  H).
  intros X1. intro H. elim (rem_1171 X1 H).
  intros X1. intro H. elim (rem_1174 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1175 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1172 X1 X2 X3 H).
   intro H. elim (rem_1164  H).
   intro H. elim (rem_1173  H).
  intros X1. intro H. elim (rem_1166 X1 H).
   intro H. elim (rem_1167  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1178 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1179 X1 X2 X3 X4 H).
  exact (rem_1162 epsilon_m__def_34_p__def_54 ).
Qed.

Remark rem_1181 : (forall X:term, auto___def_32 X -> auto_knows_current X)
    -> forall X1:term, auto___def_34 X1 -> auto___def_54 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_32_pknows_current. exact (rem_1180).
Defined.

Remark rem_1182 : (forall X:term, auto___def_32 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_34 X1 -> auto___def_35 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_32_pknows_current. intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_54 X1). tauto. exact (rem_1181 epsilon_m__def_32_pknows_current X1).
Defined.

Remark rem_1183 : (forall X:term, auto___def_35 X -> auto___def_55 X)
    -> forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto_agent X2 -> auto_knows_old X2 -> auto___type_3 X3 -> auto_knows_old X4 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_35_p__def_55. intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  tauto.
Defined.

Remark rem_1184 : (forall X:term, auto___def_35 X -> auto___def_55 X)
    -> forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto_agent X2 -> auto_knows_old X2 -> auto___type_3 X3 -> auto_knows_old X4 -> auto___def_55 (session_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_35_p__def_55. intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_1183 epsilon_m__def_35_p__def_55 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  epsilon_m__def_35_p__def_55 A1 A2 A3 A4 A5. intros. apply trans___def_55_session_old_1;  tauto.
 clear  epsilon_m__def_35_p__def_55 A1 A2 A3 A4 A5. tauto.
Defined.

Remark rem_1185 : forall X1 X2 X3 X4:term, auto___def_35 (session_old X1 X2 X3 X4) -> or_1
    (auto___type_2 X1 /\ auto_agent X2 /\ auto_knows_old X2 /\ auto___type_3 X3 /\ auto_knows_old X4)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1186 : (forall X:term, auto___def_35 X -> auto___def_55 X)
    -> forall X1 X2 X3 X4:term, auto___def_35 (session_old X1 X2 X3 X4) -> auto___def_55 (session_old X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_35_p__def_55. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1185 X1 X2 X3 X4 H);  intros.
  apply (rem_1184 epsilon_m__def_35_p__def_55 X1 X2 X3 X4);  tauto.
Defined.

Remark rem_1187 : auto___def_35 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1188 : auto___def_35 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1189 : auto___def_35 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1190 : auto___def_35 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1192 : auto___def_35 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1193 : auto___def_35 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1194 : auto___def_35 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1196 : forall X1:term, auto___def_35 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1197 : forall X1 X2 X3:term, auto___def_35 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1198 : auto___def_35 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1199 : forall X1:term, auto___def_35 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1200 : forall X1 X2 X3:term, auto___def_35 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_1203 : forall X1 X2 X3 X4:term, auto___def_35 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1204 : forall X2:term, auto___def_35 X2 -> auto___def_55 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_35_p__def_55 1.
  intro X. case X.
   intro H. elim (rem_1190  H).
   intro H. elim (rem_1187  H).
  intros X1 X2. intro H. elim (rem_1202 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1201 X1 X2 H).
   intro H. elim (rem_1194  H).
  intros X1 X2. intro H. elim (rem_1195 X1 X2 H).
   intro H. elim (rem_1193  H).
  intros X1. intro H. elim (rem_1196 X1 H).
  intros X1. intro H. elim (rem_1199 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1200 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1197 X1 X2 X3 H).
   intro H. elim (rem_1189  H).
   intro H. elim (rem_1198  H).
  intros X1. intro H. elim (rem_1191 X1 H).
   intro H. elim (rem_1192  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1203 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4;  exact (rem_1186 epsilon_m__def_35_p__def_55 X1 X2 X3 X4).
   intro H. elim (rem_1188  H).
Qed.

Remark rem_1205 : (forall X:term, auto___def_32 X -> auto_knows_current X)
    -> forall X2:term, auto___def_35 X2 -> auto___def_55 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_32_pknows_current. exact (rem_1204).
Defined.

Remark rem_1206 : (forall X:term, auto___def_32 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_34 X1 -> auto___def_35 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_32_pknows_current. intros X1 X2.
  cut (auto___def_35 X2 -> auto___def_55 X2). tauto. exact (rem_1205 epsilon_m__def_32_pknows_current X2).
Defined.

Remark rem_1207 : (forall X:term, auto___def_32 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_34 X1 -> auto___def_35 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_32_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_1182 epsilon_m__def_32_pknows_current X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_1206 epsilon_m__def_32_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1208 : (forall X:term, auto___def_32 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_34 X1 -> auto___def_35 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_32_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1207 epsilon_m__def_32_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_32_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_m__def_32_pknows_current A1 A2. tauto.
Defined.

Remark rem_1209 : (forall X:term, auto___def_32 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_32 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_32_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_310 X1 X2 H);  intros.
  apply (rem_1208 epsilon_m__def_32_pknows_current X1 X2);  tauto.
Defined.

Remark rem_1210 : auto___def_32 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1211 : auto___def_32 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1212 : auto___def_32 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1213 : auto___def_32 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1215 : auto___def_32 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1216 : auto___def_32 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1217 : auto___def_32 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1218 : forall X1 X2 X3:term, auto___def_32 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1219 : auto___def_32 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1220 : forall X1:term, auto___def_32 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1221 : forall X1 X2 X3:term, auto___def_32 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_1224 : forall X1 X2 X3 X4:term, auto___def_32 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1225 : forall X1 X2 X3 X4:term, auto___def_32 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1226 : forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_32_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_1213  H).
   intro H. elim (rem_1210  H).
  intros X1 X2. intro H. elim (rem_1223 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1222 X1 X2 H).
   intro H. elim (rem_1217  H).
  intros X1 X2;  exact (rem_1209 epsilon_m__def_32_pknows_current X1 X2).
   intro H. elim (rem_1216  H).
  intros X1. intro H. elim (rem_691 X1 H).
  intros X1. intro H. elim (rem_1220 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1221 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1218 X1 X2 X3 H).
   intro H. elim (rem_1212  H).
   intro H. elim (rem_1219  H).
  intros X1. intro H. elim (rem_1214 X1 H).
   intro H. elim (rem_1215  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1224 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1225 X1 X2 X3 X4 H).
   intro H. elim (rem_1211  H).
Qed.

Remark rem_1227 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. exact (rem_1226).
Defined.

Remark rem_1228 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_1227 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1229 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1158 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1228 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1230 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1229 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1231 : forall X1 X2:term, auto___type_4 (crypt X1 X2) -> or_5
    (auto___def_16 X1 /\ auto___def_17 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto___type_4 X1 /\ auto___def_32 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_5_intro_1; tauto.
  intros. apply or_5_intro_2; tauto.
  intros. apply or_5_intro_3; tauto.
  intros. apply or_5_intro_4; tauto.
  intros. apply or_5_intro_5; tauto.
Qed.

Remark rem_1232 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_1139 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1145 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1150 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1156 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1230 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1233 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1149 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1234 : forall X1 X2:term, auto___type_4 (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_1235 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_1233 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

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

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

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

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

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

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

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

Remark rem_1243 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_1097 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 ).
  exact (rem_1094 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_1235 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2;  exact (rem_1232 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_1111 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_1125 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_1108 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_1133 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_1129 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_1102 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
  exact (rem_1105 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_1244 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1243 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70).
Defined.

Remark rem_1245 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_1244 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1246 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1226).
Defined.

Remark rem_1247 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_1246 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1248 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1245 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1247 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1249 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1248 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1250 : forall X1 X2:term, auto___type_2 (crypt X1 X2) -> or_5
    (auto___def_16 X1 /\ auto___def_17 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto___type_4 X1 /\ auto___def_32 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_5_intro_1; tauto.
  intros. apply or_5_intro_2; tauto.
  intros. apply or_5_intro_3; tauto.
  intros. apply or_5_intro_4; tauto.
  intros. apply or_5_intro_5; tauto.
Qed.

Remark rem_1251 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (crypt X1 X2) -> auto___type_11 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1250 X1 X2 H);  intros.
  apply (rem_1073 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_1079 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_1084 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_1090 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_1249 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1252 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1083 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_cons_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1253 : forall X1 X2:term, auto___type_2 (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_1254 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (cons X1 X2) -> auto___type_11 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1253 X1 X2 H);  intros.
  apply (rem_1252 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1255 : auto___type_2 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1256 : auto___type_2 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1257 : forall X1:term, auto___type_2 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1258 : auto___type_2 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1259 : forall X1 X2 X3:term, auto___type_2 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1260 : forall X1 X2 X3 X4:term, auto___type_2 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1261 : forall X1 X2 X3 X4:term, auto___type_2 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1262 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_2 X1 -> auto___type_11 X1. (* Induct. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__type_2_p__type_11 1.
  intro X. case X.
  exact (rem_1006 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  exact (rem_1003 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_1254 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_1251 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_1020 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_1034 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_1017 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1. intro H. elim (rem_1257 X1 H).
  intros X1;  exact (rem_1042 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  intros X1 X2 X3. intro H. elim (rem_1259 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_1038 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3).
   intro H. elim (rem_1256  H).
   intro H. elim (rem_1258  H).
  intros X1;  exact (rem_1011 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  exact (rem_1014 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1260 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1261 X1 X2 X3 X4 H).
   intro H. elim (rem_1255  H).
Defined.

Remark rem_1263 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_2 X1 -> auto___type_11 X1). tauto. exact (rem_1262 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1264 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  tauto.
Defined.

Remark rem_1265 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_1264 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_bob_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1266 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 bob -> auto___type_12 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_151 H);  intros.
  apply (rem_1265 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1267 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_1264 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_alice_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1268 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 alice -> auto___type_12 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_154 H);  intros.
  apply (rem_1267 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1269 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intro H. clear H. intro H. clear H. intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1270 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1269 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  assumption.
  tauto.
Defined.

Remark rem_1271 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_12 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_1270 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans___type_12_s_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_1272 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 (s X1) -> auto___type_12 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_159 X1 H);  intros.
  apply (rem_1271 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_1273 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_1264 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_server_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1274 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 server -> auto___type_12 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_162 H);  intros.
  apply (rem_1273 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1275 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_1264 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_nil_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1276 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 nil -> auto___type_12 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_165 H);  intros.
  apply (rem_1275 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1277 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_1264 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_i_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1278 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 i -> auto___type_12 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_168 H);  intros.
  apply (rem_1277 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1279 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_1280 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1279 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1281 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1282 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1281 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1283 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1280 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1282 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1284 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1283 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_key_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1285 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1286 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_1285 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1287 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1288 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_1287 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1289 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_1286 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_1288 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1290 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1289 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_key_2;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1291 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (key X1 X2) -> auto___type_12 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_182 X1 X2 H);  intros.
  apply (rem_1284 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1290 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1292 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_1293 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_12 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1292 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. intros. apply trans___type_12_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. tauto.
Defined.

Remark rem_1294 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto___type_3 (nonceb_old X1 X2 X3) -> auto___type_12 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intro H. intros.
  elim (rem_191 X1 X2 X3 H);  intros.
  apply (rem_1293 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3);  tauto.
Defined.

Remark rem_1295 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  tauto.
Defined.

Remark rem_1296 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> auto___type_12 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_1295 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans___type_12_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_1297 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 (noncea_old X1) -> auto___type_12 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_196 X1 H);  intros.
  apply (rem_1296 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_1298 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1299 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_1298 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1300 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1069).
Defined.

Remark rem_1301 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_1300 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1302 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1299 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_1301 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1303 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1302 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_5;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1304 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1305 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_1304 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1306 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1307 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_1306 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1308 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_1305 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_1307 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1309 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1308 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_2;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1310 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_1269 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1311 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intro H. clear H. intro H. clear H. intros X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_1312 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_1311 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1313 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1310 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1312 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1314 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1313 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1315 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1316 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_1315 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1317 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1318 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_1317 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1319 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_1316 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_1318 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1320 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1319 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_3;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1321 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1243 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70).
Defined.

Remark rem_1322 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_1321 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1323 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1226).
Defined.

Remark rem_1324 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_1323 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1325 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1322 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1324 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1326 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1325 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1327 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (crypt X1 X2) -> auto___type_12 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_227 X1 X2 H);  intros.
  apply (rem_1303 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1309 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1314 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1320 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1326 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1328 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_12 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1313 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_cons_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1329 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (cons X1 X2) -> auto___type_12 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_230 X1 X2 H);  intros.
  apply (rem_1328 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1330 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 X1 -> auto___type_12 X1. (* Induct. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__type_3_p__type_12 1.
  intro X. case X.
  exact (rem_1268 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  exact (rem_1266 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_1329 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2;  exact (rem_1327 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_1278 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_1291 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_1276 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1. intro H. elim (rem_234 X1 H).
  intros X1;  exact (rem_1297 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  intros X1 X2 X3. intro H. elim (rem_236 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_1294 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3).
   intro H. elim (rem_233  H).
   intro H. elim (rem_235  H).
  intros X1;  exact (rem_1272 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  exact (rem_1274 epsilon_mknows_old_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2 X3 X4. intro H. elim (rem_237 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_238 X1 X2 X3 X4 H).
   intro H. elim (rem_232  H).
Defined.

Remark rem_1331 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 X1 -> auto___type_12 X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. exact (rem_1330 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70).
Defined.

Remark rem_1332 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_3 X1 -> auto___type_12 X1). tauto. exact (rem_1331 epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1333 : (forall X:term, auto___def_19 X -> auto___def_73 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_19_p__def_73.  tauto.
Defined.

Remark rem_1334 : (forall X:term, auto___def_19 X -> auto___def_73 X)
    -> auto___def_73 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_19_p__def_73.  case (rem_1333 epsilon_m__def_19_p__def_73). clear  epsilon_m__def_19_p__def_73. intros. apply trans___def_73_nil_1;  tauto.
 clear  epsilon_m__def_19_p__def_73. tauto.
Defined.

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

Remark rem_1336 : (forall X:term, auto___def_19 X -> auto___def_73 X)
    -> auto___def_19 nil -> auto___def_73 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_19_p__def_73. intro H. intros.
  elim (rem_1335 H);  intros.
  apply (rem_1334 epsilon_m__def_19_p__def_73);  tauto.
Defined.

Remark rem_1337 : auto___def_19 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1338 : auto___def_19 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1339 : auto___def_19 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1340 : auto___def_19 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1342 : auto___def_19 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1343 : auto___def_19 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1345 : forall X1:term, auto___def_19 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1346 : forall X1 X2 X3:term, auto___def_19 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1347 : auto___def_19 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1348 : forall X1:term, auto___def_19 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1349 : forall X1 X2 X3:term, auto___def_19 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_1352 : forall X1 X2 X3 X4:term, auto___def_19 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1353 : forall X1 X2 X3 X4:term, auto___def_19 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1354 : forall X2:term, auto___def_19 X2 -> auto___def_73 X2. (* Induct. *)
Proof.
  fix epsilon_m__def_19_p__def_73 1.
  intro X. case X.
   intro H. elim (rem_1340  H).
   intro H. elim (rem_1337  H).
  intros X1 X2. intro H. elim (rem_1351 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1350 X1 X2 H).
   intro H. elim (rem_1343  H).
  intros X1 X2. intro H. elim (rem_1344 X1 X2 H).
  exact (rem_1336 epsilon_m__def_19_p__def_73 ).
  intros X1. intro H. elim (rem_1345 X1 H).
  intros X1. intro H. elim (rem_1348 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1349 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1346 X1 X2 X3 H).
   intro H. elim (rem_1339  H).
   intro H. elim (rem_1347  H).
  intros X1. intro H. elim (rem_1341 X1 H).
   intro H. elim (rem_1342  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1352 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1353 X1 X2 X3 X4 H).
   intro H. elim (rem_1338  H).
Qed.

Remark rem_1355 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_19 X2 -> auto___def_73 X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. exact (rem_1354).
Defined.

Remark rem_1356 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_73 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_19 X2 -> auto___def_73 X2). tauto. exact (rem_1355 epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1357 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> (auto___type_12 X1 /\ auto___def_73 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_1332 epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_73 X2). 2:apply (rem_1356 epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1358 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_72 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1357 epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___def_72_cons_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1359 : forall X1 X2:term, auto___def_18 (cons X1 X2) -> or_1
    (auto___type_3 X1 /\ auto___def_19 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1360 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_18 (cons X1 X2) -> auto___def_72 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1359 X1 X2 H);  intros.
  apply (rem_1358 epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1361 : auto___def_18 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1362 : auto___def_18 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1363 : auto___def_18 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1364 : auto___def_18 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1366 : auto___def_18 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1367 : auto___def_18 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1368 : auto___def_18 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1370 : forall X1:term, auto___def_18 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1371 : forall X1 X2 X3:term, auto___def_18 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1372 : auto___def_18 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1373 : forall X1:term, auto___def_18 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1374 : forall X1 X2 X3:term, auto___def_18 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1376 : forall X1 X2 X3 X4:term, auto___def_18 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1377 : forall X1 X2 X3 X4:term, auto___def_18 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1378 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_18 X2 -> auto___def_72 X2. (* Induct. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__def_18_p__def_72 1.
  intro X. case X.
   intro H. elim (rem_1364  H).
   intro H. elim (rem_1361  H).
  intros X1 X2;  exact (rem_1360 epsilon_mknows_old_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2. intro H. elim (rem_1375 X1 X2 H).
   intro H. elim (rem_1368  H).
  intros X1 X2. intro H. elim (rem_1369 X1 X2 H).
   intro H. elim (rem_1367  H).
  intros X1. intro H. elim (rem_1370 X1 H).
  intros X1. intro H. elim (rem_1373 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1374 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1371 X1 X2 X3 H).
   intro H. elim (rem_1363  H).
   intro H. elim (rem_1372  H).
  intros X1. intro H. elim (rem_1365 X1 H).
   intro H. elim (rem_1366  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1376 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1377 X1 X2 X3 X4 H).
   intro H. elim (rem_1362  H).
Defined.

Remark rem_1379 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_18 X2 -> auto___def_72 X2). tauto. exact (rem_1378 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1380 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> (auto___type_11 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_1263 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_1379 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1381 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_70 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1380 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___def_70_cons_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1382 : forall X1 X2:term, auto___def_16 (cons X1 X2) -> or_1
    (auto___type_2 X1 /\ auto___def_18 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1383 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 (cons X1 X2) -> auto___def_70 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1382 X1 X2 H);  intros.
  apply (rem_1381 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1384 : auto___def_16 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1385 : auto___def_16 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1386 : auto___def_16 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1387 : auto___def_16 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1389 : auto___def_16 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1390 : auto___def_16 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1391 : auto___def_16 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1393 : forall X1:term, auto___def_16 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1394 : forall X1 X2 X3:term, auto___def_16 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1395 : auto___def_16 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1396 : forall X1:term, auto___def_16 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1397 : forall X1 X2 X3:term, auto___def_16 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1399 : forall X1 X2 X3 X4:term, auto___def_16 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1400 : forall X1 X2 X3 X4:term, auto___def_16 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1401 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Induct. *)
Proof.
  intros epsilon_mknows_old_pknows_current. fix epsilon_m__def_16_p__def_70 1.
  intro X. case X.
   intro H. elim (rem_1387  H).
   intro H. elim (rem_1384  H).
  intros X1 X2;  exact (rem_1383 epsilon_mknows_old_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2. intro H. elim (rem_1398 X1 X2 H).
   intro H. elim (rem_1391  H).
  intros X1 X2. intro H. elim (rem_1392 X1 X2 H).
   intro H. elim (rem_1390  H).
  intros X1. intro H. elim (rem_1393 X1 H).
  intros X1. intro H. elim (rem_1396 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1397 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1394 X1 X2 X3 H).
   intro H. elim (rem_1386  H).
   intro H. elim (rem_1395  H).
  intros X1. intro H. elim (rem_1388 X1 H).
   intro H. elim (rem_1389  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1399 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1400 X1 X2 X3 X4 H).
   intro H. elim (rem_1385  H).
Defined.

Remark rem_1402 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_1401 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_1403 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current. exact (rem_1069).
Defined.

Remark rem_1404 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_1403 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_1405 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1402 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_1404 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1406 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 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_1405 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_1407 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1408 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_1407 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_1409 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1410 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_1409 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_1411 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_1408 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_1410 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1412 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 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_1411 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_1413 : (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_971 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_1414 : (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_1415 : (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_1414 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_1416 : (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_1413 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1415 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1417 : (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_1416 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_1418 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1419 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_1418 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_1420 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1421 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_1420 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_1422 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_1419 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_1421 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1423 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 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_1422 epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_1424 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  tauto.
Defined.

Remark rem_1425 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  case (rem_1424 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_1426 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_1425 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_1427 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  case (rem_1424 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_1428 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_1427 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_1429 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intro H. clear H. intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1430 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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 epsilon_m__type_4_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1429 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_1431 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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 epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_1430 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_1432 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_1431 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_1433 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  case (rem_1424 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_1434 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_1433 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_1435 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  case (rem_1424 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_1436 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_1435 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_1437 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  case (rem_1424 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_1438 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_1437 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_1439 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_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_1440 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1439 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1441 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1442 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1441 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1443 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1440 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1442 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1444 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1443 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_1446 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_1445 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1447 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1448 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_1447 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1449 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_1446 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_1448 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1450 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1449 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1451 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_1444 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_1450 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_1452 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_1453 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1452 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1454 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_1453 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1455 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_1456 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_1455 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_1457 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_1456 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_1458 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. exact (rem_1401 epsilon_mknows_old_pknows_current).
Defined.

Remark rem_1459 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_1458 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1460 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. exact (rem_1069).
Defined.

Remark rem_1461 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_1460 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1462 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1459 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_1461 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1463 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1462 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_1465 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_1464 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1466 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1467 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_1466 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1468 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_1465 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_1467 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1469 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1468 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1470 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_1429 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1471 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Use induction hypothesis. *)
Proof.
   intro Hrec. intro H. clear H. intros X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_1472 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_1471 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1473 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1470 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1472 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1474 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1473 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_1476 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_1475 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1477 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1478 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_1477 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1479 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_1476 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_1478 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1480 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1479 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1481 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1482 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_1481 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1483 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. exact (rem_1226).
Defined.

Remark rem_1484 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_1483 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1485 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1482 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1484 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1486 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1485 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1487 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_1463 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_1469 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_1474 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_1480 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_1486 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_1488 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1473 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1489 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_1488 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_1490 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_mknows_old_pknows_current. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_1428 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current ).
  exact (rem_1426 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_1489 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  intros X1 X2;  exact (rem_1487 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_1438 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_1451 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_1436 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_1457 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_1454 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_1432 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
  exact (rem_1434 epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_1491 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_1490 epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_1492 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_mknows_old_pknows_current. exact (rem_1226).
Defined.

Remark rem_1493 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_1492 epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_1494 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 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_1491 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1493 epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1495 : (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 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_1494 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_1496 : (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_313 X1 X2 H);  intros.
  apply (rem_1406 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_1412 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_1417 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_1423 epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_1495 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_1497 : (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_1416 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_1498 : (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_860 X1 X2 H);  intros.
  apply (rem_1497 epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_1499 : 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_970 epsilon_mknows_old_pknows_current ).
  exact (rem_968 epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_1498 epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_1496 epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_980 epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_993 epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_978 epsilon_mknows_old_pknows_current ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_999 epsilon_mknows_old_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_996 epsilon_mknows_old_pknows_current X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_974 epsilon_mknows_old_pknows_current X1).
  exact (rem_976 epsilon_mknows_old_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Qed.

Remark rem_1500 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11. exact (rem_1499).
Defined.

Remark rem_1501 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1500 epsilon_m__type_7_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_1502 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_11 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1. intros A1.
  case (rem_1501 epsilon_m__type_7_p__type_11 X1 A1). clear  epsilon_m__type_7_p__type_11 A1. intros. apply trans___type_11_s_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1. tauto.
Defined.

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

Remark rem_1504 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto___type_7 (s X1) -> auto___type_11 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1. intro H. intros.
  elim (rem_1503 X1 H);  intros.
  apply (rem_1502 epsilon_m__type_7_p__type_11 X1);  tauto.
Defined.

Remark rem_1505 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> auto___type_11 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11.  case (rem_959 epsilon_m__type_7_p__type_11). clear  epsilon_m__type_7_p__type_11. intros. apply trans___type_11_server_1;  tauto.
 clear  epsilon_m__type_7_p__type_11. tauto.
Defined.

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

Remark rem_1507 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> auto___type_7 server -> auto___type_11 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intro H. intros.
  elim (rem_1506 H);  intros.
  apply (rem_1505 epsilon_m__type_7_p__type_11);  tauto.
Defined.

Remark rem_1508 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> auto___type_11 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11.  case (rem_959 epsilon_m__type_7_p__type_11). clear  epsilon_m__type_7_p__type_11. intros. apply trans___type_11_nil_1;  tauto.
 clear  epsilon_m__type_7_p__type_11. tauto.
Defined.

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

Remark rem_1510 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> auto___type_7 nil -> auto___type_11 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intro H. intros.
  elim (rem_1509 H);  intros.
  apply (rem_1508 epsilon_m__type_7_p__type_11);  tauto.
Defined.

Remark rem_1511 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> auto___type_11 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11.  case (rem_959 epsilon_m__type_7_p__type_11). clear  epsilon_m__type_7_p__type_11. intros. apply trans___type_11_i_1;  tauto.
 clear  epsilon_m__type_7_p__type_11. tauto.
Defined.

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

Remark rem_1513 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> auto___type_7 i -> auto___type_11 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intro H. intros.
  elim (rem_1512 H);  intros.
  apply (rem_1511 epsilon_m__type_7_p__type_11);  tauto.
Defined.

Remark rem_1514 : (forall X:term, auto___type_7 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_1515 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1514 epsilon_m__type_7_p__type_11 X1).
Defined.

Remark rem_1516 : (forall X:term, auto___type_7 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_1517 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1516 epsilon_m__type_7_p__type_11 X2).
Defined.

Remark rem_1518 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1515 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1517 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1519 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1518 epsilon_m__type_7_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 A1 A2. intros. apply trans___type_11_key_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1520 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1521 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_1520 epsilon_m__type_7_p__type_11 X1).
Defined.

Remark rem_1522 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1523 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_1522 epsilon_m__type_7_p__type_11 X2).
Defined.

Remark rem_1524 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_1521 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_1523 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1525 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1524 epsilon_m__type_7_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 A1 A2. intros. apply trans___type_11_key_2;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1526 : forall X1 X2:term, auto___type_7 (key X1 X2) -> or_2
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_1527 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_7 (key X1 X2) -> auto___type_11 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1526 X1 X2 H);  intros.
  apply (rem_1519 epsilon_m__type_7_p__type_11 X1 X2);  tauto.
  apply (rem_1525 epsilon_m__type_7_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1528 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_1529 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_11 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1528 epsilon_m__type_7_p__type_11 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_p__type_11 A1 A2 A3. intros. apply trans___type_11_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1 A2 A3. tauto.
Defined.

Remark rem_1530 : forall X1 X2 X3:term, auto___type_7 (nonceb_old X1 X2 X3) -> or_1
    (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1531 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_7 (nonceb_old X1 X2 X3) -> auto___type_11 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_1530 X1 X2 X3 H);  intros.
  apply (rem_1529 epsilon_m__type_7_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_1532 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1. intros A1.
  tauto.
Defined.

Remark rem_1533 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto___type_11 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1. intros A1.
  case (rem_1532 epsilon_m__type_7_p__type_11 X1 A1). clear  epsilon_m__type_7_p__type_11 A1. intros. apply trans___type_11_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1. tauto.
Defined.

Remark rem_1534 : forall X1:term, auto___type_7 (noncea_old X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1535 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto___type_7 (noncea_old X1) -> auto___type_11 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1. intro H. intros.
  elim (rem_1534 X1 H);  intros.
  apply (rem_1533 epsilon_m__type_7_p__type_11 X1);  tauto.
Defined.

Remark rem_1536 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  tauto.
Defined.

Remark rem_1537 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_1536 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_bob_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_1538 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 bob -> auto___type_11 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1002 H);  intros.
  apply (rem_1537 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_1539 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_1536 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_alice_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_1540 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 alice -> auto___type_11 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1005 H);  intros.
  apply (rem_1539 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_1541 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1500 epsilon_m__type_7_p__type_11).
Defined.

Remark rem_1542 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1541 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_1543 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_11 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_1542 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans___type_11_s_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_1544 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_2 (s X1) -> auto___type_11 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1010 X1 H);  intros.
  apply (rem_1543 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_1545 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_1536 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_server_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_1546 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 server -> auto___type_11 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1013 H);  intros.
  apply (rem_1545 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_1547 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_1536 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_nil_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_1548 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 nil -> auto___type_11 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1016 H);  intros.
  apply (rem_1547 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_1549 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_1536 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_i_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_1550 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 i -> auto___type_11 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1019 H);  intros.
  apply (rem_1549 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_1551 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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_1552 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1551 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1553 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1554 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1553 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1555 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1552 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1554 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1556 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1555 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_key_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1557 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1558 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_1557 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1559 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1560 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_1559 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1561 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_1558 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_1560 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1562 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1561 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_key_2;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1563 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (key X1 X2) -> auto___type_11 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1033 X1 X2 H);  intros.
  apply (rem_1556 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_1562 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1564 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_1565 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_11 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1564 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. intros. apply trans___type_11_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. tauto.
Defined.

Remark rem_1566 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_2 (nonceb_old X1 X2 X3) -> auto___type_11 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_1037 X1 X2 X3 H);  intros.
  apply (rem_1565 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_1567 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  tauto.
Defined.

Remark rem_1568 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto___type_11 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_1567 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans___type_11_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_1569 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_2 (noncea_old X1) -> auto___type_11 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1041 X1 H);  intros.
  apply (rem_1568 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_1570 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intro H. clear H. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1571 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_1570 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1572 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1069).
Defined.

Remark rem_1573 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_1572 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1574 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1571 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_1573 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1575 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1574 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_5;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1576 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1577 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_1576 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1578 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1579 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_1578 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1580 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_1577 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_1579 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1581 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1580 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_2;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1582 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_1541 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1583 : 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_970 epsilon_mknows_old_pknows_current ).
  exact (rem_968 epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_1498 epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_1496 epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_980 epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_993 epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_978 epsilon_mknows_old_pknows_current ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_999 epsilon_mknows_old_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_996 epsilon_mknows_old_pknows_current X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_974 epsilon_mknows_old_pknows_current X1).
  exact (rem_976 epsilon_mknows_old_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Qed.

Remark rem_1584 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11. exact (rem_1583).
Defined.

Remark rem_1585 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1584 epsilon_m__type_7_p__type_11).
Defined.

Remark rem_1586 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_1585 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1587 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1582 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1586 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1588 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 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_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1587 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1589 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1590 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_1589 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1591 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1592 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_1591 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1593 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_1590 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_1592 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1594 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1593 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_3;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1595 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  tauto.
Defined.

Remark rem_1596 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  case (rem_1595 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1597 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_1596 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1598 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  case (rem_1595 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1599 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_1598 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1600 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. exact (rem_1500 epsilon_m__type_7_p__type_11).
Defined.

Remark rem_1601 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1600 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1);  assumption.
  tauto.
Defined.

Remark rem_1602 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_1601 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_1603 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_1602 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_1604 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  case (rem_1595 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1605 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_1604 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1606 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  case (rem_1595 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1607 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_1606 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1608 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70.  case (rem_1595 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1609 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_1608 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1610 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_1611 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1610 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1612 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1613 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1612 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1614 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1611 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1613 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1615 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1614 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1616 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1617 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_1616 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1618 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1619 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_1618 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1620 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_1617 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_1619 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1621 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1620 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1622 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_1615 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1621 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1623 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_1624 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1623 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2 A3. tauto.
Defined.

Remark rem_1625 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_1624 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 X3);  tauto.
Defined.

Remark rem_1626 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  tauto.
Defined.

Remark rem_1627 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_1626 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_1628 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_1627 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_1629 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1630 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_1629 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1631 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. exact (rem_1069).
Defined.

Remark rem_1632 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_1631 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1633 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1630 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_1632 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1634 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1633 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1635 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1636 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_1635 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1637 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1638 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_1637 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1639 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_1636 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_1638 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1640 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1639 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1641 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_1600 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1642 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. exact (rem_1584 epsilon_m__type_7_p__type_11).
Defined.

Remark rem_1643 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_1642 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1644 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1641 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1643 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1645 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1644 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1646 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1647 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_1646 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1648 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1649 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_1648 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1650 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_1647 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_1649 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1651 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1650 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1652 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intro H. clear H. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1653 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_1652 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1654 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. exact (rem_1226).
Defined.

Remark rem_1655 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_1654 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1656 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1653 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1655 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1657 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1656 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1658 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_1634 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1640 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1645 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1651 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1657 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1659 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1644 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1660 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_1659 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1661 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_1599 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 ).
  exact (rem_1597 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_1660 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2;  exact (rem_1658 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_1609 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_1622 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_1607 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_1628 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_1625 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_1603 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 X1).
  exact (rem_1605 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_1662 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1661 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70).
Defined.

Remark rem_1663 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_1662 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_1664 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1226).
Defined.

Remark rem_1665 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_1664 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_1666 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1663 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1665 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1667 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1666 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1668 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (crypt X1 X2) -> auto___type_11 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1250 X1 X2 H);  intros.
  apply (rem_1575 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_1581 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_1588 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_1594 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_1667 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1669 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1587 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_cons_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1670 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (cons X1 X2) -> auto___type_11 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1253 X1 X2 H);  intros.
  apply (rem_1669 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1671 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_2 X1 -> auto___type_11 X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70. fix epsilon_m__type_2_p__type_11 1.
  intro X. case X.
  exact (rem_1540 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  exact (rem_1538 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_1670 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_1668 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_1550 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_1563 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_1548 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1. intro H. elim (rem_1257 X1 H).
  intros X1;  exact (rem_1569 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  intros X1 X2 X3. intro H. elim (rem_1259 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_1566 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3).
   intro H. elim (rem_1256  H).
   intro H. elim (rem_1258  H).
  intros X1;  exact (rem_1544 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  exact (rem_1546 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1260 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1261 X1 X2 X3 X4 H).
   intro H. elim (rem_1255  H).
Defined.

Remark rem_1672 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_2 X1 -> auto___type_11 X1). tauto. exact (rem_1671 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1673 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  tauto.
Defined.

Remark rem_1674 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_1673 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_bob_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1675 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 bob -> auto___type_12 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_151 H);  intros.
  apply (rem_1674 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1676 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_1673 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_alice_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1677 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 alice -> auto___type_12 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_154 H);  intros.
  apply (rem_1676 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1678 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1500 epsilon_m__type_7_p__type_11).
Defined.

Remark rem_1679 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1678 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  assumption.
  tauto.
Defined.

Remark rem_1680 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_12 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_1679 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans___type_12_s_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_1681 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 (s X1) -> auto___type_12 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_159 X1 H);  intros.
  apply (rem_1680 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_1682 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_1673 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_server_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1683 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 server -> auto___type_12 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_162 H);  intros.
  apply (rem_1682 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1684 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_1673 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_nil_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1685 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 nil -> auto___type_12 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_165 H);  intros.
  apply (rem_1684 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1686 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_1673 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_i_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_1687 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 i -> auto___type_12 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_168 H);  intros.
  apply (rem_1686 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_1688 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_1689 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1688 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1690 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1691 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1690 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1692 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1689 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1691 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1693 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1692 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_key_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1694 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1695 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_1694 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1696 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1697 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_1696 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1698 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_1695 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_1697 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1699 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1698 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_key_2;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1700 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (key X1 X2) -> auto___type_12 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_182 X1 X2 H);  intros.
  apply (rem_1693 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1699 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1701 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_1702 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_12 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1701 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. intros. apply trans___type_12_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. tauto.
Defined.

Remark rem_1703 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto___type_3 (nonceb_old X1 X2 X3) -> auto___type_12 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intro H. intros.
  elim (rem_191 X1 X2 X3 H);  intros.
  apply (rem_1702 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3);  tauto.
Defined.

Remark rem_1704 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  tauto.
Defined.

Remark rem_1705 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> auto___type_12 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_1704 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans___type_12_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_1706 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 (noncea_old X1) -> auto___type_12 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_196 X1 H);  intros.
  apply (rem_1705 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_1707 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1708 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_1707 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1709 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1069).
Defined.

Remark rem_1710 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_1709 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1711 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1708 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_1710 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1712 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1711 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_5;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1713 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1714 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_1713 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1715 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1716 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_1715 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1717 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_1714 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_1716 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1718 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1717 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_2;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1719 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_1678 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1720 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1584 epsilon_m__type_7_p__type_11).
Defined.

Remark rem_1721 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_1720 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1722 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1719 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1721 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1723 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1722 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1724 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1725 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_1724 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1726 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1727 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_1726 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1728 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_1725 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_1727 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1729 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1728 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_3;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1730 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1661 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70).
Defined.

Remark rem_1731 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_1730 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1732 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1226).
Defined.

Remark rem_1733 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_1732 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1734 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1731 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1733 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1735 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1734 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1736 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (crypt X1 X2) -> auto___type_12 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_227 X1 X2 H);  intros.
  apply (rem_1712 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1718 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1723 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1729 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_1735 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1737 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_12 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1722 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_cons_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1738 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (cons X1 X2) -> auto___type_12 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_230 X1 X2 H);  intros.
  apply (rem_1737 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1739 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 X1 -> auto___type_12 X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70. fix epsilon_m__type_3_p__type_12 1.
  intro X. case X.
  exact (rem_1677 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  exact (rem_1675 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_1738 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2;  exact (rem_1736 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_1687 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_1700 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_1685 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1. intro H. elim (rem_234 X1 H).
  intros X1;  exact (rem_1706 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  intros X1 X2 X3. intro H. elim (rem_236 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_1703 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3).
   intro H. elim (rem_233  H).
   intro H. elim (rem_235  H).
  intros X1;  exact (rem_1681 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  exact (rem_1683 epsilon_m__type_7_p__type_11 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2 X3 X4. intro H. elim (rem_237 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_238 X1 X2 X3 X4 H).
   intro H. elim (rem_232  H).
Defined.

Remark rem_1740 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 X1 -> auto___type_12 X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. exact (rem_1739 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70).
Defined.

Remark rem_1741 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_3 X1 -> auto___type_12 X1). tauto. exact (rem_1740 epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_1742 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_19 X2 -> auto___def_73 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. exact (rem_1354).
Defined.

Remark rem_1743 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_73 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_19 X2 -> auto___def_73 X2). tauto. exact (rem_1742 epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1744 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> (auto___type_12 X1 /\ auto___def_73 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_1741 epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_73 X2). 2:apply (rem_1743 epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1745 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_72 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1744 epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___def_72_cons_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1746 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_18 (cons X1 X2) -> auto___def_72 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1359 X1 X2 H);  intros.
  apply (rem_1745 epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1747 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_18 X2 -> auto___def_72 X2. (* Induct. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70. fix epsilon_m__def_18_p__def_72 1.
  intro X. case X.
   intro H. elim (rem_1364  H).
   intro H. elim (rem_1361  H).
  intros X1 X2;  exact (rem_1746 epsilon_m__type_7_p__type_11 epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2. intro H. elim (rem_1375 X1 X2 H).
   intro H. elim (rem_1368  H).
  intros X1 X2. intro H. elim (rem_1369 X1 X2 H).
   intro H. elim (rem_1367  H).
  intros X1. intro H. elim (rem_1370 X1 H).
  intros X1. intro H. elim (rem_1373 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1374 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1371 X1 X2 X3 H).
   intro H. elim (rem_1363  H).
   intro H. elim (rem_1372  H).
  intros X1. intro H. elim (rem_1365 X1 H).
   intro H. elim (rem_1366  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1376 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1377 X1 X2 X3 X4 H).
   intro H. elim (rem_1362  H).
Defined.

Remark rem_1748 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_18 X2 -> auto___def_72 X2). tauto. exact (rem_1747 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_1749 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> (auto___type_11 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_1672 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_1748 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1750 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_70 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_1749 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___def_70_cons_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_1751 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 (cons X1 X2) -> auto___def_70 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1382 X1 X2 H);  intros.
  apply (rem_1750 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_1752 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_p__type_11. fix epsilon_m__def_16_p__def_70 1.
  intro X. case X.
   intro H. elim (rem_1387  H).
   intro H. elim (rem_1384  H).
  intros X1 X2;  exact (rem_1751 epsilon_m__type_7_p__type_11 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2. intro H. elim (rem_1398 X1 X2 H).
   intro H. elim (rem_1391  H).
  intros X1 X2. intro H. elim (rem_1392 X1 X2 H).
   intro H. elim (rem_1390  H).
  intros X1. intro H. elim (rem_1393 X1 H).
  intros X1. intro H. elim (rem_1396 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1397 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1394 X1 X2 X3 H).
   intro H. elim (rem_1386  H).
   intro H. elim (rem_1395  H).
  intros X1. intro H. elim (rem_1388 X1 H).
   intro H. elim (rem_1389  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1399 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1400 X1 X2 X3 X4 H).
   intro H. elim (rem_1385  H).
Defined.

Remark rem_1753 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_1752 epsilon_m__type_7_p__type_11 X1).
Defined.

Remark rem_1754 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11. exact (rem_1069).
Defined.

Remark rem_1755 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_1754 epsilon_m__type_7_p__type_11 X2).
Defined.

Remark rem_1756 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1753 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_1755 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1757 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1756 epsilon_m__type_7_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 A1 A2. intros. apply trans___type_11_crypt_5;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1758 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1759 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_1758 epsilon_m__type_7_p__type_11 X1).
Defined.

Remark rem_1760 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1761 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_1760 epsilon_m__type_7_p__type_11 X2).
Defined.

Remark rem_1762 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_1759 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_1761 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1763 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1762 epsilon_m__type_7_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 A1 A2. intros. apply trans___type_11_crypt_2;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1764 : (forall X:term, auto___type_7 X -> auto___type_11 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__type_7_p__type_11. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_1500 epsilon_m__type_7_p__type_11 X1).
Defined.

Remark rem_1765 : (forall X:term, auto___type_7 X -> auto___type_11 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__type_7_p__type_11. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_1584 epsilon_m__type_7_p__type_11 X2).
Defined.

Remark rem_1766 : (forall X:term, auto___type_7 X -> auto___type_11 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__type_7_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1764 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1765 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1767 : (forall X:term, auto___type_7 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_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1766 epsilon_m__type_7_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1768 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1769 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_1768 epsilon_m__type_7_p__type_11 X1).
Defined.

Remark rem_1770 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1771 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_1770 epsilon_m__type_7_p__type_11 X2).
Defined.

Remark rem_1772 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_1769 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_1771 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1773 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1772 epsilon_m__type_7_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 A1 A2. intros. apply trans___type_11_crypt_3;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1774 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current.  tauto.
Defined.

Remark rem_1775 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current.  case (rem_1774 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_1776 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_1775 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_1777 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current.  case (rem_1774 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_1778 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_1777 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_1779 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. exact (rem_1500 epsilon_m__type_7_p__type_11).
Defined.

Remark rem_1780 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1779 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_1781 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_1780 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_1782 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_1781 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_1783 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current.  case (rem_1774 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_1784 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_1783 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_1785 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current.  case (rem_1774 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_1786 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_1785 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_1787 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current.  case (rem_1774 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_1788 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_1787 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_1789 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_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_1790 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1789 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1791 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1792 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1791 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1793 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1790 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1792 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1794 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1793 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1795 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1796 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_1795 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1797 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1798 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_1797 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1799 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_1796 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_1798 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1800 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1799 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1801 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_1794 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_1800 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_1802 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_1803 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1802 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1804 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_1803 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1805 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_1806 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_1805 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_1807 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_1806 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_1808 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. exact (rem_1752 epsilon_m__type_7_p__type_11).
Defined.

Remark rem_1809 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_1808 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1810 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. exact (rem_1754 epsilon_m__type_7_p__type_11).
Defined.

Remark rem_1811 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_1810 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1812 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_1809 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_1811 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1813 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1812 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1814 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1815 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_1814 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1816 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1817 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_1816 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1818 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_1815 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_1817 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1819 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1818 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1820 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 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_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_1779 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1821 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. exact (rem_1584 epsilon_m__type_7_p__type_11).
Defined.

Remark rem_1822 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 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_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_1821 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1823 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 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_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1820 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1822 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1824 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 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_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1823 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1825 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1826 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_1825 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1827 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_1828 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_1827 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1829 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_1826 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_1828 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1830 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1829 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1831 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_1832 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_1831 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_1833 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. exact (rem_1226).
Defined.

Remark rem_1834 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_1833 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_1835 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1832 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1834 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1836 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1835 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1837 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_1813 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_1819 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_1824 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_1830 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_1836 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_1838 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 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_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1823 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_1839 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_1838 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_1840 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_p__type_11. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_1778 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current ).
  exact (rem_1776 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_1839 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2).
  intros X1 X2;  exact (rem_1837 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_1788 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_1801 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_1786 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_1807 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_1804 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_1782 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current X1).
  exact (rem_1784 epsilon_m__type_7_p__type_11 epsilon_m__type_4_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_1841 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_1840 epsilon_m__type_7_p__type_11 X1).
Defined.

Remark rem_1842 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_p__type_11. exact (rem_1226).
Defined.

Remark rem_1843 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_1842 epsilon_m__type_7_p__type_11 X2).
Defined.

Remark rem_1844 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_1841 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1843 epsilon_m__type_7_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1845 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1844 epsilon_m__type_7_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1846 : forall X1 X2:term, auto___type_7 (crypt X1 X2) -> or_5
    (auto___def_16 X1 /\ auto___def_17 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto___type_4 X1 /\ auto___def_32 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_5_intro_1; tauto.
  intros. apply or_5_intro_2; tauto.
  intros. apply or_5_intro_3; tauto.
  intros. apply or_5_intro_4; tauto.
  intros. apply or_5_intro_5; tauto.
Qed.

Remark rem_1847 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_7 (crypt X1 X2) -> auto___type_11 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1846 X1 X2 H);  intros.
  apply (rem_1757 epsilon_m__type_7_p__type_11 X1 X2);  tauto.
  apply (rem_1763 epsilon_m__type_7_p__type_11 X1 X2);  tauto.
  apply (rem_1767 epsilon_m__type_7_p__type_11 X1 X2);  tauto.
  apply (rem_1773 epsilon_m__type_7_p__type_11 X1 X2);  tauto.
  apply (rem_1845 epsilon_m__type_7_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1848 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_1766 epsilon_m__type_7_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_11 A1 A2. intros. apply trans___type_11_cons_1;  tauto.
 clear  epsilon_m__type_7_p__type_11 A1 A2. tauto.
Defined.

Remark rem_1849 : forall X1 X2:term, auto___type_7 (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_1850 : (forall X:term, auto___type_7 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_7 (cons X1 X2) -> auto___type_11 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1849 X1 X2 H);  intros.
  apply (rem_1848 epsilon_m__type_7_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_1851 : auto___type_7 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1852 : auto___type_7 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1853 : forall X1:term, auto___type_7 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1854 : auto___type_7 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1855 : forall X1 X2 X3:term, auto___type_7 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1856 : forall X1 X2 X3 X4:term, auto___type_7 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1857 : forall X1 X2 X3 X4:term, auto___type_7 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1858 : forall X1:term, auto___type_7 X1 -> auto___type_11 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_7_p__type_11 1.
  intro X. case X.
  exact (rem_965 epsilon_m__type_7_p__type_11 ).
  exact (rem_962 epsilon_m__type_7_p__type_11 ).
  intros X1 X2;  exact (rem_1850 epsilon_m__type_7_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_1847 epsilon_m__type_7_p__type_11 X1 X2).
  exact (rem_1513 epsilon_m__type_7_p__type_11 ).
  intros X1 X2;  exact (rem_1527 epsilon_m__type_7_p__type_11 X1 X2).
  exact (rem_1510 epsilon_m__type_7_p__type_11 ).
  intros X1. intro H. elim (rem_1853 X1 H).
  intros X1;  exact (rem_1535 epsilon_m__type_7_p__type_11 X1).
  intros X1 X2 X3. intro H. elim (rem_1855 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_1531 epsilon_m__type_7_p__type_11 X1 X2 X3).
   intro H. elim (rem_1852  H).
   intro H. elim (rem_1854  H).
  intros X1;  exact (rem_1504 epsilon_m__type_7_p__type_11 X1).
  exact (rem_1507 epsilon_m__type_7_p__type_11 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1856 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1857 X1 X2 X3 X4 H).
   intro H. elim (rem_1851  H).
Qed.

Remark rem_1859 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_7 X1 -> auto___type_11 X1). tauto. exact (rem_1858 X1).
Qed.

Remark rem_1860 : (forall X:term, auto___type_5 X -> auto_agent X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_5_pagent.  tauto.
Defined.

Remark rem_1861 : (forall X:term, auto___type_5 X -> auto_agent X)
    -> auto_agent bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pagent.  case (rem_1860 epsilon_m__type_5_pagent). clear  epsilon_m__type_5_pagent. intros. apply trans_agent_bob_1;  tauto.
 clear  epsilon_m__type_5_pagent. tauto.
Defined.

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

Remark rem_1863 : (forall X:term, auto___type_5 X -> auto_agent X)
    -> auto___type_5 bob -> auto_agent bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pagent. intro H. intros.
  elim (rem_1862 H);  intros.
  apply (rem_1861 epsilon_m__type_5_pagent);  tauto.
Defined.

Remark rem_1864 : (forall X:term, auto___type_5 X -> auto_agent X)
    -> auto_agent alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pagent.  case (rem_1860 epsilon_m__type_5_pagent). clear  epsilon_m__type_5_pagent. intros. apply trans_agent_alice_1;  tauto.
 clear  epsilon_m__type_5_pagent. tauto.
Defined.

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

Remark rem_1866 : (forall X:term, auto___type_5 X -> auto_agent X)
    -> auto___type_5 alice -> auto_agent alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pagent. intro H. intros.
  elim (rem_1865 H);  intros.
  apply (rem_1864 epsilon_m__type_5_pagent);  tauto.
Defined.

Remark rem_1867 : (forall X:term, auto___type_5 X -> auto_agent X)
    -> auto_agent server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pagent.  case (rem_1860 epsilon_m__type_5_pagent). clear  epsilon_m__type_5_pagent. intros. apply trans_agent_server_1;  tauto.
 clear  epsilon_m__type_5_pagent. tauto.
Defined.

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

Remark rem_1869 : (forall X:term, auto___type_5 X -> auto_agent X)
    -> auto___type_5 server -> auto_agent server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pagent. intro H. intros.
  elim (rem_1868 H);  intros.
  apply (rem_1867 epsilon_m__type_5_pagent);  tauto.
Defined.

Remark rem_1870 : (forall X:term, auto___type_5 X -> auto_agent X)
    -> auto_agent i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pagent.  case (rem_1860 epsilon_m__type_5_pagent). clear  epsilon_m__type_5_pagent. intros. apply trans_agent_i_1;  tauto.
 clear  epsilon_m__type_5_pagent. tauto.
Defined.

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

Remark rem_1872 : (forall X:term, auto___type_5 X -> auto_agent X)
    -> auto___type_5 i -> auto_agent i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pagent. intro H. intros.
  elim (rem_1871 H);  intros.
  apply (rem_1870 epsilon_m__type_5_pagent);  tauto.
Defined.

Remark rem_1873 : auto___type_5 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1874 : auto___type_5 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1876 : auto___type_5 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1878 : forall X1:term, auto___type_5 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1879 : forall X1 X2 X3:term, auto___type_5 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1880 : auto___type_5 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1881 : forall X1:term, auto___type_5 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1882 : forall X1 X2 X3:term, auto___type_5 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_1885 : forall X1 X2 X3 X4:term, auto___type_5 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1886 : forall X1 X2 X3 X4:term, auto___type_5 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1887 : forall X2:term, auto___type_5 X2 -> auto_agent X2. (* Induct. *)
Proof.
  fix epsilon_m__type_5_pagent 1.
  intro X. case X.
  exact (rem_1866 epsilon_m__type_5_pagent ).
  exact (rem_1863 epsilon_m__type_5_pagent ).
  intros X1 X2. intro H. elim (rem_1884 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1883 X1 X2 H).
  exact (rem_1872 epsilon_m__type_5_pagent ).
  intros X1 X2. intro H. elim (rem_1877 X1 X2 H).
   intro H. elim (rem_1876  H).
  intros X1. intro H. elim (rem_1878 X1 H).
  intros X1. intro H. elim (rem_1881 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1882 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1879 X1 X2 X3 H).
   intro H. elim (rem_1874  H).
   intro H. elim (rem_1880  H).
  intros X1. intro H. elim (rem_1875 X1 H).
  exact (rem_1869 epsilon_m__type_5_pagent ).
  intros X1 X2 X3 X4. intro H. elim (rem_1885 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1886 X1 X2 X3 X4 H).
   intro H. elim (rem_1873  H).
Qed.

Remark rem_1888 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_5 X2 -> auto_agent X2). tauto. exact (rem_1887 X2).
Qed.

Remark rem_1889 : (forall X:term, auto___type_5 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_5_pknows_current.  tauto.
Defined.

Remark rem_1890 : (forall X:term, auto___type_5 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pknows_current.  case (rem_1889 epsilon_m__type_5_pknows_current). clear  epsilon_m__type_5_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_5_pknows_current. tauto.
Defined.

Remark rem_1891 : (forall X:term, auto___type_5 X -> auto_knows_current X)
    -> auto___type_5 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pknows_current. intro H. intros.
  elim (rem_1862 H);  intros.
  apply (rem_1890 epsilon_m__type_5_pknows_current);  tauto.
Defined.

Remark rem_1892 : (forall X:term, auto___type_5 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pknows_current.  case (rem_1889 epsilon_m__type_5_pknows_current). clear  epsilon_m__type_5_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_5_pknows_current. tauto.
Defined.

Remark rem_1893 : (forall X:term, auto___type_5 X -> auto_knows_current X)
    -> auto___type_5 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pknows_current. intro H. intros.
  elim (rem_1865 H);  intros.
  apply (rem_1892 epsilon_m__type_5_pknows_current);  tauto.
Defined.

Remark rem_1894 : (forall X:term, auto___type_5 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pknows_current.  case (rem_1889 epsilon_m__type_5_pknows_current). clear  epsilon_m__type_5_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_5_pknows_current. tauto.
Defined.

Remark rem_1895 : (forall X:term, auto___type_5 X -> auto_knows_current X)
    -> auto___type_5 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pknows_current. intro H. intros.
  elim (rem_1868 H);  intros.
  apply (rem_1894 epsilon_m__type_5_pknows_current);  tauto.
Defined.

Remark rem_1896 : (forall X:term, auto___type_5 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pknows_current.  case (rem_1889 epsilon_m__type_5_pknows_current). clear  epsilon_m__type_5_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_5_pknows_current. tauto.
Defined.

Remark rem_1897 : (forall X:term, auto___type_5 X -> auto_knows_current X)
    -> auto___type_5 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pknows_current. intro H. intros.
  elim (rem_1871 H);  intros.
  apply (rem_1896 epsilon_m__type_5_pknows_current);  tauto.
Defined.

Remark rem_1898 : forall X2:term, auto___type_5 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__type_5_pknows_current 1.
  intro X. case X.
  exact (rem_1893 epsilon_m__type_5_pknows_current ).
  exact (rem_1891 epsilon_m__type_5_pknows_current ).
  intros X1 X2. intro H. elim (rem_1884 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1883 X1 X2 H).
  exact (rem_1897 epsilon_m__type_5_pknows_current ).
  intros X1 X2. intro H. elim (rem_1877 X1 X2 H).
   intro H. elim (rem_1876  H).
  intros X1. intro H. elim (rem_1878 X1 H).
  intros X1. intro H. elim (rem_1881 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1882 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1879 X1 X2 X3 H).
   intro H. elim (rem_1874  H).
   intro H. elim (rem_1880  H).
  intros X1. intro H. elim (rem_1875 X1 H).
  exact (rem_1895 epsilon_m__type_5_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_1885 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1886 X1 X2 X3 X4 H).
   intro H. elim (rem_1873  H).
Qed.

Remark rem_1899 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_5 X2 -> auto_knows_current X2). tauto. exact (rem_1898 X2).
Qed.

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

Remark rem_1901 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> 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_1900 X3).
Qed.

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

Remark rem_1903 : (forall X:term, auto___type_5 X -> auto___type_12 X)
    -> auto___type_12 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_12.  case (rem_1902 epsilon_m__type_5_p__type_12). clear  epsilon_m__type_5_p__type_12. intros. apply trans___type_12_bob_1;  tauto.
 clear  epsilon_m__type_5_p__type_12. tauto.
Defined.

Remark rem_1904 : (forall X:term, auto___type_5 X -> auto___type_12 X)
    -> auto___type_5 bob -> auto___type_12 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_12. intro H. intros.
  elim (rem_1862 H);  intros.
  apply (rem_1903 epsilon_m__type_5_p__type_12);  tauto.
Defined.

Remark rem_1905 : (forall X:term, auto___type_5 X -> auto___type_12 X)
    -> auto___type_12 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_12.  case (rem_1902 epsilon_m__type_5_p__type_12). clear  epsilon_m__type_5_p__type_12. intros. apply trans___type_12_alice_1;  tauto.
 clear  epsilon_m__type_5_p__type_12. tauto.
Defined.

Remark rem_1906 : (forall X:term, auto___type_5 X -> auto___type_12 X)
    -> auto___type_5 alice -> auto___type_12 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_12. intro H. intros.
  elim (rem_1865 H);  intros.
  apply (rem_1905 epsilon_m__type_5_p__type_12);  tauto.
Defined.

Remark rem_1907 : (forall X:term, auto___type_5 X -> auto___type_12 X)
    -> auto___type_12 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_12.  case (rem_1902 epsilon_m__type_5_p__type_12). clear  epsilon_m__type_5_p__type_12. intros. apply trans___type_12_server_1;  tauto.
 clear  epsilon_m__type_5_p__type_12. tauto.
Defined.

Remark rem_1908 : (forall X:term, auto___type_5 X -> auto___type_12 X)
    -> auto___type_5 server -> auto___type_12 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_12. intro H. intros.
  elim (rem_1868 H);  intros.
  apply (rem_1907 epsilon_m__type_5_p__type_12);  tauto.
Defined.

Remark rem_1909 : (forall X:term, auto___type_5 X -> auto___type_12 X)
    -> auto___type_12 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_12.  case (rem_1902 epsilon_m__type_5_p__type_12). clear  epsilon_m__type_5_p__type_12. intros. apply trans___type_12_i_1;  tauto.
 clear  epsilon_m__type_5_p__type_12. tauto.
Defined.

Remark rem_1910 : (forall X:term, auto___type_5 X -> auto___type_12 X)
    -> auto___type_5 i -> auto___type_12 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_12. intro H. intros.
  elim (rem_1871 H);  intros.
  apply (rem_1909 epsilon_m__type_5_p__type_12);  tauto.
Defined.

Remark rem_1911 : forall X4:term, auto___type_5 X4 -> auto___type_12 X4. (* Induct. *)
Proof.
  fix epsilon_m__type_5_p__type_12 1.
  intro X. case X.
  exact (rem_1906 epsilon_m__type_5_p__type_12 ).
  exact (rem_1904 epsilon_m__type_5_p__type_12 ).
  intros X1 X2. intro H. elim (rem_1884 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1883 X1 X2 H).
  exact (rem_1910 epsilon_m__type_5_p__type_12 ).
  intros X1 X2. intro H. elim (rem_1877 X1 X2 H).
   intro H. elim (rem_1876  H).
  intros X1. intro H. elim (rem_1878 X1 H).
  intros X1. intro H. elim (rem_1881 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1882 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1879 X1 X2 X3 H).
   intro H. elim (rem_1874  H).
   intro H. elim (rem_1880  H).
  intros X1. intro H. elim (rem_1875 X1 H).
  exact (rem_1908 epsilon_m__type_5_p__type_12 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1885 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1886 X1 X2 X3 X4 H).
   intro H. elim (rem_1873  H).
Qed.

Remark rem_1912 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___type_12 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_5 X4 -> auto___type_12 X4). tauto. exact (rem_1911 X4).
Qed.

Remark rem_1913 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> (auto___type_11 X1 /\ auto_agent X2 /\ auto_knows_current X2 /\ auto_knows_current X3 /\ auto___type_12 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto___type_11 X1). 2:apply (rem_1859 X1 X2 X3 X4);  assumption.
  cut (auto_agent X2). 2:apply (rem_1888 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1899 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_1901 X1 X2 X3 X4);  assumption.
  cut (auto___type_12 X4). 2:apply (rem_1912 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1914 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1913 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans___def_74_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1915 : forall X1 X2 X3 X4:term, auto___type_5 X2 -> auto___def_38 (cons server nil) -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1914 X1 X2 X3 X4).
Qed.

Remark rem_1916 : forall X1 X2:term, auto___def_45 (cons X1 X2) -> or_1
    (auto___type_5 X1 /\ auto___def_38 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_1917 : forall X1 X2 X3 X4:term, auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1916 X2 (cons server nil) H);  intros.
  apply (rem_1915 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1918 : forall X1 X2 X3 X4:term, auto___def_43 nil -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_1917 X1 X2 X3 X4).
Qed.

Remark rem_1919 : forall X1 X2 X3 X4:term, auto___type_5 X4 -> auto___def_43 nil -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_43 nil -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1918 X1 X2 X3 X4).
Qed.

Remark rem_1920 : forall X1 X2 X3 X4:term, auto___def_42 (cons X4 nil) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_697 X4 nil H);  intros.
  apply (rem_1919 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1921 : forall X1 X2 X3 X4:term, auto___def_34 sym -> auto___def_42 (cons X4 nil) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_42 (cons X4 nil) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_1920 X1 X2 X3 X4).
Qed.

Remark rem_1922 : forall X1 X2 X3 X4:term, auto___def_34 sym -> auto___def_45 (cons X2 (cons server nil)) -> auto___def_42 (cons X4 nil) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_34 sym -> auto___def_42 (cons X4 nil) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1921 X1 X2 X3 X4).
Qed.

Remark rem_1923 : forall X1 X2 X3 X4:term, auto___def_41 (key sym (cons X2 (cons server nil))) -> auto___def_42 (cons X4 nil) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_284 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_1922 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1924 : forall X1 X2 X3 X4:term, auto___type_7 X1 -> auto___def_42 (cons X4 nil) -> auto___def_41 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_41 (key sym (cons X2 (cons server nil))) -> auto___def_42 (cons X4 nil) -> auto___type_7 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1923 X1 X2 X3 X4).
Qed.

Remark rem_1925 : forall X1 X2 X3 X4:term, auto___def_40 (cons X1 (cons X4 nil)) -> auto___def_41 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_703 X1 (cons X4 nil) H);  intros.
  apply (rem_1924 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1926 : auto___def_33 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_1927 : auto___def_33 nil -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1926 H);  intros.
Qed.

Remark rem_1928 : forall X1 X2 X3 X4:term, auto___def_32 X4 -> auto___def_33 nil -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_33 nil -> False). tauto.
  exact (rem_1927).
Qed.

Remark rem_1929 : forall X1 X2 X3 X4:term, auto___def_31 (cons X4 nil) -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_715 X4 nil H);  intros.
  apply (rem_1928 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1930 : forall X1 X2 X3 X4:term, auto___def_31 (cons X4 nil) -> auto___def_34 sym -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_31 (cons X4 nil) -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_1929 X1 X2 X3 X4).
Qed.

Remark rem_1931 : forall X1 X2 X3 X4:term, auto___def_34 sym -> auto___def_37 (cons X2 (cons server nil)) -> auto___def_31 (cons X4 nil) -> auto___type_5 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_31 (cons X4 nil) -> auto___def_34 sym -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1930 X1 X2 X3 X4).
Qed.

Remark rem_1932 : forall X1 X2 X3 X4:term, auto___def_30 (key sym (cons X2 (cons server nil))) -> auto___def_31 (cons X4 nil) -> auto___type_5 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_302 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_1931 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1933 : forall X1 X2 X3 X4:term, auto___type_5 X1 -> auto___def_31 (cons X4 nil) -> auto___def_30 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_30 (key sym (cons X2 (cons server nil))) -> auto___def_31 (cons X4 nil) -> auto___type_5 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1932 X1 X2 X3 X4).
Qed.

Remark rem_1934 : forall X1 X2 X3 X4:term, auto___def_29 (cons X1 (cons X4 nil)) -> auto___def_30 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_721 X1 (cons X4 nil) H);  intros.
  apply (rem_1933 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1935 : forall X1 X2 X3 X4:term, auto___def_52 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_723 X2 (cons server nil) H);  intros.
Qed.

Remark rem_1936 : forall X1 X2 X3 X4:term, auto___def_51 sym -> auto___def_52 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_52 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_1935 X1 X2 X3 X4).
Qed.

Remark rem_1937 : forall X1 X2 X3 X4:term, auto___def_50 sym -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_50 sym -> False). tauto.
  exact (rem_290).
Qed.

Remark rem_1938 : forall X1 X2 X3 X4:term, auto___def_50 sym -> auto___type_9 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2 X3 X4. intros. apply (rem_1937 X1 X2 X3 X4);  assumption.
Qed.

Remark rem_1939 : forall X1 X2 X3 X4:term, auto___def_55 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_728 X2 (cons server nil) H);  intros.
Qed.

Remark rem_1940 : forall X1 X2 X3 X4:term, auto___def_54 sym -> auto___def_55 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_55 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_1939 X1 X2 X3 X4).
Qed.

Remark rem_1941 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3 H4. intro H. intros.
  elim (rem_47 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_1936 X1 X2 X3 X4);  tauto.
  apply (rem_1938 X1 X2 X3 X4);  tauto.
  apply (rem_1940 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1942 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current nil -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_1941 X1 X2 X3 X4).
Qed.

Remark rem_1943 : forall X1 X2 X3 X4:term, auto_knows_current X4 -> auto_knows_current nil -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current nil -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1942 X1 X2 X3 X4).
Qed.

Remark rem_1944 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (cons X4 nil) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_112 X4 nil H);  intros.
  apply (rem_1943 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1945 : forall X1 X2 X3 X4:term, auto_knows_current X1 -> auto_knows_current (cons X4 nil) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (cons X4 nil) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1944 X1 X2 X3 X4).
Qed.

Remark rem_1946 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (cons X1 (cons X4 nil)) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_112 X1 (cons X4 nil) H);  intros.
  apply (rem_1945 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1947 : forall X1 X2 X3 X4:term, auto_knows_current (cons X1 (cons X4 nil)) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (cons X1 (cons X4 nil)) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1946 X1 X2 X3 X4).
Qed.

Remark rem_1948 : forall X1 X2 X3 X4:term, auto___def_73 nil -> auto___type_11 X1 -> auto___type_12 X4 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_11 X1 -> auto___type_11 X1). tauto. exact (rem_425 X1).
Qed.

Remark rem_1949 : forall X1 X2 X3 X4:term, auto___def_73 nil -> auto___type_11 X1 -> auto___type_12 X4 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_259 X2).
Qed.

Remark rem_1950 : (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_1951 : (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_1950 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_1952 : (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_598 H);  intros.
  apply (rem_1951 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_1953 : (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_1950 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_1954 : (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_601 H);  intros.
  apply (rem_1953 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_1955 : (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_1950 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_1956 : (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_604 H);  intros.
  apply (rem_1955 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_1957 : (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_1950 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_1958 : (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_607 H);  intros.
  apply (rem_1957 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_1959 : forall X2:term, auto_agent X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_magent_pknows_current 1.
  intro X. case X.
  exact (rem_1954 epsilon_magent_pknows_current ).
  exact (rem_1952 epsilon_magent_pknows_current ).
  intros X1 X2. intro H. elim (rem_620 X1 X2 H).
  intros X1 X2. intro H. elim (rem_619 X1 X2 H).
  exact (rem_1958 epsilon_magent_pknows_current ).
  intros X1 X2. intro H. elim (rem_613 X1 X2 H).
   intro H. elim (rem_612  H).
  intros X1. intro H. elim (rem_614 X1 H).
  intros X1. intro H. elim (rem_617 X1 H).
  intros X1 X2 X3. intro H. elim (rem_618 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_615 X1 X2 X3 H).
   intro H. elim (rem_610  H).
   intro H. elim (rem_616  H).
  intros X1. intro H. elim (rem_611 X1 H).
  exact (rem_1956 epsilon_magent_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_621 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_622 X1 X2 X3 X4 H).
   intro H. elim (rem_609  H).
Qed.

Remark rem_1960 : forall X1 X2 X3 X4:term, auto___def_73 nil -> auto___type_11 X1 -> auto___type_12 X4 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X2 -> auto_knows_current X2). tauto. exact (rem_1959 X2).
Qed.

Remark rem_1961 : forall X1 X2 X3 X4:term, auto___def_73 nil -> auto___type_11 X1 -> auto___type_12 X4 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> 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_1900 X3).
Qed.

Remark rem_1962 : forall X4:term, auto___type_12 X4 -> auto___type_12 X4. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_1963 : forall X1 X2 X3 X4:term, auto___def_73 nil -> auto___type_11 X1 -> auto___type_12 X4 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___type_12 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_12 X4 -> auto___type_12 X4). tauto. exact (rem_1962 X4).
Qed.

Remark rem_1964 : forall X1 X2 X3 X4:term, auto___def_73 nil -> auto___type_11 X1 -> auto___type_12 X4 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> (auto___type_11 X1 /\ auto_agent X2 /\ auto_knows_current X2 /\ auto_knows_current X3 /\ auto___type_12 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto___type_11 X1). 2:apply (rem_1948 X1 X2 X3 X4);  assumption.
  cut (auto_agent X2). 2:apply (rem_1949 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_1960 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_1961 X1 X2 X3 X4);  assumption.
  cut (auto___type_12 X4). 2:apply (rem_1963 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_1965 : forall X1 X2 X3 X4:term, auto___def_73 nil -> auto___type_11 X1 -> auto___type_12 X4 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_1964 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans___def_74_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_1966 : forall X1 X2 X3 X4:term, auto___type_12 X4 -> auto___def_73 nil -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_73 nil -> auto___type_11 X1 -> auto___type_12 X4 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1965 X1 X2 X3 X4).
Qed.

Remark rem_1967 : forall X1 X2 X3 X4:term, auto___def_72 (cons X4 nil) -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_743 X4 nil H);  intros.
  apply (rem_1966 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1968 : forall X1 X2 X3 X4:term, auto___def_22 (cons server nil) -> auto___def_72 (cons X4 nil) -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_72 (cons X4 nil) -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_1967 X1 X2 X3 X4).
Qed.

Remark rem_1969 : forall X1 X2 X3 X4:term, auto_agent X2 -> auto___def_22 (cons server nil) -> auto___def_72 (cons X4 nil) -> auto___type_11 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_22 (cons server nil) -> auto___def_72 (cons X4 nil) -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1968 X1 X2 X3 X4).
Qed.

Remark rem_1970 : forall X1 X2 X3 X4:term, auto___def_21 (cons X2 (cons server nil)) -> auto___def_72 (cons X4 nil) -> auto___type_11 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_747 X2 (cons server nil) H);  intros.
  apply (rem_1969 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1971 : forall X1 X2 X3 X4:term, auto___def_20 sym -> auto___def_21 (cons X2 (cons server nil)) -> auto___def_72 (cons X4 nil) -> auto___type_11 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_21 (cons X2 (cons server nil)) -> auto___def_72 (cons X4 nil) -> auto___type_11 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_1970 X1 X2 X3 X4).
Qed.

Remark rem_1972 : forall X1 X2 X3 X4:term, auto___def_71 (key sym (cons X2 (cons server nil))) -> auto___def_72 (cons X4 nil) -> auto___type_11 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_461 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_1971 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1973 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto___def_72 (cons X4 nil) -> auto___def_71 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_71 (key sym (cons X2 (cons server nil))) -> auto___def_72 (cons X4 nil) -> auto___type_11 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_1972 X1 X2 X3 X4).
Qed.

Remark rem_1974 : forall X1 X2 X3 X4:term, auto___def_70 (cons X1 (cons X4 nil)) -> auto___def_71 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_752 X1 (cons X4 nil) H);  intros.
  apply (rem_1973 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_1975 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11.  tauto.
Defined.

Remark rem_1976 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> auto___type_11 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11.  case (rem_1975 epsilon_m__type_16_p__type_11). clear  epsilon_m__type_16_p__type_11. intros. apply trans___type_11_bob_1;  tauto.
 clear  epsilon_m__type_16_p__type_11. tauto.
Defined.

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

Remark rem_1978 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> auto___type_16 bob -> auto___type_11 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intro H. intros.
  elim (rem_1977 H);  intros.
  apply (rem_1976 epsilon_m__type_16_p__type_11);  tauto.
Defined.

Remark rem_1979 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> auto___type_11 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11.  case (rem_1975 epsilon_m__type_16_p__type_11). clear  epsilon_m__type_16_p__type_11. intros. apply trans___type_11_alice_1;  tauto.
 clear  epsilon_m__type_16_p__type_11. tauto.
Defined.

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

Remark rem_1981 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> auto___type_16 alice -> auto___type_11 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intro H. intros.
  elim (rem_1980 H);  intros.
  apply (rem_1979 epsilon_m__type_16_p__type_11);  tauto.
Defined.

Remark rem_1982 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_1983 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_1982 epsilon_m__type_16_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_1984 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_11 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1. intros A1.
  case (rem_1983 epsilon_m__type_16_p__type_11 X1 A1). clear  epsilon_m__type_16_p__type_11 A1. intros. apply trans___type_11_s_1;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1. tauto.
Defined.

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

Remark rem_1986 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___type_16 (s X1) -> auto___type_11 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1. intro H. intros.
  elim (rem_1985 X1 H);  intros.
  apply (rem_1984 epsilon_m__type_16_p__type_11 X1);  tauto.
Defined.

Remark rem_1987 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> auto___type_11 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11.  case (rem_1975 epsilon_m__type_16_p__type_11). clear  epsilon_m__type_16_p__type_11. intros. apply trans___type_11_server_1;  tauto.
 clear  epsilon_m__type_16_p__type_11. tauto.
Defined.

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

Remark rem_1989 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> auto___type_16 server -> auto___type_11 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intro H. intros.
  elim (rem_1988 H);  intros.
  apply (rem_1987 epsilon_m__type_16_p__type_11);  tauto.
Defined.

Remark rem_1990 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> auto___type_11 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11.  case (rem_1975 epsilon_m__type_16_p__type_11). clear  epsilon_m__type_16_p__type_11. intros. apply trans___type_11_nil_1;  tauto.
 clear  epsilon_m__type_16_p__type_11. tauto.
Defined.

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

Remark rem_1992 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> auto___type_16 nil -> auto___type_11 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intro H. intros.
  elim (rem_1991 H);  intros.
  apply (rem_1990 epsilon_m__type_16_p__type_11);  tauto.
Defined.

Remark rem_1993 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> auto___type_11 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11.  case (rem_1975 epsilon_m__type_16_p__type_11). clear  epsilon_m__type_16_p__type_11. intros. apply trans___type_11_i_1;  tauto.
 clear  epsilon_m__type_16_p__type_11. tauto.
Defined.

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

Remark rem_1995 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> auto___type_16 i -> auto___type_11 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intro H. intros.
  elim (rem_1994 H);  intros.
  apply (rem_1993 epsilon_m__type_16_p__type_11);  tauto.
Defined.

Remark rem_1996 : (forall X:term, auto___type_16 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_1997 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_1996 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_1998 : (forall X:term, auto___type_16 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_1999 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_1998 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2000 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_1997 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_1999 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2001 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2000 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_key_1;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2002 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2003 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_2002 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_2004 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2005 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_2004 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2006 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_2003 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_2005 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2007 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2006 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_key_2;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2008 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___def_54 X1 -> auto___def_54 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2009 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_2008 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_2010 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X2:term, auto___def_55 X2 -> auto___def_55 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2011 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_2010 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2012 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_2009 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_2011 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2013 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2012 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_key_3;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2014 : forall X1 X2:term, auto___type_16 (key X1 X2) -> or_3
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
    (auto___def_54 X1 /\ auto___def_55 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_3_intro_1; tauto.
  intros. apply or_3_intro_2; tauto.
  intros. apply or_3_intro_3; tauto.
Qed.

Remark rem_2015 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_16 (key X1 X2) -> auto___type_11 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_2014 X1 X2 H);  intros.
  apply (rem_2001 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
  apply (rem_2007 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
  apply (rem_2013 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_2016 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2017 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_2016 epsilon_m__type_16_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_2018 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto___type_11 (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1. intros A1.
  case (rem_2017 epsilon_m__type_16_p__type_11 X1 A1). clear  epsilon_m__type_16_p__type_11 A1. intros. apply trans___type_11_noncea_current_1;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1. tauto.
Defined.

Remark rem_2019 : forall X1:term, auto___type_16 (noncea_current X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2020 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___type_16 (noncea_current X1) -> auto___type_11 (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1. intro H. intros.
  elim (rem_2019 X1 H);  intros.
  apply (rem_2018 epsilon_m__type_16_p__type_11 X1);  tauto.
Defined.

Remark rem_2021 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_11 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2 X3.  case (rem_1975 epsilon_m__type_16_p__type_11). clear  epsilon_m__type_16_p__type_11. intros. apply trans___type_11_nonceb_old_1;  tauto.
 clear  epsilon_m__type_16_p__type_11. tauto.
Defined.

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

Remark rem_2023 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_16 (nonceb_old X1 X2 X3) -> auto___type_11 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_2022 X1 X2 X3 H);  intros.
  apply (rem_2021 epsilon_m__type_16_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_2024 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___type_11 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1.  case (rem_1975 epsilon_m__type_16_p__type_11). clear  epsilon_m__type_16_p__type_11. intros. apply trans___type_11_noncea_old_1;  tauto.
 clear  epsilon_m__type_16_p__type_11. tauto.
Defined.

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

Remark rem_2026 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___type_16 (noncea_old X1) -> auto___type_11 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1. intro H. intros.
  elim (rem_2025 X1 H);  intros.
  apply (rem_2024 epsilon_m__type_16_p__type_11 X1);  tauto.
Defined.

Remark rem_2027 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_1982 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_2028 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2029 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2028 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2030 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2031 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_2030 epsilon_m__type_16_p__type_11 X3).
Defined.

Remark rem_2032 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_2027 epsilon_m__type_16_p__type_11 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_2029 epsilon_m__type_16_p__type_11 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_2031 epsilon_m__type_16_p__type_11 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2033 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_11 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2032 epsilon_m__type_16_p__type_11 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_16_p__type_11 A1 A2 A3. intros. apply trans___type_11_nonceb_current_1;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2 A3. tauto.
Defined.

Remark rem_2034 : forall X1 X2 X3:term, auto___type_16 (nonceb_current X1 X2 X3) -> or_1
    (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2035 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_16 (nonceb_current X1 X2 X3) -> auto___type_11 (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_2034 X1 X2 X3 H);  intros.
  apply (rem_2033 epsilon_m__type_16_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_2036 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___def_78 X1 -> auto___def_78 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2037 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_2036 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_2038 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X2:term, auto___def_79 X2 -> auto___def_79 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2039 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_2038 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2040 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_2037 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_2039 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2041 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2040 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_crypt_1;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2042 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2043 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_2042 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_2044 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2045 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_2044 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2046 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_2043 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_2045 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2047 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2046 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_crypt_2;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2048 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2049 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_2048 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_2050 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2051 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_2050 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2052 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_2049 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_2051 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2053 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2052 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_crypt_3;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2054 : (forall X:term, auto___type_16 X -> auto___type_11 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_16_p__type_11. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_1982 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_2055 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2056 : (forall X:term, auto___type_16 X -> auto___type_11 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_16_p__type_11. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_2055 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2057 : (forall X:term, auto___type_16 X -> auto___type_11 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_16_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_2054 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_2056 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2058 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2057 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2059 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___def_70 X1 -> auto___def_70 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2060 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_2059 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_2061 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X2:term, auto___def_71 X2 -> auto___def_71 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2062 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_2061 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2063 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_2060 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_2062 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2064 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2063 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_crypt_5;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2065 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1:term, auto___def_89 X1 -> auto___def_89 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2066 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_2065 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_2067 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X2:term, auto___def_90 X2 -> auto___def_90 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2068 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_2067 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2069 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_2066 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_2068 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2070 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2069 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_crypt_6;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2071 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_1982 epsilon_m__type_16_p__type_11 X1).
Defined.

Remark rem_2072 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X2:term, auto___def_81 X2 -> auto___def_81 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2073 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_2072 epsilon_m__type_16_p__type_11 X2).
Defined.

Remark rem_2074 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_2071 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_2073 epsilon_m__type_16_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2075 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2074 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_crypt_7;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2076 : forall X1 X2:term, auto___type_16 (crypt X1 X2) -> or_7
    (auto___def_78 X1 /\ auto___def_79 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___def_70 X1 /\ auto___def_71 X2)
    (auto___def_89 X1 /\ auto___def_90 X2)
    (auto_knows_current X1 /\ auto___def_81 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_7_intro_1; tauto.
  intros. apply or_7_intro_2; tauto.
  intros. apply or_7_intro_3; tauto.
  intros. apply or_7_intro_4; tauto.
  intros. apply or_7_intro_5; tauto.
  intros. apply or_7_intro_6; tauto.
  intros. apply or_7_intro_7; tauto.
Qed.

Remark rem_2077 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_16 (crypt X1 X2) -> auto___type_11 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_2076 X1 X2 H);  intros.
  apply (rem_2041 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
  apply (rem_2047 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
  apply (rem_2053 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
  apply (rem_2058 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
  apply (rem_2064 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
  apply (rem_2070 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
  apply (rem_2075 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_2078 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_2057 epsilon_m__type_16_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_16_p__type_11 A1 A2. intros. apply trans___type_11_cons_1;  tauto.
 clear  epsilon_m__type_16_p__type_11 A1 A2. tauto.
Defined.

Remark rem_2079 : forall X1 X2:term, auto___type_16 (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_2080 : (forall X:term, auto___type_16 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_16 (cons X1 X2) -> auto___type_11 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_2079 X1 X2 H);  intros.
  apply (rem_2078 epsilon_m__type_16_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_2081 : auto___type_16 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2082 : auto___type_16 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2083 : auto___type_16 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2084 : forall X1 X2 X3 X4:term, auto___type_16 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2085 : forall X1 X2 X3 X4:term, auto___type_16 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2086 : forall X1:term, auto___type_16 X1 -> auto___type_11 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_16_p__type_11 1.
  intro X. case X.
  exact (rem_1981 epsilon_m__type_16_p__type_11 ).
  exact (rem_1978 epsilon_m__type_16_p__type_11 ).
  intros X1 X2;  exact (rem_2080 epsilon_m__type_16_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_2077 epsilon_m__type_16_p__type_11 X1 X2).
  exact (rem_1995 epsilon_m__type_16_p__type_11 ).
  intros X1 X2;  exact (rem_2015 epsilon_m__type_16_p__type_11 X1 X2).
  exact (rem_1992 epsilon_m__type_16_p__type_11 ).
  intros X1;  exact (rem_2020 epsilon_m__type_16_p__type_11 X1).
  intros X1;  exact (rem_2026 epsilon_m__type_16_p__type_11 X1).
  intros X1 X2 X3;  exact (rem_2035 epsilon_m__type_16_p__type_11 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_2023 epsilon_m__type_16_p__type_11 X1 X2 X3).
   intro H. elim (rem_2082  H).
   intro H. elim (rem_2083  H).
  intros X1;  exact (rem_1986 epsilon_m__type_16_p__type_11 X1).
  exact (rem_1989 epsilon_m__type_16_p__type_11 ).
  intros X1 X2 X3 X4. intro H. elim (rem_2084 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_2085 X1 X2 X3 X4 H).
   intro H. elim (rem_2081  H).
Qed.

Remark rem_2087 : forall X1 X2 X3 X4:term, auto___def_87 (cons server nil) -> auto___type_14 X2 -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_16 X1 -> auto___type_11 X1). tauto. exact (rem_2086 X1).
Qed.

Remark rem_2088 : (forall X:term, auto___type_14 X -> auto_agent X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_14_pagent.  tauto.
Defined.

Remark rem_2089 : (forall X:term, auto___type_14 X -> auto_agent X)
    -> auto_agent bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_pagent.  case (rem_2088 epsilon_m__type_14_pagent). clear  epsilon_m__type_14_pagent. intros. apply trans_agent_bob_1;  tauto.
 clear  epsilon_m__type_14_pagent. tauto.
Defined.

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

Remark rem_2091 : (forall X:term, auto___type_14 X -> auto_agent X)
    -> auto___type_14 bob -> auto_agent bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_pagent. intro H. intros.
  elim (rem_2090 H);  intros.
  apply (rem_2089 epsilon_m__type_14_pagent);  tauto.
Defined.

Remark rem_2092 : (forall X:term, auto___type_14 X -> auto_agent X)
    -> auto_agent alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_pagent.  case (rem_2088 epsilon_m__type_14_pagent). clear  epsilon_m__type_14_pagent. intros. apply trans_agent_alice_1;  tauto.
 clear  epsilon_m__type_14_pagent. tauto.
Defined.

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

Remark rem_2094 : (forall X:term, auto___type_14 X -> auto_agent X)
    -> auto___type_14 alice -> auto_agent alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_pagent. intro H. intros.
  elim (rem_2093 H);  intros.
  apply (rem_2092 epsilon_m__type_14_pagent);  tauto.
Defined.

Remark rem_2095 : (forall X:term, auto___type_14 X -> auto_agent X)
    -> auto_agent server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_pagent.  case (rem_2088 epsilon_m__type_14_pagent). clear  epsilon_m__type_14_pagent. intros. apply trans_agent_server_1;  tauto.
 clear  epsilon_m__type_14_pagent. tauto.
Defined.

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

Remark rem_2097 : (forall X:term, auto___type_14 X -> auto_agent X)
    -> auto___type_14 server -> auto_agent server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_pagent. intro H. intros.
  elim (rem_2096 H);  intros.
  apply (rem_2095 epsilon_m__type_14_pagent);  tauto.
Defined.

Remark rem_2098 : (forall X:term, auto___type_14 X -> auto_agent X)
    -> auto_agent i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_pagent.  case (rem_2088 epsilon_m__type_14_pagent). clear  epsilon_m__type_14_pagent. intros. apply trans_agent_i_1;  tauto.
 clear  epsilon_m__type_14_pagent. tauto.
Defined.

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

Remark rem_2100 : (forall X:term, auto___type_14 X -> auto_agent X)
    -> auto___type_14 i -> auto_agent i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_pagent. intro H. intros.
  elim (rem_2099 H);  intros.
  apply (rem_2098 epsilon_m__type_14_pagent);  tauto.
Defined.

Remark rem_2101 : auto___type_14 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2102 : auto___type_14 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_2104 : auto___type_14 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_2106 : forall X1:term, auto___type_14 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2107 : forall X1 X2 X3:term, auto___type_14 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2108 : auto___type_14 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2109 : forall X1:term, auto___type_14 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2110 : forall X1 X2 X3:term, auto___type_14 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_2113 : forall X1 X2 X3 X4:term, auto___type_14 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2114 : forall X1 X2 X3 X4:term, auto___type_14 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2115 : forall X2:term, auto___type_14 X2 -> auto_agent X2. (* Induct. *)
Proof.
  fix epsilon_m__type_14_pagent 1.
  intro X. case X.
  exact (rem_2094 epsilon_m__type_14_pagent ).
  exact (rem_2091 epsilon_m__type_14_pagent ).
  intros X1 X2. intro H. elim (rem_2112 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2111 X1 X2 H).
  exact (rem_2100 epsilon_m__type_14_pagent ).
  intros X1 X2. intro H. elim (rem_2105 X1 X2 H).
   intro H. elim (rem_2104  H).
  intros X1. intro H. elim (rem_2106 X1 H).
  intros X1. intro H. elim (rem_2109 X1 H).
  intros X1 X2 X3. intro H. elim (rem_2110 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_2107 X1 X2 X3 H).
   intro H. elim (rem_2102  H).
   intro H. elim (rem_2108  H).
  intros X1. intro H. elim (rem_2103 X1 H).
  exact (rem_2097 epsilon_m__type_14_pagent ).
  intros X1 X2 X3 X4. intro H. elim (rem_2113 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_2114 X1 X2 X3 X4 H).
   intro H. elim (rem_2101  H).
Qed.

Remark rem_2116 : forall X1 X2 X3 X4:term, auto___def_87 (cons server nil) -> auto___type_14 X2 -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_14 X2 -> auto_agent X2). tauto. exact (rem_2115 X2).
Qed.

Remark rem_2117 : (forall X:term, auto___type_14 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_14_pknows_current.  tauto.
Defined.

Remark rem_2118 : (forall X:term, auto___type_14 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_pknows_current.  case (rem_2117 epsilon_m__type_14_pknows_current). clear  epsilon_m__type_14_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_14_pknows_current. tauto.
Defined.

Remark rem_2119 : (forall X:term, auto___type_14 X -> auto_knows_current X)
    -> auto___type_14 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_pknows_current. intro H. intros.
  elim (rem_2090 H);  intros.
  apply (rem_2118 epsilon_m__type_14_pknows_current);  tauto.
Defined.

Remark rem_2120 : (forall X:term, auto___type_14 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_pknows_current.  case (rem_2117 epsilon_m__type_14_pknows_current). clear  epsilon_m__type_14_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_14_pknows_current. tauto.
Defined.

Remark rem_2121 : (forall X:term, auto___type_14 X -> auto_knows_current X)
    -> auto___type_14 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_pknows_current. intro H. intros.
  elim (rem_2093 H);  intros.
  apply (rem_2120 epsilon_m__type_14_pknows_current);  tauto.
Defined.

Remark rem_2122 : (forall X:term, auto___type_14 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_pknows_current.  case (rem_2117 epsilon_m__type_14_pknows_current). clear  epsilon_m__type_14_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_14_pknows_current. tauto.
Defined.

Remark rem_2123 : (forall X:term, auto___type_14 X -> auto_knows_current X)
    -> auto___type_14 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_pknows_current. intro H. intros.
  elim (rem_2096 H);  intros.
  apply (rem_2122 epsilon_m__type_14_pknows_current);  tauto.
Defined.

Remark rem_2124 : (forall X:term, auto___type_14 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_pknows_current.  case (rem_2117 epsilon_m__type_14_pknows_current). clear  epsilon_m__type_14_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_14_pknows_current. tauto.
Defined.

Remark rem_2125 : (forall X:term, auto___type_14 X -> auto_knows_current X)
    -> auto___type_14 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_pknows_current. intro H. intros.
  elim (rem_2099 H);  intros.
  apply (rem_2124 epsilon_m__type_14_pknows_current);  tauto.
Defined.

Remark rem_2126 : forall X2:term, auto___type_14 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__type_14_pknows_current 1.
  intro X. case X.
  exact (rem_2121 epsilon_m__type_14_pknows_current ).
  exact (rem_2119 epsilon_m__type_14_pknows_current ).
  intros X1 X2. intro H. elim (rem_2112 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2111 X1 X2 H).
  exact (rem_2125 epsilon_m__type_14_pknows_current ).
  intros X1 X2. intro H. elim (rem_2105 X1 X2 H).
   intro H. elim (rem_2104  H).
  intros X1. intro H. elim (rem_2106 X1 H).
  intros X1. intro H. elim (rem_2109 X1 H).
  intros X1 X2 X3. intro H. elim (rem_2110 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_2107 X1 X2 X3 H).
   intro H. elim (rem_2102  H).
   intro H. elim (rem_2108  H).
  intros X1. intro H. elim (rem_2103 X1 H).
  exact (rem_2123 epsilon_m__type_14_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_2113 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_2114 X1 X2 X3 X4 H).
   intro H. elim (rem_2101  H).
Qed.

Remark rem_2127 : forall X1 X2 X3 X4:term, auto___def_87 (cons server nil) -> auto___type_14 X2 -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_14 X2 -> auto_knows_current X2). tauto. exact (rem_2126 X2).
Qed.

Remark rem_2128 : forall X1 X2 X3 X4:term, auto___def_87 (cons server nil) -> auto___type_14 X2 -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> 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_1900 X3).
Qed.

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

Remark rem_2130 : (forall X:term, auto___type_14 X -> auto___type_12 X)
    -> auto___type_12 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_p__type_12.  case (rem_2129 epsilon_m__type_14_p__type_12). clear  epsilon_m__type_14_p__type_12. intros. apply trans___type_12_bob_1;  tauto.
 clear  epsilon_m__type_14_p__type_12. tauto.
Defined.

Remark rem_2131 : (forall X:term, auto___type_14 X -> auto___type_12 X)
    -> auto___type_14 bob -> auto___type_12 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_p__type_12. intro H. intros.
  elim (rem_2090 H);  intros.
  apply (rem_2130 epsilon_m__type_14_p__type_12);  tauto.
Defined.

Remark rem_2132 : (forall X:term, auto___type_14 X -> auto___type_12 X)
    -> auto___type_12 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_p__type_12.  case (rem_2129 epsilon_m__type_14_p__type_12). clear  epsilon_m__type_14_p__type_12. intros. apply trans___type_12_alice_1;  tauto.
 clear  epsilon_m__type_14_p__type_12. tauto.
Defined.

Remark rem_2133 : (forall X:term, auto___type_14 X -> auto___type_12 X)
    -> auto___type_14 alice -> auto___type_12 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_p__type_12. intro H. intros.
  elim (rem_2093 H);  intros.
  apply (rem_2132 epsilon_m__type_14_p__type_12);  tauto.
Defined.

Remark rem_2134 : (forall X:term, auto___type_14 X -> auto___type_12 X)
    -> auto___type_12 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_p__type_12.  case (rem_2129 epsilon_m__type_14_p__type_12). clear  epsilon_m__type_14_p__type_12. intros. apply trans___type_12_server_1;  tauto.
 clear  epsilon_m__type_14_p__type_12. tauto.
Defined.

Remark rem_2135 : (forall X:term, auto___type_14 X -> auto___type_12 X)
    -> auto___type_14 server -> auto___type_12 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_p__type_12. intro H. intros.
  elim (rem_2096 H);  intros.
  apply (rem_2134 epsilon_m__type_14_p__type_12);  tauto.
Defined.

Remark rem_2136 : (forall X:term, auto___type_14 X -> auto___type_12 X)
    -> auto___type_12 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_14_p__type_12.  case (rem_2129 epsilon_m__type_14_p__type_12). clear  epsilon_m__type_14_p__type_12. intros. apply trans___type_12_i_1;  tauto.
 clear  epsilon_m__type_14_p__type_12. tauto.
Defined.

Remark rem_2137 : (forall X:term, auto___type_14 X -> auto___type_12 X)
    -> auto___type_14 i -> auto___type_12 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_14_p__type_12. intro H. intros.
  elim (rem_2099 H);  intros.
  apply (rem_2136 epsilon_m__type_14_p__type_12);  tauto.
Defined.

Remark rem_2138 : forall X4:term, auto___type_14 X4 -> auto___type_12 X4. (* Induct. *)
Proof.
  fix epsilon_m__type_14_p__type_12 1.
  intro X. case X.
  exact (rem_2133 epsilon_m__type_14_p__type_12 ).
  exact (rem_2131 epsilon_m__type_14_p__type_12 ).
  intros X1 X2. intro H. elim (rem_2112 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2111 X1 X2 H).
  exact (rem_2137 epsilon_m__type_14_p__type_12 ).
  intros X1 X2. intro H. elim (rem_2105 X1 X2 H).
   intro H. elim (rem_2104  H).
  intros X1. intro H. elim (rem_2106 X1 H).
  intros X1. intro H. elim (rem_2109 X1 H).
  intros X1 X2 X3. intro H. elim (rem_2110 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_2107 X1 X2 X3 H).
   intro H. elim (rem_2102  H).
   intro H. elim (rem_2108  H).
  intros X1. intro H. elim (rem_2103 X1 H).
  exact (rem_2135 epsilon_m__type_14_p__type_12 ).
  intros X1 X2 X3 X4. intro H. elim (rem_2113 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_2114 X1 X2 X3 X4 H).
   intro H. elim (rem_2101  H).
Qed.

Remark rem_2139 : forall X1 X2 X3 X4:term, auto___def_87 (cons server nil) -> auto___type_14 X2 -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___type_12 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_14 X4 -> auto___type_12 X4). tauto. exact (rem_2138 X4).
Qed.

Remark rem_2140 : forall X1 X2 X3 X4:term, auto___def_87 (cons server nil) -> auto___type_14 X2 -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> (auto___type_11 X1 /\ auto_agent X2 /\ auto_knows_current X2 /\ auto_knows_current X3 /\ auto___type_12 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto___type_11 X1). 2:apply (rem_2087 X1 X2 X3 X4);  assumption.
  cut (auto_agent X2). 2:apply (rem_2116 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_2127 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_2128 X1 X2 X3 X4);  assumption.
  cut (auto___type_12 X4). 2:apply (rem_2139 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_2141 : forall X1 X2 X3 X4:term, auto___def_87 (cons server nil) -> auto___type_14 X2 -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_2140 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans___def_74_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_2142 : forall X1 X2 X3 X4:term, auto___type_14 X2 -> auto___def_87 (cons server nil) -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_87 (cons server nil) -> auto___type_14 X2 -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_2141 X1 X2 X3 X4).
Qed.

Remark rem_2143 : forall X1 X2:term, auto___def_94 (cons X1 X2) -> or_1
    (auto___type_14 X1 /\ auto___def_87 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2144 : forall X1 X2 X3 X4:term, auto___def_94 (cons X2 (cons server nil)) -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2143 X2 (cons server nil) H);  intros.
  apply (rem_2142 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2145 : forall X1 X2 X3 X4:term, auto___def_92 nil -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_94 (cons X2 (cons server nil)) -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_2144 X1 X2 X3 X4).
Qed.

Remark rem_2146 : forall X1 X2 X3 X4:term, auto___type_14 X4 -> auto___def_92 nil -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_92 nil -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_14 X4 -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_2145 X1 X2 X3 X4).
Qed.

Remark rem_2147 : forall X1 X2 X3 X4:term, auto___def_91 (cons X4 nil) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_760 X4 nil H);  intros.
  apply (rem_2146 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2148 : forall X1 X2 X3 X4:term, auto___def_83 sym -> auto___def_91 (cons X4 nil) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_91 (cons X4 nil) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_2147 X1 X2 X3 X4).
Qed.

Remark rem_2149 : forall X1 X2 X3 X4:term, auto___def_83 sym -> auto___def_94 (cons X2 (cons server nil)) -> auto___def_91 (cons X4 nil) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_83 sym -> auto___def_91 (cons X4 nil) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_2148 X1 X2 X3 X4).
Qed.

Remark rem_2150 : forall X1 X2 X3 X4:term, auto___def_90 (key sym (cons X2 (cons server nil))) -> auto___def_91 (cons X4 nil) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_470 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_2149 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2151 : forall X1 X2 X3 X4:term, auto___type_16 X1 -> auto___def_91 (cons X4 nil) -> auto___def_90 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_90 (key sym (cons X2 (cons server nil))) -> auto___def_91 (cons X4 nil) -> auto___type_16 X1 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_2150 X1 X2 X3 X4).
Qed.

Remark rem_2152 : forall X1 X2 X3 X4:term, auto___def_89 (cons X1 (cons X4 nil)) -> auto___def_90 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_766 X1 (cons X4 nil) H);  intros.
  apply (rem_2151 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2153 : forall X1 X2 X3 X4:term, auto___def_84 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (cons X1 (cons X4 nil)) -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_768 X2 (cons server nil) H);  intros.
Qed.

Remark rem_2154 : forall X1 X2 X3 X4:term, auto___def_83 sym -> auto___def_84 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (cons X1 (cons X4 nil)) -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_84 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (cons X1 (cons X4 nil)) -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_2153 X1 X2 X3 X4).
Qed.

Remark rem_2155 : forall X1 X2 X3 X4:term, auto___def_81 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (cons X1 (cons X4 nil)) -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_477 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_2154 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2156 : forall X1 X2 X3 X4:term, auto_knows_current (cons X1 (cons X4 nil)) -> auto___def_81 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_81 (key sym (cons X2 (cons server nil))) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (cons X1 (cons X4 nil)) -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_2155 X1 X2 X3 X4).
Qed.

Remark rem_2157 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_109 (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil))) H);  intros.
  apply (rem_958 X1 X2 X3 X4);  tauto.
  apply (rem_1925 X1 X2 X3 X4);  tauto.
  apply (rem_1934 X1 X2 X3 X4);  tauto.
  apply (rem_1947 X1 X2 X3 X4);  tauto.
  apply (rem_1974 X1 X2 X3 X4);  tauto.
  apply (rem_2152 X1 X2 X3 X4);  tauto.
  apply (rem_2156 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2158 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) -> auto_knows_current nil -> auto___def_74 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) -> auto___def_74 X1 X2 X3 X4). tauto.
  exact (rem_2157 X1 X2 X3 X4).
Qed.

Remark rem_2159 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) -> auto_knows_current nil -> auto_knows_current X2 -> auto_knows_current X3 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) -> auto_knows_current nil -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_2158 X1 X2 X3 X4).
Qed.

Remark rem_2160 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil) -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_112 (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil H);  intros.
  apply (rem_2159 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2161 : forall X1 X2 X3 X4:term, auto_knows_current X3 -> auto_knows_current (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil) -> auto_knows_current X2 -> auto___def_74 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil) -> auto___def_74 X1 X2 X3 X4). tauto. exact (rem_2160 X1 X2 X3 X4).
Qed.

Remark rem_2162 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (cons X3 (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil)) -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_112 X3 (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil) H);  intros.
  apply (rem_2161 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2163 : forall X1 X2 X3 X4:term, auto_knows_current (cons X2 (cons X3 (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil))) -> auto___def_74 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_112 X2 (cons X3 (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil)) H);  intros.
  apply (rem_2162 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2164 : auto___def_20 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2165 : auto___def_20 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2164 H);  intros.
Qed.

Remark rem_2166 : forall X1 X2:term, auto___def_16 X2 -> auto___def_20 prv -> auto___def_21 X1 -> auto___def_3 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_20 prv -> False). tauto.
  exact (rem_2165).
Qed.

Remark rem_2167 : forall X1 X2:term, auto___def_20 prv -> auto___def_21 X1 -> auto___def_16 X2 -> auto___def_3 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_16 X2 -> auto___def_20 prv -> auto___def_21 X1 -> auto___def_3 X1 X2). tauto. exact (rem_2166 X1 X2).
Qed.

Remark rem_2168 : forall X1 X2:term, auto___def_16 X2 -> auto___def_17 (key prv X1) -> auto___def_3 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_275 prv X1 H);  intros.
  apply (rem_2167 X1 X2);  tauto.
Qed.

Remark rem_2169 : auto___def_34 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1164 H);  intros.
Qed.

Remark rem_2170 : forall X1 X2:term, auto___def_34 prv -> auto___def_40 X2 -> auto___def_45 X1 -> auto___def_3 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 prv -> False). tauto.
  exact (rem_2169).
Qed.

Remark rem_2171 : forall X1 X2:term, auto___def_34 prv -> auto___def_45 X1 -> auto___def_40 X2 -> auto___def_3 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_34 prv -> auto___def_40 X2 -> auto___def_45 X1 -> auto___def_3 X1 X2). tauto. exact (rem_2170 X1 X2).
Qed.

Remark rem_2172 : forall X1 X2:term, auto___def_40 X2 -> auto___def_41 (key prv X1) -> auto___def_3 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_284 prv X1 H);  intros.
  apply (rem_2171 X1 X2);  tauto.
Qed.

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

Remark rem_2174 : forall X1 X2:term, auto___def_51 prv -> auto___def_52 X1 -> auto_knows_old X2 -> auto___def_52 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_52 X1 -> auto___def_52 X1). tauto. exact (rem_2173 X1).
Qed.

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

Remark rem_2176 : forall X1 X2:term, auto___def_51 prv -> auto___def_52 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_2175 X2).
Qed.

Remark rem_2177 : forall X1 X2:term, auto___def_51 prv -> auto___def_52 X1 -> auto_knows_old X2 -> (auto___def_52 X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_52 X1). 2:apply (rem_2174 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2176 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2178 : forall X1 X2:term, auto___def_51 prv -> auto___def_52 X1 -> auto_knows_old X2 -> auto___def_3 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_2177 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_3_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_2179 : auto___def_50 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2180 : auto___def_50 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2179 H);  intros.
Qed.

Remark rem_2181 : forall X1 X2:term, auto___def_50 prv -> auto_knows_old X2 -> auto___def_3 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_50 prv -> False). tauto.
  exact (rem_2180).
Qed.

Remark rem_2182 : forall X1 X2:term, auto___def_50 prv -> auto___type_9 X1 -> auto_knows_old X2 -> auto___def_3 X1 X2. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2. intros. apply (rem_2181 X1 X2);  assumption.
Qed.

Remark rem_2183 : 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_293 prv X1 H);  intros.
  apply (rem_2178 X1 X2);  tauto.
  apply (rem_2182 X1 X2);  tauto.
Qed.

Remark rem_2184 : forall X1 X2:term, auto___def_29 X2 -> auto___def_34 prv -> auto___def_37 X1 -> auto___def_3 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 prv -> False). tauto.
  exact (rem_2169).
Qed.

Remark rem_2185 : forall X1 X2:term, auto___def_34 prv -> auto___def_37 X1 -> auto___def_29 X2 -> auto___def_3 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_29 X2 -> auto___def_34 prv -> auto___def_37 X1 -> auto___def_3 X1 X2). tauto. exact (rem_2184 X1 X2).
Qed.

Remark rem_2186 : forall X1 X2:term, auto___def_29 X2 -> auto___def_30 (key prv X1) -> auto___def_3 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_302 prv X1 H);  intros.
  apply (rem_2185 X1 X2);  tauto.
Qed.

Remark rem_2187 : forall X1 X2:term, auto___def_34 prv -> auto___def_35 X1 -> auto___type_4 X2 -> auto___def_3 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 prv -> False). tauto.
  exact (rem_2169).
Qed.

Remark rem_2188 : forall X1 X2:term, auto___def_32 (key prv X1) -> auto___type_4 X2 -> auto___def_3 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_310 prv X1 H);  intros.
  apply (rem_2187 X1 X2);  tauto.
Qed.

Remark rem_2189 : forall X1 X2:term, auto___type_4 X2 -> auto___def_32 (key prv X1) -> auto___def_3 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_32 (key prv X1) -> auto___type_4 X2 -> auto___def_3 X1 X2). tauto. exact (rem_2188 X1 X2).
Qed.

Remark rem_2190 : 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_313 X2 (key prv X1) H);  intros.
  apply (rem_2168 X1 X2);  tauto.
  apply (rem_2172 X1 X2);  tauto.
  apply (rem_2183 X1 X2);  tauto.
  apply (rem_2186 X1 X2);  tauto.
  apply (rem_2189 X1 X2);  tauto.
Qed.

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

Remark rem_2192 : forall X1:term, auto_agent X1 -> auto___def_63 (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_2191 X1 A1). clear  A1. intros. apply trans___def_63_noncea_current_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_2193 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto___type_12 X3 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_11 X1 -> auto___type_11 X1). tauto. exact (rem_425 X1).
Qed.

Remark rem_2194 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto___type_12 X3 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X4 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_259 X2).
Qed.

Remark rem_2195 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto___type_12 X3 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X2 -> auto_knows_current X2). tauto. exact (rem_1959 X2).
Qed.

Remark rem_2196 : forall X3:term, auto___type_12 X3 -> auto___type_12 X3. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2197 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto___type_12 X3 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___type_12 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_12 X3 -> auto___type_12 X3). tauto. exact (rem_2196 X3).
Qed.

Remark rem_2198 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto___type_12 X3 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X4 -> auto_knows_current X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X4 -> auto_knows_current X4). tauto. exact (rem_666 X4).
Qed.

Remark rem_2199 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto___type_12 X3 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X4 -> (auto___type_11 X1 /\ auto_agent X2 /\ auto_knows_current X2 /\ auto___type_12 X3 /\ auto_knows_current X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto___type_11 X1). 2:apply (rem_2193 X1 X2 X3 X4);  assumption.
  cut (auto_agent X2). 2:apply (rem_2194 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_2195 X1 X2 X3 X4);  assumption.
  cut (auto___type_12 X3). 2:apply (rem_2197 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X4). 2:apply (rem_2198 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_2200 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto___type_12 X3 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_84 (session_current X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_2199 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans___def_84_session_current_1;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_2201 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___type_12 X3 -> auto___def_84 (session_current X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___type_11 X1 -> auto___type_12 X3 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X4 -> auto___def_84 (session_current X1 X2 X3 X4)). tauto. exact (rem_2200 X1 X2 X3 X4).
Qed.

Remark rem_2202 : forall X1 X2 X3 X4:term, auto___def_74 X1 X2 X4 X3 -> auto___def_84 (session_current X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_122 X1 X2 X4 X3 H);  intros.
  apply (rem_2201 X1 X2 X3 X4);  tauto.
Qed.

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

Remark rem_2204 : forall X1 X2:term, auto___def_63 X1 -> auto___def_9 X2 -> auto___def_63 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_63 X1 -> auto___def_63 X1). tauto. exact (rem_2203 X1).
Qed.

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

Remark rem_2206 : forall X1 X2:term, auto___def_63 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_2205 X2).
Qed.

Remark rem_2207 : forall X1 X2:term, auto___def_63 X1 -> auto___def_9 X2 -> (auto___def_63 X1 /\ auto___def_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_63 X1). 2:apply (rem_2204 X1 X2);  assumption.
  cut (auto___def_9 X2). 2:apply (rem_2206 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2208 : forall X1 X2:term, auto___def_63 X1 -> auto___def_9 X2 -> auto___def_62 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2207 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_62_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2209 : forall X1 X2:term, auto___def_9 X2 -> auto___def_63 X1 -> auto___def_62 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_63 X1 -> auto___def_9 X2 -> auto___def_62 (cons X1 X2)). tauto. exact (rem_2208 X1 X2).
Qed.

Remark rem_2210 : auto___def_50 pub. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_50_pub_1;  tauto.
 tauto.
Qed.

Remark rem_2211 : forall X1 X2 X3:term, auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_449 X1).
Qed.

Remark rem_2212 : forall X1 X2 X3:term, auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_259 X2).
Qed.

Remark rem_2213 : forall X1 X2 X3:term, auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1 -> 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_1900 X3).
Qed.

Remark rem_2214 : forall X1 X2 X3:term, auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_2211 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_2212 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_2213 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_2215 : forall X1 X2 X3:term, auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto___def_66 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2214 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_66_nonceb_current_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_2216 : forall X1 X2 X3:term, auto_knows_current X1 -> auto_knows_current X3 -> auto_agent X2 -> auto___def_66 (nonceb_current X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto___def_66 (nonceb_current X1 X2 X3)). tauto. exact (rem_2215 X1 X2 X3).
Qed.

Remark rem_2217 : forall X1 X2 X3:term, auto___def_64 X1 X3 -> auto_agent X2 -> auto___def_66 (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_417 X1 X3 H);  intros.
  apply (rem_2216 X1 X2 X3);  tauto.
Qed.

Remark rem_2218 : auto___def_52 i. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_52_i_1;  tauto.
 tauto.
Qed.

Remark rem_2219 : (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_2220 : (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_2219 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_2221 : (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_598 H);  intros.
  apply (rem_2220 epsilon_magent_p__type_14);  tauto.
Defined.

Remark rem_2222 : (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_2219 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_2223 : (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_601 H);  intros.
  apply (rem_2222 epsilon_magent_p__type_14);  tauto.
Defined.

Remark rem_2224 : (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_2219 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_2225 : (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_604 H);  intros.
  apply (rem_2224 epsilon_magent_p__type_14);  tauto.
Defined.

Remark rem_2226 : (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_2219 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_2227 : (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_607 H);  intros.
  apply (rem_2226 epsilon_magent_p__type_14);  tauto.
Defined.

Remark rem_2228 : 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_2223 epsilon_magent_p__type_14 ).
  exact (rem_2221 epsilon_magent_p__type_14 ).
  intros X1 X2. intro H. elim (rem_620 X1 X2 H).
  intros X1 X2. intro H. elim (rem_619 X1 X2 H).
  exact (rem_2227 epsilon_magent_p__type_14 ).
  intros X1 X2. intro H. elim (rem_613 X1 X2 H).
   intro H. elim (rem_612  H).
  intros X1. intro H. elim (rem_614 X1 H).
  intros X1. intro H. elim (rem_617 X1 H).
  intros X1 X2 X3. intro H. elim (rem_618 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_615 X1 X2 X3 H).
   intro H. elim (rem_610  H).
   intro H. elim (rem_616  H).
  intros X1. intro H. elim (rem_611 X1 H).
  exact (rem_2225 epsilon_magent_p__type_14 ).
  intros X1 X2 X3 X4. intro H. elim (rem_621 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_622 X1 X2 X3 X4 H).
   intro H. elim (rem_609  H).
Qed.

Remark rem_2229 : forall X1 X2 X3 X4:term, auto___type_11 X2 -> auto___type_12 X3 -> auto_agent X1 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___type_14 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X1 -> auto___type_14 X1). tauto. exact (rem_2228 X1).
Qed.

Remark rem_2230 : forall X1 X2 X3 X4:term, auto___type_11 X2 -> auto_agent X1 -> auto_knows_current X1 -> auto_knows_current X3 -> auto___type_12 X4 -> auto___type_14 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto___type_11 X2 -> auto___type_12 X3 -> auto_agent X1 -> auto_knows_current X4 -> auto_knows_current X1 -> auto___type_14 X1). tauto. exact (rem_2229 X1 X2 X3 X4).
Qed.

Remark rem_2231 : forall X1 X2 X3 X4:term, auto___def_74 X2 X1 X3 X4 -> auto___type_14 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_122 X2 X1 X3 X4 H);  intros.
  apply (rem_2230 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2232 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto___type_3 X3 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___type_2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_2 X1 -> auto___type_2 X1). tauto. exact (rem_625 X1).
Qed.

Remark rem_2233 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto___type_3 X3 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X4 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_259 X2).
Qed.

Remark rem_2234 : (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_2235 : (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_2234 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_2236 : (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_598 H);  intros.
  apply (rem_2235 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_2237 : (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_2234 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_2238 : (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_601 H);  intros.
  apply (rem_2237 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_2239 : (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_2234 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_2240 : (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_604 H);  intros.
  apply (rem_2239 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_2241 : (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_2234 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_2242 : (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_607 H);  intros.
  apply (rem_2241 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_2243 : forall X2:term, auto_agent X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_magent_pknows_old 1.
  intro X. case X.
  exact (rem_2238 epsilon_magent_pknows_old ).
  exact (rem_2236 epsilon_magent_pknows_old ).
  intros X1 X2. intro H. elim (rem_620 X1 X2 H).
  intros X1 X2. intro H. elim (rem_619 X1 X2 H).
  exact (rem_2242 epsilon_magent_pknows_old ).
  intros X1 X2. intro H. elim (rem_613 X1 X2 H).
   intro H. elim (rem_612  H).
  intros X1. intro H. elim (rem_614 X1 H).
  intros X1. intro H. elim (rem_617 X1 H).
  intros X1 X2 X3. intro H. elim (rem_618 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_615 X1 X2 X3 H).
   intro H. elim (rem_610  H).
   intro H. elim (rem_616  H).
  intros X1. intro H. elim (rem_611 X1 H).
  exact (rem_2240 epsilon_magent_pknows_old ).
  intros X1 X2 X3 X4. intro H. elim (rem_621 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_622 X1 X2 X3 X4 H).
   intro H. elim (rem_609  H).
Qed.

Remark rem_2244 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto___type_3 X3 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X2 -> auto_knows_old X2). tauto. exact (rem_2243 X2).
Qed.

Remark rem_2245 : forall X3:term, auto___type_3 X3 -> auto___type_3 X3. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2246 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto___type_3 X3 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___type_3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_3 X3 -> auto___type_3 X3). tauto. exact (rem_2245 X3).
Qed.

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

Remark rem_2248 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto___type_3 X3 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X4 -> auto_knows_old X4). tauto. exact (rem_2247 X4).
Qed.

Remark rem_2249 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto___type_3 X3 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X4 -> (auto___type_2 X1 /\ auto_agent X2 /\ auto_knows_old X2 /\ auto___type_3 X3 /\ auto_knows_old X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto___type_2 X1). 2:apply (rem_2232 X1 X2 X3 X4);  assumption.
  cut (auto_agent X2). 2:apply (rem_2233 X1 X2 X3 X4);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2244 X1 X2 X3 X4);  assumption.
  cut (auto___type_3 X3). 2:apply (rem_2246 X1 X2 X3 X4);  assumption.
  cut (auto_knows_old X4). 2:apply (rem_2248 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_2250 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto___type_3 X3 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_35 (session_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_2249 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans___def_35_session_old_1;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_2251 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___type_3 X3 -> auto___def_35 (session_old X1 X2 X3 X4). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___type_2 X1 -> auto___type_3 X3 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_35 (session_old X1 X2 X3 X4)). tauto. exact (rem_2250 X1 X2 X3 X4).
Qed.

Remark rem_2252 : forall X1 X2 X3 X4:term, auto___def_25 X1 X2 X4 X3 -> auto___def_35 (session_old X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_242 X1 X2 X4 X3 H);  intros.
  apply (rem_2251 X1 X2 X3 X4);  tauto.
Qed.

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

Remark rem_2254 : forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> auto___def_20 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_20 X1 -> auto___def_20 X1). tauto. exact (rem_2253 X1).
Qed.

Remark rem_2255 : forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> auto___def_21 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_21 X2 -> auto___def_21 X2). tauto. exact (rem_270 X2).
Qed.

Remark rem_2256 : forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> (auto___def_20 X1 /\ auto___def_21 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_20 X1). 2:apply (rem_2254 X1 X2);  assumption.
  cut (auto___def_21 X2). 2:apply (rem_2255 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2257 : forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> auto___def_71 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2256 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_71_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2258 : forall X1 X2:term, auto___def_21 X2 -> auto___def_20 X1 -> auto___def_71 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_20 X1 -> auto___def_21 X2 -> auto___def_71 (key X1 X2)). tauto. exact (rem_2257 X1 X2).
Qed.

Remark rem_2259 : (forall X:term, auto_agent X -> auto___type_10 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p__type_10.  tauto.
Defined.

Remark rem_2260 : (forall X:term, auto_agent X -> auto___type_10 X)
    -> auto___type_10 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_10.  case (rem_2259 epsilon_magent_p__type_10). clear  epsilon_magent_p__type_10. intros. apply trans___type_10_bob_1;  tauto.
 clear  epsilon_magent_p__type_10. tauto.
Defined.

Remark rem_2261 : (forall X:term, auto_agent X -> auto___type_10 X)
    -> auto_agent bob -> auto___type_10 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_10. intro H. intros.
  elim (rem_598 H);  intros.
  apply (rem_2260 epsilon_magent_p__type_10);  tauto.
Defined.

Remark rem_2262 : (forall X:term, auto_agent X -> auto___type_10 X)
    -> auto___type_10 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_10.  case (rem_2259 epsilon_magent_p__type_10). clear  epsilon_magent_p__type_10. intros. apply trans___type_10_alice_1;  tauto.
 clear  epsilon_magent_p__type_10. tauto.
Defined.

Remark rem_2263 : (forall X:term, auto_agent X -> auto___type_10 X)
    -> auto_agent alice -> auto___type_10 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_10. intro H. intros.
  elim (rem_601 H);  intros.
  apply (rem_2262 epsilon_magent_p__type_10);  tauto.
Defined.

Remark rem_2264 : (forall X:term, auto_agent X -> auto___type_10 X)
    -> auto___type_10 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_10.  case (rem_2259 epsilon_magent_p__type_10). clear  epsilon_magent_p__type_10. intros. apply trans___type_10_server_1;  tauto.
 clear  epsilon_magent_p__type_10. tauto.
Defined.

Remark rem_2265 : (forall X:term, auto_agent X -> auto___type_10 X)
    -> auto_agent server -> auto___type_10 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_10. intro H. intros.
  elim (rem_604 H);  intros.
  apply (rem_2264 epsilon_magent_p__type_10);  tauto.
Defined.

Remark rem_2266 : (forall X:term, auto_agent X -> auto___type_10 X)
    -> auto___type_10 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p__type_10.  case (rem_2259 epsilon_magent_p__type_10). clear  epsilon_magent_p__type_10. intros. apply trans___type_10_i_1;  tauto.
 clear  epsilon_magent_p__type_10. tauto.
Defined.

Remark rem_2267 : (forall X:term, auto_agent X -> auto___type_10 X)
    -> auto_agent i -> auto___type_10 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p__type_10. intro H. intros.
  elim (rem_607 H);  intros.
  apply (rem_2266 epsilon_magent_p__type_10);  tauto.
Defined.

Remark rem_2268 : forall X1:term, auto_agent X1 -> auto___type_10 X1. (* Induct. *)
Proof.
  fix epsilon_magent_p__type_10 1.
  intro X. case X.
  exact (rem_2263 epsilon_magent_p__type_10 ).
  exact (rem_2261 epsilon_magent_p__type_10 ).
  intros X1 X2. intro H. elim (rem_620 X1 X2 H).
  intros X1 X2. intro H. elim (rem_619 X1 X2 H).
  exact (rem_2267 epsilon_magent_p__type_10 ).
  intros X1 X2. intro H. elim (rem_613 X1 X2 H).
   intro H. elim (rem_612  H).
  intros X1. intro H. elim (rem_614 X1 H).
  intros X1. intro H. elim (rem_617 X1 H).
  intros X1 X2 X3. intro H. elim (rem_618 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_615 X1 X2 X3 H).
   intro H. elim (rem_610  H).
   intro H. elim (rem_616  H).
  intros X1. intro H. elim (rem_611 X1 H).
  exact (rem_2265 epsilon_magent_p__type_10 ).
  intros X1 X2 X3 X4. intro H. elim (rem_621 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_622 X1 X2 X3 X4 H).
   intro H. elim (rem_609  H).
Qed.

Remark rem_2269 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_p__type_7.  tauto.
Defined.

Remark rem_2270 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> auto___type_7 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7.  case (rem_2269 epsilon_m__type_2_p__type_7). clear  epsilon_m__type_2_p__type_7. intros. apply trans___type_7_bob_1;  tauto.
 clear  epsilon_m__type_2_p__type_7. tauto.
Defined.

Remark rem_2271 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> auto___type_2 bob -> auto___type_7 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intro H. intros.
  elim (rem_1002 H);  intros.
  apply (rem_2270 epsilon_m__type_2_p__type_7);  tauto.
Defined.

Remark rem_2272 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> auto___type_7 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7.  case (rem_2269 epsilon_m__type_2_p__type_7). clear  epsilon_m__type_2_p__type_7. intros. apply trans___type_7_alice_1;  tauto.
 clear  epsilon_m__type_2_p__type_7. tauto.
Defined.

Remark rem_2273 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> auto___type_2 alice -> auto___type_7 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intro H. intros.
  elim (rem_1005 H);  intros.
  apply (rem_2272 epsilon_m__type_2_p__type_7);  tauto.
Defined.

Remark rem_2274 : (forall X:term, auto___type_2 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_2275 : (forall X:term, auto___type_2 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__type_2_p__type_7. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_2274 epsilon_m__type_2_p__type_7 X1);  assumption.
  tauto.
Defined.

Remark rem_2276 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_7 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1. intros A1.
  case (rem_2275 epsilon_m__type_2_p__type_7 X1 A1). clear  epsilon_m__type_2_p__type_7 A1. intros. apply trans___type_7_s_1;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1. tauto.
Defined.

Remark rem_2277 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto___type_2 (s X1) -> auto___type_7 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1. intro H. intros.
  elim (rem_1010 X1 H);  intros.
  apply (rem_2276 epsilon_m__type_2_p__type_7 X1);  tauto.
Defined.

Remark rem_2278 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> auto___type_7 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7.  case (rem_2269 epsilon_m__type_2_p__type_7). clear  epsilon_m__type_2_p__type_7. intros. apply trans___type_7_server_1;  tauto.
 clear  epsilon_m__type_2_p__type_7. tauto.
Defined.

Remark rem_2279 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> auto___type_2 server -> auto___type_7 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intro H. intros.
  elim (rem_1013 H);  intros.
  apply (rem_2278 epsilon_m__type_2_p__type_7);  tauto.
Defined.

Remark rem_2280 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> auto___type_7 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7.  case (rem_2269 epsilon_m__type_2_p__type_7). clear  epsilon_m__type_2_p__type_7. intros. apply trans___type_7_nil_1;  tauto.
 clear  epsilon_m__type_2_p__type_7. tauto.
Defined.

Remark rem_2281 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> auto___type_2 nil -> auto___type_7 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intro H. intros.
  elim (rem_1016 H);  intros.
  apply (rem_2280 epsilon_m__type_2_p__type_7);  tauto.
Defined.

Remark rem_2282 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> auto___type_7 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7.  case (rem_2269 epsilon_m__type_2_p__type_7). clear  epsilon_m__type_2_p__type_7. intros. apply trans___type_7_i_1;  tauto.
 clear  epsilon_m__type_2_p__type_7. tauto.
Defined.

Remark rem_2283 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> auto___type_2 i -> auto___type_7 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intro H. intros.
  elim (rem_1019 H);  intros.
  apply (rem_2282 epsilon_m__type_2_p__type_7);  tauto.
Defined.

Remark rem_2284 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2285 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_2284 epsilon_m__type_2_p__type_7 X1).
Defined.

Remark rem_2286 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2287 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_2286 epsilon_m__type_2_p__type_7 X2).
Defined.

Remark rem_2288 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_2285 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_2287 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2289 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_7 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  case (rem_2288 epsilon_m__type_2_p__type_7 X1 X2 A1 A2). clear  epsilon_m__type_2_p__type_7 A1 A2. intros. apply trans___type_7_key_1;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1 A2. tauto.
Defined.

Remark rem_2290 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2291 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_2290 epsilon_m__type_2_p__type_7 X1).
Defined.

Remark rem_2292 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2293 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_2292 epsilon_m__type_2_p__type_7 X2).
Defined.

Remark rem_2294 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_2291 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_2293 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2295 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_7 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  case (rem_2294 epsilon_m__type_2_p__type_7 X1 X2 A1 A2). clear  epsilon_m__type_2_p__type_7 A1 A2. intros. apply trans___type_7_key_2;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1 A2. tauto.
Defined.

Remark rem_2296 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___type_2 (key X1 X2) -> auto___type_7 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intro H. intros.
  elim (rem_1033 X1 X2 H);  intros.
  apply (rem_2289 epsilon_m__type_2_p__type_7 X1 X2);  tauto.
  apply (rem_2295 epsilon_m__type_2_p__type_7 X1 X2);  tauto.
Defined.

Remark rem_2297 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2274 epsilon_m__type_2_p__type_7 X1).
Defined.

Remark rem_2298 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2299 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2298 epsilon_m__type_2_p__type_7 X2).
Defined.

Remark rem_2300 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X3:term, auto_knows_old X3 -> auto_knows_old X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2301 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_2300 epsilon_m__type_2_p__type_7 X3).
Defined.

Remark rem_2302 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_2297 epsilon_m__type_2_p__type_7 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_2299 epsilon_m__type_2_p__type_7 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2301 epsilon_m__type_2_p__type_7 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2303 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_7 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2302 epsilon_m__type_2_p__type_7 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_2_p__type_7 A1 A2 A3. intros. apply trans___type_7_nonceb_old_1;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1 A2 A3. tauto.
Defined.

Remark rem_2304 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2 X3:term, auto___type_2 (nonceb_old X1 X2 X3) -> auto___type_7 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2 X3. intro H. intros.
  elim (rem_1037 X1 X2 X3 H);  intros.
  apply (rem_2303 epsilon_m__type_2_p__type_7 X1 X2 X3);  tauto.
Defined.

Remark rem_2305 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2306 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_2305 epsilon_m__type_2_p__type_7 X1);  assumption.
  tauto.
Defined.

Remark rem_2307 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto_agent X1 -> auto___type_7 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1. intros A1.
  case (rem_2306 epsilon_m__type_2_p__type_7 X1 A1). clear  epsilon_m__type_2_p__type_7 A1. intros. apply trans___type_7_noncea_old_1;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1. tauto.
Defined.

Remark rem_2308 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto___type_2 (noncea_old X1) -> auto___type_7 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1. intro H. intros.
  elim (rem_1041 X1 H);  intros.
  apply (rem_2307 epsilon_m__type_2_p__type_7 X1);  tauto.
Defined.

Remark rem_2309 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_16 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2310 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_2309 epsilon_m__type_2_p__type_7 X1).
Defined.

Remark rem_2311 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2312 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_2311 epsilon_m__type_2_p__type_7 X2).
Defined.

Remark rem_2313 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_2310 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_2312 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2314 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_7 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  case (rem_2313 epsilon_m__type_2_p__type_7 X1 X2 A1 A2). clear  epsilon_m__type_2_p__type_7 A1 A2. intros. apply trans___type_7_crypt_1;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1 A2. tauto.
Defined.

Remark rem_2315 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2316 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_2315 epsilon_m__type_2_p__type_7 X1).
Defined.

Remark rem_2317 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2318 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_2317 epsilon_m__type_2_p__type_7 X2).
Defined.

Remark rem_2319 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_2316 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_2318 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2320 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_7 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  case (rem_2319 epsilon_m__type_2_p__type_7 X1 X2 A1 A2). clear  epsilon_m__type_2_p__type_7 A1 A2. intros. apply trans___type_7_crypt_2;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1 A2. tauto.
Defined.

Remark rem_2321 : (forall X:term, auto___type_2 X -> auto___type_7 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_2_p__type_7. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2274 epsilon_m__type_2_p__type_7 X1).
Defined.

Remark rem_2322 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2323 : (forall X:term, auto___type_2 X -> auto___type_7 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_2_p__type_7. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_2322 epsilon_m__type_2_p__type_7 X2).
Defined.

Remark rem_2324 : (forall X:term, auto___type_2 X -> auto___type_7 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_2_p__type_7. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_2321 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2323 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2325 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_7 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  case (rem_2324 epsilon_m__type_2_p__type_7 X1 X2 A1 A2). clear  epsilon_m__type_2_p__type_7 A1 A2. intros. apply trans___type_7_crypt_3;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1 A2. tauto.
Defined.

Remark rem_2326 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2327 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_2326 epsilon_m__type_2_p__type_7 X1).
Defined.

Remark rem_2328 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2329 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_2328 epsilon_m__type_2_p__type_7 X2).
Defined.

Remark rem_2330 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_2327 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_2329 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2331 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_7 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  case (rem_2330 epsilon_m__type_2_p__type_7 X1 X2 A1 A2). clear  epsilon_m__type_2_p__type_7 A1 A2. intros. apply trans___type_7_crypt_4;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1 A2. tauto.
Defined.

Remark rem_2332 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1:term, auto___type_4 X1 -> auto___type_4 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2333 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_2332 epsilon_m__type_2_p__type_7 X1).
Defined.

Remark rem_2334 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2335 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_2334 epsilon_m__type_2_p__type_7 X2).
Defined.

Remark rem_2336 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_2333 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_2335 epsilon_m__type_2_p__type_7 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2337 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_7 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  case (rem_2336 epsilon_m__type_2_p__type_7 X1 X2 A1 A2). clear  epsilon_m__type_2_p__type_7 A1 A2. intros. apply trans___type_7_crypt_5;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1 A2. tauto.
Defined.

Remark rem_2338 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___type_2 (crypt X1 X2) -> auto___type_7 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intro H. intros.
  elim (rem_1250 X1 X2 H);  intros.
  apply (rem_2314 epsilon_m__type_2_p__type_7 X1 X2);  tauto.
  apply (rem_2320 epsilon_m__type_2_p__type_7 X1 X2);  tauto.
  apply (rem_2325 epsilon_m__type_2_p__type_7 X1 X2);  tauto.
  apply (rem_2331 epsilon_m__type_2_p__type_7 X1 X2);  tauto.
  apply (rem_2337 epsilon_m__type_2_p__type_7 X1 X2);  tauto.
Defined.

Remark rem_2339 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_7 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intros A1 A2.
  case (rem_2324 epsilon_m__type_2_p__type_7 X1 X2 A1 A2). clear  epsilon_m__type_2_p__type_7 A1 A2. intros. apply trans___type_7_cons_1;  tauto.
 clear  epsilon_m__type_2_p__type_7 A1 A2. tauto.
Defined.

Remark rem_2340 : (forall X:term, auto___type_2 X -> auto___type_7 X)
    -> forall X1 X2:term, auto___type_2 (cons X1 X2) -> auto___type_7 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_p__type_7. intros X1 X2. intro H. intros.
  elim (rem_1253 X1 X2 H);  intros.
  apply (rem_2339 epsilon_m__type_2_p__type_7 X1 X2);  tauto.
Defined.

Remark rem_2341 : forall X1:term, auto___type_2 X1 -> auto___type_7 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_2_p__type_7 1.
  intro X. case X.
  exact (rem_2273 epsilon_m__type_2_p__type_7 ).
  exact (rem_2271 epsilon_m__type_2_p__type_7 ).
  intros X1 X2;  exact (rem_2340 epsilon_m__type_2_p__type_7 X1 X2).
  intros X1 X2;  exact (rem_2338 epsilon_m__type_2_p__type_7 X1 X2).
  exact (rem_2283 epsilon_m__type_2_p__type_7 ).
  intros X1 X2;  exact (rem_2296 epsilon_m__type_2_p__type_7 X1 X2).
  exact (rem_2281 epsilon_m__type_2_p__type_7 ).
  intros X1. intro H. elim (rem_1257 X1 H).
  intros X1;  exact (rem_2308 epsilon_m__type_2_p__type_7 X1).
  intros X1 X2 X3. intro H. elim (rem_1259 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_2304 epsilon_m__type_2_p__type_7 X1 X2 X3).
   intro H. elim (rem_1256  H).
   intro H. elim (rem_1258  H).
  intros X1;  exact (rem_2277 epsilon_m__type_2_p__type_7 X1).
  exact (rem_2279 epsilon_m__type_2_p__type_7 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1260 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1261 X1 X2 X3 X4 H).
   intro H. elim (rem_1255  H).
Qed.

Remark rem_2342 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto___type_3 X2 -> auto_agent X3 -> auto_knows_old X3 -> auto_knows_old X4 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_2 X1 -> auto___type_7 X1). tauto. exact (rem_2341 X1).
Qed.

Remark rem_2343 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___type_3 X4 -> auto___type_7 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X3 X4 X2.
  cut (auto___type_2 X1 -> auto___type_3 X2 -> auto_agent X3 -> auto_knows_old X3 -> auto_knows_old X4 -> auto___type_7 X1). tauto. exact (rem_2342 X1 X2 X3 X4).
Qed.

Remark rem_2344 : forall X1 X2 X3 X4:term, auto___def_25 X1 X2 X3 X4 -> auto___type_7 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_242 X1 X2 X3 X4 H);  intros.
  apply (rem_2343 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2345 : forall X1:term, auto___def_51 sym -> auto___def_52 X1 -> auto___def_6 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_287).
Qed.

Remark rem_2346 : forall X1:term, auto___def_50 sym -> auto___def_6 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_50 sym -> False). tauto.
  exact (rem_290).
Qed.

Remark rem_2347 : forall X1:term, auto___def_50 sym -> auto___type_9 X1 -> auto___def_6 X1. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1. intros. apply (rem_2346 X1);  assumption.
Qed.

Remark rem_2348 : forall X1:term, auto_knows_old (key sym X1) -> auto___def_6 X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_293 sym X1 H);  intros.
  apply (rem_2345 X1);  tauto.
  apply (rem_2347 X1);  tauto.
Qed.

Remark rem_2349 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16.  tauto.
Defined.

Remark rem_2350 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> auto___type_16 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16.  case (rem_2349 epsilon_m__type_11_p__type_16). clear  epsilon_m__type_11_p__type_16. intros. apply trans___type_16_bob_1;  tauto.
 clear  epsilon_m__type_11_p__type_16. tauto.
Defined.

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

Remark rem_2352 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> auto___type_11 bob -> auto___type_16 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intro H. intros.
  elim (rem_2351 H);  intros.
  apply (rem_2350 epsilon_m__type_11_p__type_16);  tauto.
Defined.

Remark rem_2353 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> auto___type_16 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16.  case (rem_2349 epsilon_m__type_11_p__type_16). clear  epsilon_m__type_11_p__type_16. intros. apply trans___type_16_alice_1;  tauto.
 clear  epsilon_m__type_11_p__type_16. tauto.
Defined.

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

Remark rem_2355 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> auto___type_11 alice -> auto___type_16 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intro H. intros.
  elim (rem_2354 H);  intros.
  apply (rem_2353 epsilon_m__type_11_p__type_16);  tauto.
Defined.

Remark rem_2356 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2357 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_2356 epsilon_m__type_11_p__type_16 X1);  assumption.
  tauto.
Defined.

Remark rem_2358 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_16 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1. intros A1.
  case (rem_2357 epsilon_m__type_11_p__type_16 X1 A1). clear  epsilon_m__type_11_p__type_16 A1. intros. apply trans___type_16_s_1;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1. tauto.
Defined.

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

Remark rem_2360 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___type_11 (s X1) -> auto___type_16 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1. intro H. intros.
  elim (rem_2359 X1 H);  intros.
  apply (rem_2358 epsilon_m__type_11_p__type_16 X1);  tauto.
Defined.

Remark rem_2361 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> auto___type_16 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16.  case (rem_2349 epsilon_m__type_11_p__type_16). clear  epsilon_m__type_11_p__type_16. intros. apply trans___type_16_server_1;  tauto.
 clear  epsilon_m__type_11_p__type_16. tauto.
Defined.

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

Remark rem_2363 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> auto___type_11 server -> auto___type_16 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intro H. intros.
  elim (rem_2362 H);  intros.
  apply (rem_2361 epsilon_m__type_11_p__type_16);  tauto.
Defined.

Remark rem_2364 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> auto___type_16 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16.  case (rem_2349 epsilon_m__type_11_p__type_16). clear  epsilon_m__type_11_p__type_16. intros. apply trans___type_16_nil_1;  tauto.
 clear  epsilon_m__type_11_p__type_16. tauto.
Defined.

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

Remark rem_2366 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> auto___type_11 nil -> auto___type_16 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intro H. intros.
  elim (rem_2365 H);  intros.
  apply (rem_2364 epsilon_m__type_11_p__type_16);  tauto.
Defined.

Remark rem_2367 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> auto___type_16 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16.  case (rem_2349 epsilon_m__type_11_p__type_16). clear  epsilon_m__type_11_p__type_16. intros. apply trans___type_16_i_1;  tauto.
 clear  epsilon_m__type_11_p__type_16. tauto.
Defined.

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

Remark rem_2369 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> auto___type_11 i -> auto___type_16 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intro H. intros.
  elim (rem_2368 H);  intros.
  apply (rem_2367 epsilon_m__type_11_p__type_16);  tauto.
Defined.

Remark rem_2370 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2371 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_2370 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2372 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2373 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_2372 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2374 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_2371 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_2373 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2375 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_16 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2374 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_key_1;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2376 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2377 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_2376 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2378 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2379 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_2378 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2380 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_2377 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_2379 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2381 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_16 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2380 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_key_2;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2382 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___def_54 X1 -> auto___def_54 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2383 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_2382 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2384 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto___def_55 X2 -> auto___def_55 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2385 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_2384 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2386 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_2383 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_2385 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2387 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_16 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2386 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_key_3;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2388 : forall X1 X2:term, auto___type_11 (key X1 X2) -> or_3
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
    (auto___def_54 X1 /\ auto___def_55 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_3_intro_1; tauto.
  intros. apply or_3_intro_2; tauto.
  intros. apply or_3_intro_3; tauto.
Qed.

Remark rem_2389 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___type_11 (key X1 X2) -> auto___type_16 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intro H. intros.
  elim (rem_2388 X1 X2 H);  intros.
  apply (rem_2375 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
  apply (rem_2381 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
  apply (rem_2387 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
Defined.

Remark rem_2390 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2391 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_2390 epsilon_m__type_11_p__type_16 X1);  assumption.
  tauto.
Defined.

Remark rem_2392 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto_agent X1 -> auto___type_16 (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1. intros A1.
  case (rem_2391 epsilon_m__type_11_p__type_16 X1 A1). clear  epsilon_m__type_11_p__type_16 A1. intros. apply trans___type_16_noncea_current_1;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1. tauto.
Defined.

Remark rem_2393 : forall X1:term, auto___type_11 (noncea_current X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2394 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___type_11 (noncea_current X1) -> auto___type_16 (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1. intro H. intros.
  elim (rem_2393 X1 H);  intros.
  apply (rem_2392 epsilon_m__type_11_p__type_16 X1);  tauto.
Defined.

Remark rem_2395 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2 X3:term, auto___type_16 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2 X3.  case (rem_2349 epsilon_m__type_11_p__type_16). clear  epsilon_m__type_11_p__type_16. intros. apply trans___type_16_nonceb_old_1;  tauto.
 clear  epsilon_m__type_11_p__type_16. tauto.
Defined.

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

Remark rem_2397 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2 X3:term, auto___type_11 (nonceb_old X1 X2 X3) -> auto___type_16 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2 X3. intro H. intros.
  elim (rem_2396 X1 X2 X3 H);  intros.
  apply (rem_2395 epsilon_m__type_11_p__type_16 X1 X2 X3);  tauto.
Defined.

Remark rem_2398 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___type_16 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1.  case (rem_2349 epsilon_m__type_11_p__type_16). clear  epsilon_m__type_11_p__type_16. intros. apply trans___type_16_noncea_old_1;  tauto.
 clear  epsilon_m__type_11_p__type_16. tauto.
Defined.

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

Remark rem_2400 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___type_11 (noncea_old X1) -> auto___type_16 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1. intro H. intros.
  elim (rem_2399 X1 H);  intros.
  apply (rem_2398 epsilon_m__type_11_p__type_16 X1);  tauto.
Defined.

Remark rem_2401 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_2356 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2402 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2403 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2402 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2404 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2405 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_2404 epsilon_m__type_11_p__type_16 X3).
Defined.

Remark rem_2406 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_2401 epsilon_m__type_11_p__type_16 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_2403 epsilon_m__type_11_p__type_16 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_2405 epsilon_m__type_11_p__type_16 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2407 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_16 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2406 epsilon_m__type_11_p__type_16 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_11_p__type_16 A1 A2 A3. intros. apply trans___type_16_nonceb_current_1;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2 A3. tauto.
Defined.

Remark rem_2408 : forall X1 X2 X3:term, auto___type_11 (nonceb_current X1 X2 X3) -> or_1
    (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2409 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2 X3:term, auto___type_11 (nonceb_current X1 X2 X3) -> auto___type_16 (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2 X3. intro H. intros.
  elim (rem_2408 X1 X2 X3 H);  intros.
  apply (rem_2407 epsilon_m__type_11_p__type_16 X1 X2 X3);  tauto.
Defined.

Remark rem_2410 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___def_78 X1 -> auto___def_78 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2411 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_2410 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2412 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto___def_79 X2 -> auto___def_79 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2413 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_2412 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2414 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_2411 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_2413 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2415 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_16 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2414 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_crypt_1;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2416 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2417 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_2416 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2418 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2419 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_2418 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2420 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_2417 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_2419 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2421 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_16 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2420 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_crypt_2;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2422 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2423 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_2422 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2424 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2425 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_2424 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2426 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_2423 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_2425 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2427 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_16 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2426 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_crypt_3;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2428 : (forall X:term, auto___type_11 X -> auto___type_16 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_11_p__type_16. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_2356 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2429 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto_knows_current X2 -> auto_knows_current X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2430 : (forall X:term, auto___type_11 X -> auto___type_16 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_11_p__type_16. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_2429 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2431 : (forall X:term, auto___type_11 X -> auto___type_16 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_11_p__type_16. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_2428 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_2430 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2432 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_16 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2431 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_crypt_4;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2433 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___def_70 X1 -> auto___def_70 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2434 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_2433 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2435 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto___def_71 X2 -> auto___def_71 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2436 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_2435 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2437 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_2434 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_2436 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2438 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_16 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2437 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_crypt_5;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2439 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1:term, auto___def_89 X1 -> auto___def_89 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2440 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_2439 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2441 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto___def_90 X2 -> auto___def_90 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2442 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_2441 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2443 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_2440 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_2442 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2444 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_16 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2443 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_crypt_6;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2445 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_2356 epsilon_m__type_11_p__type_16 X1).
Defined.

Remark rem_2446 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X2:term, auto___def_81 X2 -> auto___def_81 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2447 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_2446 epsilon_m__type_11_p__type_16 X2).
Defined.

Remark rem_2448 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_2445 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_2447 epsilon_m__type_11_p__type_16 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2449 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_16 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2448 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_crypt_7;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2450 : forall X1 X2:term, auto___type_11 (crypt X1 X2) -> or_7
    (auto___def_78 X1 /\ auto___def_79 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___def_70 X1 /\ auto___def_71 X2)
    (auto___def_89 X1 /\ auto___def_90 X2)
    (auto_knows_current X1 /\ auto___def_81 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_7_intro_1; tauto.
  intros. apply or_7_intro_2; tauto.
  intros. apply or_7_intro_3; tauto.
  intros. apply or_7_intro_4; tauto.
  intros. apply or_7_intro_5; tauto.
  intros. apply or_7_intro_6; tauto.
  intros. apply or_7_intro_7; tauto.
Qed.

Remark rem_2451 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___type_11 (crypt X1 X2) -> auto___type_16 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intro H. intros.
  elim (rem_2450 X1 X2 H);  intros.
  apply (rem_2415 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
  apply (rem_2421 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
  apply (rem_2427 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
  apply (rem_2432 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
  apply (rem_2438 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
  apply (rem_2444 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
  apply (rem_2449 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
Defined.

Remark rem_2452 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_16 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intros A1 A2.
  case (rem_2431 epsilon_m__type_11_p__type_16 X1 X2 A1 A2). clear  epsilon_m__type_11_p__type_16 A1 A2. intros. apply trans___type_16_cons_1;  tauto.
 clear  epsilon_m__type_11_p__type_16 A1 A2. tauto.
Defined.

Remark rem_2453 : forall X1 X2:term, auto___type_11 (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_2454 : (forall X:term, auto___type_11 X -> auto___type_16 X)
    -> forall X1 X2:term, auto___type_11 (cons X1 X2) -> auto___type_16 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_p__type_16. intros X1 X2. intro H. intros.
  elim (rem_2453 X1 X2 H);  intros.
  apply (rem_2452 epsilon_m__type_11_p__type_16 X1 X2);  tauto.
Defined.

Remark rem_2455 : auto___type_11 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2456 : auto___type_11 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2457 : auto___type_11 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2458 : forall X1 X2 X3 X4:term, auto___type_11 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2459 : forall X1 X2 X3 X4:term, auto___type_11 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2460 : forall X1:term, auto___type_11 X1 -> auto___type_16 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_11_p__type_16 1.
  intro X. case X.
  exact (rem_2355 epsilon_m__type_11_p__type_16 ).
  exact (rem_2352 epsilon_m__type_11_p__type_16 ).
  intros X1 X2;  exact (rem_2454 epsilon_m__type_11_p__type_16 X1 X2).
  intros X1 X2;  exact (rem_2451 epsilon_m__type_11_p__type_16 X1 X2).
  exact (rem_2369 epsilon_m__type_11_p__type_16 ).
  intros X1 X2;  exact (rem_2389 epsilon_m__type_11_p__type_16 X1 X2).
  exact (rem_2366 epsilon_m__type_11_p__type_16 ).
  intros X1;  exact (rem_2394 epsilon_m__type_11_p__type_16 X1).
  intros X1;  exact (rem_2400 epsilon_m__type_11_p__type_16 X1).
  intros X1 X2 X3;  exact (rem_2409 epsilon_m__type_11_p__type_16 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_2397 epsilon_m__type_11_p__type_16 X1 X2 X3).
   intro H. elim (rem_2456  H).
   intro H. elim (rem_2457  H).
  intros X1;  exact (rem_2360 epsilon_m__type_11_p__type_16 X1).
  exact (rem_2363 epsilon_m__type_11_p__type_16 ).
  intros X1 X2 X3 X4. intro H. elim (rem_2458 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_2459 X1 X2 X3 X4 H).
   intro H. elim (rem_2455  H).
Qed.

Remark rem_2461 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto___type_12 X2 -> auto_agent X3 -> auto_knows_current X3 -> auto_knows_current X4 -> auto___type_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_11 X1 -> auto___type_16 X1). tauto. exact (rem_2460 X1).
Qed.

Remark rem_2462 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto_agent X2 -> auto_knows_current X2 -> auto_knows_current X3 -> auto___type_12 X4 -> auto___type_16 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X3 X4 X2.
  cut (auto___type_11 X1 -> auto___type_12 X2 -> auto_agent X3 -> auto_knows_current X3 -> auto_knows_current X4 -> auto___type_16 X1). tauto. exact (rem_2461 X1 X2 X3 X4).
Qed.

Remark rem_2463 : forall X1 X2 X3 X4:term, auto___def_74 X1 X2 X3 X4 -> auto___type_16 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_122 X1 X2 X3 X4 H);  intros.
  apply (rem_2462 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2464 : forall X1 X2 X3 X4:term, auto___def_22 (cons server nil) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___type_2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_2 X1 -> auto___type_2 X1). tauto. exact (rem_625 X1).
Qed.

Remark rem_2465 : forall X1 X2 X3 X4:term, auto___def_22 (cons server nil) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_259 X2).
Qed.

Remark rem_2466 : forall X1 X2 X3 X4:term, auto___def_22 (cons server nil) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_agent X2 -> auto_knows_old X2). tauto. exact (rem_2243 X2).
Qed.

Remark rem_2467 : forall X1 X2 X3 X4:term, auto___def_22 (cons server nil) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X3 -> 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_261 X3).
Qed.

Remark rem_2468 : forall X4:term, auto___type_3 X4 -> auto___type_3 X4. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_2469 : forall X1 X2 X3 X4:term, auto___def_22 (cons server nil) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___type_3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_3 X4 -> auto___type_3 X4). tauto. exact (rem_2468 X4).
Qed.

Remark rem_2470 : forall X1 X2 X3 X4:term, auto___def_22 (cons server nil) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X3 -> (auto___type_2 X1 /\ auto_agent X2 /\ auto_knows_old X2 /\ auto_knows_old X3 /\ auto___type_3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto___type_2 X1). 2:apply (rem_2464 X1 X2 X3 X4);  assumption.
  cut (auto_agent X2). 2:apply (rem_2465 X1 X2 X3 X4);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2466 X1 X2 X3 X4);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2467 X1 X2 X3 X4);  assumption.
  cut (auto___type_3 X4). 2:apply (rem_2469 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_2471 : forall X1 X2 X3 X4:term, auto___def_22 (cons server nil) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_2470 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans___def_25_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_2472 : forall X1 X2 X3 X4:term, auto_agent X2 -> auto___def_22 (cons server nil) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_22 (cons server nil) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_agent X2 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2471 X1 X2 X3 X4).
Qed.

Remark rem_2473 : forall X1 X2 X3 X4:term, auto___def_21 (cons X2 (cons server nil)) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_747 X2 (cons server nil) H);  intros.
  apply (rem_2472 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2474 : forall X1 X2 X3 X4:term, auto___def_19 nil -> auto___def_21 (cons X2 (cons server nil)) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_21 (cons X2 (cons server nil)) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto.
  exact (rem_2473 X1 X2 X3 X4).
Qed.

Remark rem_2475 : forall X1 X2 X3 X4:term, auto___type_3 X4 -> auto___def_19 nil -> auto___def_21 (cons X2 (cons server nil)) -> auto___type_2 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_19 nil -> auto___def_21 (cons X2 (cons server nil)) -> auto___type_2 X1 -> auto___type_3 X4 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2474 X1 X2 X3 X4).
Qed.

Remark rem_2476 : forall X1 X2 X3 X4:term, auto___def_18 (cons X4 nil) -> auto___def_21 (cons X2 (cons server nil)) -> auto___type_2 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1359 X4 nil H);  intros.
  apply (rem_2475 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2477 : forall X1 X2 X3 X4:term, auto___def_18 (cons X4 nil) -> auto___def_20 sym -> auto___def_21 (cons X2 (cons server nil)) -> auto___type_2 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_18 (cons X4 nil) -> auto___def_21 (cons X2 (cons server nil)) -> auto___type_2 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto.
  exact (rem_2476 X1 X2 X3 X4).
Qed.

Remark rem_2478 : forall X1 X2 X3 X4:term, auto___def_20 sym -> auto___def_21 (cons X2 (cons server nil)) -> auto___def_18 (cons X4 nil) -> auto___type_2 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_18 (cons X4 nil) -> auto___def_20 sym -> auto___def_21 (cons X2 (cons server nil)) -> auto___type_2 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2477 X1 X2 X3 X4).
Qed.

Remark rem_2479 : forall X1 X2 X3 X4:term, auto___def_17 (key sym (cons X2 (cons server nil))) -> auto___def_18 (cons X4 nil) -> auto___type_2 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_275 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_2478 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2480 : forall X1 X2 X3 X4:term, auto___type_2 X1 -> auto___def_18 (cons X4 nil) -> auto___def_17 (key sym (cons X2 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_17 (key sym (cons X2 (cons server nil))) -> auto___def_18 (cons X4 nil) -> auto___type_2 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2479 X1 X2 X3 X4).
Qed.

Remark rem_2481 : forall X1 X2 X3 X4:term, auto___def_16 (cons X1 (cons X4 nil)) -> auto___def_17 (key sym (cons X2 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1382 X1 (cons X4 nil) H);  intros.
  apply (rem_2480 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2482 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_2.  tauto.
Defined.

Remark rem_2483 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> auto___type_2 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2.  case (rem_2482 epsilon_m__type_7_p__type_2). clear  epsilon_m__type_7_p__type_2. intros. apply trans___type_2_bob_1;  tauto.
 clear  epsilon_m__type_7_p__type_2. tauto.
Defined.

Remark rem_2484 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> auto___type_7 bob -> auto___type_2 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intro H. intros.
  elim (rem_961 H);  intros.
  apply (rem_2483 epsilon_m__type_7_p__type_2);  tauto.
Defined.

Remark rem_2485 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> auto___type_2 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2.  case (rem_2482 epsilon_m__type_7_p__type_2). clear  epsilon_m__type_7_p__type_2. intros. apply trans___type_2_alice_1;  tauto.
 clear  epsilon_m__type_7_p__type_2. tauto.
Defined.

Remark rem_2486 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> auto___type_7 alice -> auto___type_2 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intro H. intros.
  elim (rem_964 H);  intros.
  apply (rem_2485 epsilon_m__type_7_p__type_2);  tauto.
Defined.

Remark rem_2487 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2488 : (forall X:term, auto___type_7 X -> auto___type_2 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_2. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_2487 epsilon_m__type_7_p__type_2 X1);  assumption.
  tauto.
Defined.

Remark rem_2489 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_2 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1. intros A1.
  case (rem_2488 epsilon_m__type_7_p__type_2 X1 A1). clear  epsilon_m__type_7_p__type_2 A1. intros. apply trans___type_2_s_1;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1. tauto.
Defined.

Remark rem_2490 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto___type_7 (s X1) -> auto___type_2 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1. intro H. intros.
  elim (rem_1503 X1 H);  intros.
  apply (rem_2489 epsilon_m__type_7_p__type_2 X1);  tauto.
Defined.

Remark rem_2491 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> auto___type_2 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2.  case (rem_2482 epsilon_m__type_7_p__type_2). clear  epsilon_m__type_7_p__type_2. intros. apply trans___type_2_server_1;  tauto.
 clear  epsilon_m__type_7_p__type_2. tauto.
Defined.

Remark rem_2492 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> auto___type_7 server -> auto___type_2 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intro H. intros.
  elim (rem_1506 H);  intros.
  apply (rem_2491 epsilon_m__type_7_p__type_2);  tauto.
Defined.

Remark rem_2493 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> auto___type_2 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2.  case (rem_2482 epsilon_m__type_7_p__type_2). clear  epsilon_m__type_7_p__type_2. intros. apply trans___type_2_nil_1;  tauto.
 clear  epsilon_m__type_7_p__type_2. tauto.
Defined.

Remark rem_2494 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> auto___type_7 nil -> auto___type_2 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intro H. intros.
  elim (rem_1509 H);  intros.
  apply (rem_2493 epsilon_m__type_7_p__type_2);  tauto.
Defined.

Remark rem_2495 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> auto___type_2 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2.  case (rem_2482 epsilon_m__type_7_p__type_2). clear  epsilon_m__type_7_p__type_2. intros. apply trans___type_2_i_1;  tauto.
 clear  epsilon_m__type_7_p__type_2. tauto.
Defined.

Remark rem_2496 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> auto___type_7 i -> auto___type_2 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intro H. intros.
  elim (rem_1512 H);  intros.
  apply (rem_2495 epsilon_m__type_7_p__type_2);  tauto.
Defined.

Remark rem_2497 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2498 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_2497 epsilon_m__type_7_p__type_2 X1).
Defined.

Remark rem_2499 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2500 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_2499 epsilon_m__type_7_p__type_2 X2).
Defined.

Remark rem_2501 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_2498 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_2500 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2502 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_2 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2501 epsilon_m__type_7_p__type_2 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_2 A1 A2. intros. apply trans___type_2_key_1;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2503 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2504 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_2503 epsilon_m__type_7_p__type_2 X1).
Defined.

Remark rem_2505 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2506 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_2505 epsilon_m__type_7_p__type_2 X2).
Defined.

Remark rem_2507 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_2504 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_2506 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2508 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_2 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2507 epsilon_m__type_7_p__type_2 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_2 A1 A2. intros. apply trans___type_2_key_2;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2509 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_7 (key X1 X2) -> auto___type_2 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intro H. intros.
  elim (rem_1526 X1 X2 H);  intros.
  apply (rem_2502 epsilon_m__type_7_p__type_2 X1 X2);  tauto.
  apply (rem_2508 epsilon_m__type_7_p__type_2 X1 X2);  tauto.
Defined.

Remark rem_2510 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2487 epsilon_m__type_7_p__type_2 X1).
Defined.

Remark rem_2511 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2512 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2511 epsilon_m__type_7_p__type_2 X2).
Defined.

Remark rem_2513 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X3:term, auto_knows_old X3 -> auto_knows_old X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2514 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_2513 epsilon_m__type_7_p__type_2 X3).
Defined.

Remark rem_2515 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_2510 epsilon_m__type_7_p__type_2 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_2512 epsilon_m__type_7_p__type_2 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2514 epsilon_m__type_7_p__type_2 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2516 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_2 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2515 epsilon_m__type_7_p__type_2 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_p__type_2 A1 A2 A3. intros. apply trans___type_2_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1 A2 A3. tauto.
Defined.

Remark rem_2517 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto___type_7 (nonceb_old X1 X2 X3) -> auto___type_2 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2 X3. intro H. intros.
  elim (rem_1530 X1 X2 X3 H);  intros.
  apply (rem_2516 epsilon_m__type_7_p__type_2 X1 X2 X3);  tauto.
Defined.

Remark rem_2518 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2519 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_2518 epsilon_m__type_7_p__type_2 X1);  assumption.
  tauto.
Defined.

Remark rem_2520 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto_agent X1 -> auto___type_2 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1. intros A1.
  case (rem_2519 epsilon_m__type_7_p__type_2 X1 A1). clear  epsilon_m__type_7_p__type_2 A1. intros. apply trans___type_2_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1. tauto.
Defined.

Remark rem_2521 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto___type_7 (noncea_old X1) -> auto___type_2 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1. intro H. intros.
  elim (rem_1534 X1 H);  intros.
  apply (rem_2520 epsilon_m__type_7_p__type_2 X1);  tauto.
Defined.

Remark rem_2522 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_16 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2523 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_2522 epsilon_m__type_7_p__type_2 X1).
Defined.

Remark rem_2524 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2525 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_2524 epsilon_m__type_7_p__type_2 X2).
Defined.

Remark rem_2526 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_2523 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_2525 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2527 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2526 epsilon_m__type_7_p__type_2 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_2 A1 A2. intros. apply trans___type_2_crypt_1;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2528 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2529 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_2528 epsilon_m__type_7_p__type_2 X1).
Defined.

Remark rem_2530 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2531 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_2530 epsilon_m__type_7_p__type_2 X2).
Defined.

Remark rem_2532 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_2529 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_2531 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2533 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2532 epsilon_m__type_7_p__type_2 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_2 A1 A2. intros. apply trans___type_2_crypt_2;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2534 : (forall X:term, auto___type_7 X -> auto___type_2 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_7_p__type_2. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2487 epsilon_m__type_7_p__type_2 X1).
Defined.

Remark rem_2535 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_old X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2536 : (forall X:term, auto___type_7 X -> auto___type_2 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_7_p__type_2. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_2535 epsilon_m__type_7_p__type_2 X2).
Defined.

Remark rem_2537 : (forall X:term, auto___type_7 X -> auto___type_2 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_7_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_2534 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2536 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2538 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2537 epsilon_m__type_7_p__type_2 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_2 A1 A2. intros. apply trans___type_2_crypt_3;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2539 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2540 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_2539 epsilon_m__type_7_p__type_2 X1).
Defined.

Remark rem_2541 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2542 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_2541 epsilon_m__type_7_p__type_2 X2).
Defined.

Remark rem_2543 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_2540 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_2542 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2544 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2543 epsilon_m__type_7_p__type_2 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_2 A1 A2. intros. apply trans___type_2_crypt_4;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2545 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1:term, auto___type_4 X1 -> auto___type_4 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2546 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_2545 epsilon_m__type_7_p__type_2 X1).
Defined.

Remark rem_2547 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2548 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_2547 epsilon_m__type_7_p__type_2 X2).
Defined.

Remark rem_2549 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_2546 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_2548 epsilon_m__type_7_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2550 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2549 epsilon_m__type_7_p__type_2 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_2 A1 A2. intros. apply trans___type_2_crypt_5;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2551 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_7 (crypt X1 X2) -> auto___type_2 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intro H. intros.
  elim (rem_1846 X1 X2 H);  intros.
  apply (rem_2527 epsilon_m__type_7_p__type_2 X1 X2);  tauto.
  apply (rem_2533 epsilon_m__type_7_p__type_2 X1 X2);  tauto.
  apply (rem_2538 epsilon_m__type_7_p__type_2 X1 X2);  tauto.
  apply (rem_2544 epsilon_m__type_7_p__type_2 X1 X2);  tauto.
  apply (rem_2550 epsilon_m__type_7_p__type_2 X1 X2);  tauto.
Defined.

Remark rem_2552 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_2 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2537 epsilon_m__type_7_p__type_2 X1 X2 A1 A2). clear  epsilon_m__type_7_p__type_2 A1 A2. intros. apply trans___type_2_cons_1;  tauto.
 clear  epsilon_m__type_7_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2553 : (forall X:term, auto___type_7 X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_7 (cons X1 X2) -> auto___type_2 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_p__type_2. intros X1 X2. intro H. intros.
  elim (rem_1849 X1 X2 H);  intros.
  apply (rem_2552 epsilon_m__type_7_p__type_2 X1 X2);  tauto.
Defined.

Remark rem_2554 : forall X1:term, auto___type_7 X1 -> auto___type_2 X1. (* Induct. *)
Proof.
  fix epsilon_m__type_7_p__type_2 1.
  intro X. case X.
  exact (rem_2486 epsilon_m__type_7_p__type_2 ).
  exact (rem_2484 epsilon_m__type_7_p__type_2 ).
  intros X1 X2;  exact (rem_2553 epsilon_m__type_7_p__type_2 X1 X2).
  intros X1 X2;  exact (rem_2551 epsilon_m__type_7_p__type_2 X1 X2).
  exact (rem_2496 epsilon_m__type_7_p__type_2 ).
  intros X1 X2;  exact (rem_2509 epsilon_m__type_7_p__type_2 X1 X2).
  exact (rem_2494 epsilon_m__type_7_p__type_2 ).
  intros X1. intro H. elim (rem_1853 X1 H).
  intros X1;  exact (rem_2521 epsilon_m__type_7_p__type_2 X1).
  intros X1 X2 X3. intro H. elim (rem_1855 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_2517 epsilon_m__type_7_p__type_2 X1 X2 X3).
   intro H. elim (rem_1852  H).
   intro H. elim (rem_1854  H).
  intros X1;  exact (rem_2490 epsilon_m__type_7_p__type_2 X1).
  exact (rem_2492 epsilon_m__type_7_p__type_2 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1856 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1857 X1 X2 X3 X4 H).
   intro H. elim (rem_1851  H).
Qed.

Remark rem_2555 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___type_2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_7 X1 -> auto___type_2 X1). tauto. exact (rem_2554 X1).
Qed.

Remark rem_2556 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_5 X2 -> auto_agent X2). tauto. exact (rem_1887 X2).
Qed.

Remark rem_2557 : (forall X:term, auto___type_5 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_5_pknows_old.  tauto.
Defined.

Remark rem_2558 : (forall X:term, auto___type_5 X -> auto_knows_old X)
    -> auto_knows_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pknows_old.  case (rem_2557 epsilon_m__type_5_pknows_old). clear  epsilon_m__type_5_pknows_old. intros. apply trans_knows_old_bob_1;  tauto.
 clear  epsilon_m__type_5_pknows_old. tauto.
Defined.

Remark rem_2559 : (forall X:term, auto___type_5 X -> auto_knows_old X)
    -> auto___type_5 bob -> auto_knows_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pknows_old. intro H. intros.
  elim (rem_1862 H);  intros.
  apply (rem_2558 epsilon_m__type_5_pknows_old);  tauto.
Defined.

Remark rem_2560 : (forall X:term, auto___type_5 X -> auto_knows_old X)
    -> auto_knows_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pknows_old.  case (rem_2557 epsilon_m__type_5_pknows_old). clear  epsilon_m__type_5_pknows_old. intros. apply trans_knows_old_alice_1;  tauto.
 clear  epsilon_m__type_5_pknows_old. tauto.
Defined.

Remark rem_2561 : (forall X:term, auto___type_5 X -> auto_knows_old X)
    -> auto___type_5 alice -> auto_knows_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pknows_old. intro H. intros.
  elim (rem_1865 H);  intros.
  apply (rem_2560 epsilon_m__type_5_pknows_old);  tauto.
Defined.

Remark rem_2562 : (forall X:term, auto___type_5 X -> auto_knows_old X)
    -> auto_knows_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pknows_old.  case (rem_2557 epsilon_m__type_5_pknows_old). clear  epsilon_m__type_5_pknows_old. intros. apply trans_knows_old_server_1;  tauto.
 clear  epsilon_m__type_5_pknows_old. tauto.
Defined.

Remark rem_2563 : (forall X:term, auto___type_5 X -> auto_knows_old X)
    -> auto___type_5 server -> auto_knows_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pknows_old. intro H. intros.
  elim (rem_1868 H);  intros.
  apply (rem_2562 epsilon_m__type_5_pknows_old);  tauto.
Defined.

Remark rem_2564 : (forall X:term, auto___type_5 X -> auto_knows_old X)
    -> auto_knows_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_pknows_old.  case (rem_2557 epsilon_m__type_5_pknows_old). clear  epsilon_m__type_5_pknows_old. intros. apply trans_knows_old_i_1;  tauto.
 clear  epsilon_m__type_5_pknows_old. tauto.
Defined.

Remark rem_2565 : (forall X:term, auto___type_5 X -> auto_knows_old X)
    -> auto___type_5 i -> auto_knows_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_pknows_old. intro H. intros.
  elim (rem_1871 H);  intros.
  apply (rem_2564 epsilon_m__type_5_pknows_old);  tauto.
Defined.

Remark rem_2566 : forall X2:term, auto___type_5 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__type_5_pknows_old 1.
  intro X. case X.
  exact (rem_2561 epsilon_m__type_5_pknows_old ).
  exact (rem_2559 epsilon_m__type_5_pknows_old ).
  intros X1 X2. intro H. elim (rem_1884 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1883 X1 X2 H).
  exact (rem_2565 epsilon_m__type_5_pknows_old ).
  intros X1 X2. intro H. elim (rem_1877 X1 X2 H).
   intro H. elim (rem_1876  H).
  intros X1. intro H. elim (rem_1878 X1 H).
  intros X1. intro H. elim (rem_1881 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1882 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1879 X1 X2 X3 H).
   intro H. elim (rem_1874  H).
   intro H. elim (rem_1880  H).
  intros X1. intro H. elim (rem_1875 X1 H).
  exact (rem_2563 epsilon_m__type_5_pknows_old ).
  intros X1 X2 X3 X4. intro H. elim (rem_1885 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1886 X1 X2 X3 X4 H).
   intro H. elim (rem_1873  H).
Qed.

Remark rem_2567 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_5 X2 -> auto_knows_old X2). tauto. exact (rem_2566 X2).
Qed.

Remark rem_2568 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> 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_261 X3).
Qed.

Remark rem_2569 : (forall X:term, auto___type_5 X -> auto___type_3 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_5_p__type_3.  tauto.
Defined.

Remark rem_2570 : (forall X:term, auto___type_5 X -> auto___type_3 X)
    -> auto___type_3 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_3.  case (rem_2569 epsilon_m__type_5_p__type_3). clear  epsilon_m__type_5_p__type_3. intros. apply trans___type_3_bob_1;  tauto.
 clear  epsilon_m__type_5_p__type_3. tauto.
Defined.

Remark rem_2571 : (forall X:term, auto___type_5 X -> auto___type_3 X)
    -> auto___type_5 bob -> auto___type_3 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_3. intro H. intros.
  elim (rem_1862 H);  intros.
  apply (rem_2570 epsilon_m__type_5_p__type_3);  tauto.
Defined.

Remark rem_2572 : (forall X:term, auto___type_5 X -> auto___type_3 X)
    -> auto___type_3 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_3.  case (rem_2569 epsilon_m__type_5_p__type_3). clear  epsilon_m__type_5_p__type_3. intros. apply trans___type_3_alice_1;  tauto.
 clear  epsilon_m__type_5_p__type_3. tauto.
Defined.

Remark rem_2573 : (forall X:term, auto___type_5 X -> auto___type_3 X)
    -> auto___type_5 alice -> auto___type_3 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_3. intro H. intros.
  elim (rem_1865 H);  intros.
  apply (rem_2572 epsilon_m__type_5_p__type_3);  tauto.
Defined.

Remark rem_2574 : (forall X:term, auto___type_5 X -> auto___type_3 X)
    -> auto___type_3 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_3.  case (rem_2569 epsilon_m__type_5_p__type_3). clear  epsilon_m__type_5_p__type_3. intros. apply trans___type_3_server_1;  tauto.
 clear  epsilon_m__type_5_p__type_3. tauto.
Defined.

Remark rem_2575 : (forall X:term, auto___type_5 X -> auto___type_3 X)
    -> auto___type_5 server -> auto___type_3 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_3. intro H. intros.
  elim (rem_1868 H);  intros.
  apply (rem_2574 epsilon_m__type_5_p__type_3);  tauto.
Defined.

Remark rem_2576 : (forall X:term, auto___type_5 X -> auto___type_3 X)
    -> auto___type_3 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_5_p__type_3.  case (rem_2569 epsilon_m__type_5_p__type_3). clear  epsilon_m__type_5_p__type_3. intros. apply trans___type_3_i_1;  tauto.
 clear  epsilon_m__type_5_p__type_3. tauto.
Defined.

Remark rem_2577 : (forall X:term, auto___type_5 X -> auto___type_3 X)
    -> auto___type_5 i -> auto___type_3 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_5_p__type_3. intro H. intros.
  elim (rem_1871 H);  intros.
  apply (rem_2576 epsilon_m__type_5_p__type_3);  tauto.
Defined.

Remark rem_2578 : forall X4:term, auto___type_5 X4 -> auto___type_3 X4. (* Induct. *)
Proof.
  fix epsilon_m__type_5_p__type_3 1.
  intro X. case X.
  exact (rem_2573 epsilon_m__type_5_p__type_3 ).
  exact (rem_2571 epsilon_m__type_5_p__type_3 ).
  intros X1 X2. intro H. elim (rem_1884 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1883 X1 X2 H).
  exact (rem_2577 epsilon_m__type_5_p__type_3 ).
  intros X1 X2. intro H. elim (rem_1877 X1 X2 H).
   intro H. elim (rem_1876  H).
  intros X1. intro H. elim (rem_1878 X1 H).
  intros X1. intro H. elim (rem_1881 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1882 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1879 X1 X2 X3 H).
   intro H. elim (rem_1874  H).
   intro H. elim (rem_1880  H).
  intros X1. intro H. elim (rem_1875 X1 H).
  exact (rem_2575 epsilon_m__type_5_p__type_3 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1885 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1886 X1 X2 X3 X4 H).
   intro H. elim (rem_1873  H).
Qed.

Remark rem_2579 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___type_3 X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_5 X4 -> auto___type_3 X4). tauto. exact (rem_2578 X4).
Qed.

Remark rem_2580 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> (auto___type_2 X1 /\ auto_agent X2 /\ auto_knows_old X2 /\ auto_knows_old X3 /\ auto___type_3 X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  cut (auto___type_2 X1). 2:apply (rem_2555 X1 X2 X3 X4);  assumption.
  cut (auto_agent X2). 2:apply (rem_2556 X1 X2 X3 X4);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2567 X1 X2 X3 X4);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2568 X1 X2 X3 X4);  assumption.
  cut (auto___type_3 X4). 2:apply (rem_2579 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_2581 : forall X1 X2 X3 X4:term, auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6.
  case (rem_2580 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans___def_25_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_2582 : forall X1 X2 X3 X4:term, auto___type_5 X2 -> auto___def_38 (cons server nil) -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_38 (cons server nil) -> auto___type_5 X2 -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2581 X1 X2 X3 X4).
Qed.

Remark rem_2583 : forall X1 X2 X3 X4:term, auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1916 X2 (cons server nil) H);  intros.
  apply (rem_2582 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2584 : forall X1 X2 X3 X4:term, auto___def_43 nil -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto.
  exact (rem_2583 X1 X2 X3 X4).
Qed.

Remark rem_2585 : forall X1 X2 X3 X4:term, auto___type_5 X4 -> auto___def_43 nil -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_43 nil -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X4 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2584 X1 X2 X3 X4).
Qed.

Remark rem_2586 : forall X1 X2 X3 X4:term, auto___def_42 (cons X4 nil) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_697 X4 nil H);  intros.
  apply (rem_2585 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2587 : forall X1 X2 X3 X4:term, auto___def_34 sym -> auto___def_42 (cons X4 nil) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_42 (cons X4 nil) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto.
  exact (rem_2586 X1 X2 X3 X4).
Qed.

Remark rem_2588 : forall X1 X2 X3 X4:term, auto___def_34 sym -> auto___def_45 (cons X2 (cons server nil)) -> auto___def_42 (cons X4 nil) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_34 sym -> auto___def_42 (cons X4 nil) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2587 X1 X2 X3 X4).
Qed.

Remark rem_2589 : forall X1 X2 X3 X4:term, auto___def_41 (key sym (cons X2 (cons server nil))) -> auto___def_42 (cons X4 nil) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_284 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_2588 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2590 : forall X1 X2 X3 X4:term, auto___type_7 X1 -> auto___def_42 (cons X4 nil) -> auto___def_41 (key sym (cons X2 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_41 (key sym (cons X2 (cons server nil))) -> auto___def_42 (cons X4 nil) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2589 X1 X2 X3 X4).
Qed.

Remark rem_2591 : forall X1 X2 X3 X4:term, auto___def_40 (cons X1 (cons X4 nil)) -> auto___def_41 (key sym (cons X2 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_703 X1 (cons X4 nil) H);  intros.
  apply (rem_2590 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2592 : forall X1 X2 X3 X4:term, auto___def_52 (cons X2 (cons server nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X1 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_723 X2 (cons server nil) H);  intros.
Qed.

Remark rem_2593 : forall X1 X2 X3 X4:term, auto___def_51 sym -> auto___def_52 (cons X2 (cons server nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X1 -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_52 (cons X2 (cons server nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X1 -> auto___def_25 X1 X2 X3 X4). tauto.
  exact (rem_2592 X1 X2 X3 X4).
Qed.

Remark rem_2594 : forall X1 X2 X3 X4:term, auto___def_50 sym -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X1 -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_50 sym -> False). tauto.
  exact (rem_290).
Qed.

Remark rem_2595 : forall X1 X2 X3 X4:term, auto___def_50 sym -> auto___type_9 (cons X2 (cons server nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X1 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2 X3 X4. intros. apply (rem_2594 X1 X2 X3 X4);  assumption.
Qed.

Remark rem_2596 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X1 -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3 H4. intro H. intros.
  elim (rem_293 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_2593 X1 X2 X3 X4);  tauto.
  apply (rem_2595 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2597 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X1 -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto_knows_old nil -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X1 -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto___def_25 X1 X2 X3 X4). tauto.
  exact (rem_2596 X1 X2 X3 X4).
Qed.

Remark rem_2598 : forall X1 X2 X3 X4:term, auto_knows_old X4 -> auto_knows_old nil -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X1 -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X1 -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto_knows_old nil -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2597 X1 X2 X3 X4).
Qed.

Remark rem_2599 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X1 -> auto_knows_old (cons X4 nil) -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_860 X4 nil H);  intros.
  apply (rem_2598 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2600 : forall X1 X2 X3 X4:term, auto_knows_old X1 -> auto_knows_old (cons X4 nil) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X1 -> auto_knows_old (cons X4 nil) -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2599 X1 X2 X3 X4).
Qed.

Remark rem_2601 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (cons X1 (cons X4 nil)) -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_860 X1 (cons X4 nil) H);  intros.
  apply (rem_2600 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2602 : forall X1 X2 X3 X4:term, auto_knows_old (cons X1 (cons X4 nil)) -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (cons X1 (cons X4 nil)) -> auto_knows_old (key sym (cons X2 (cons server nil))) -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2601 X1 X2 X3 X4).
Qed.

Remark rem_2603 : forall X1 X2 X3 X4:term, auto___def_32 X4 -> auto___def_33 nil -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_33 nil -> False). tauto.
  exact (rem_1927).
Qed.

Remark rem_2604 : forall X1 X2 X3 X4:term, auto___def_31 (cons X4 nil) -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_715 X4 nil H);  intros.
  apply (rem_2603 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2605 : forall X1 X2 X3 X4:term, auto___def_31 (cons X4 nil) -> auto___def_34 sym -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_31 (cons X4 nil) -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto.
  exact (rem_2604 X1 X2 X3 X4).
Qed.

Remark rem_2606 : forall X1 X2 X3 X4:term, auto___def_34 sym -> auto___def_37 (cons X2 (cons server nil)) -> auto___def_31 (cons X4 nil) -> auto___type_5 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_31 (cons X4 nil) -> auto___def_34 sym -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2605 X1 X2 X3 X4).
Qed.

Remark rem_2607 : forall X1 X2 X3 X4:term, auto___def_30 (key sym (cons X2 (cons server nil))) -> auto___def_31 (cons X4 nil) -> auto___type_5 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_302 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_2606 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2608 : forall X1 X2 X3 X4:term, auto___type_5 X1 -> auto___def_31 (cons X4 nil) -> auto___def_30 (key sym (cons X2 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_30 (key sym (cons X2 (cons server nil))) -> auto___def_31 (cons X4 nil) -> auto___type_5 X1 -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2607 X1 X2 X3 X4).
Qed.

Remark rem_2609 : forall X1 X2 X3 X4:term, auto___def_29 (cons X1 (cons X4 nil)) -> auto___def_30 (key sym (cons X2 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_721 X1 (cons X4 nil) H);  intros.
  apply (rem_2608 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2610 : forall X1 X2 X3 X4:term, auto___def_35 (cons X2 (cons server nil)) -> auto___type_4 (cons X1 (cons X4 nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1202 X2 (cons server nil) H);  intros.
Qed.

Remark rem_2611 : forall X1 X2 X3 X4:term, auto___def_34 sym -> auto___def_35 (cons X2 (cons server nil)) -> auto___type_4 (cons X1 (cons X4 nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_35 (cons X2 (cons server nil)) -> auto___type_4 (cons X1 (cons X4 nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto.
  exact (rem_2610 X1 X2 X3 X4).
Qed.

Remark rem_2612 : forall X1 X2 X3 X4:term, auto___def_32 (key sym (cons X2 (cons server nil))) -> auto___type_4 (cons X1 (cons X4 nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_310 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_2611 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2613 : forall X1 X2 X3 X4:term, auto___type_4 (cons X1 (cons X4 nil)) -> auto___def_32 (key sym (cons X2 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_32 (key sym (cons X2 (cons server nil))) -> auto___type_4 (cons X1 (cons X4 nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2612 X1 X2 X3 X4).
Qed.

Remark rem_2614 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_313 (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil))) H);  intros.
  apply (rem_2481 X1 X2 X3 X4);  tauto.
  apply (rem_2591 X1 X2 X3 X4);  tauto.
  apply (rem_2602 X1 X2 X3 X4);  tauto.
  apply (rem_2609 X1 X2 X3 X4);  tauto.
  apply (rem_2613 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2615 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) -> auto_knows_old nil -> auto___def_25 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) -> auto___def_25 X1 X2 X3 X4). tauto.
  exact (rem_2614 X1 X2 X3 X4).
Qed.

Remark rem_2616 : forall X1 X2 X3 X4:term, auto_knows_old (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) -> auto_knows_old nil -> auto_knows_old X2 -> auto_knows_old X3 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) -> auto_knows_old nil -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2615 X1 X2 X3 X4).
Qed.

Remark rem_2617 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil) -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_860 (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil H);  intros.
  apply (rem_2616 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2618 : forall X1 X2 X3 X4:term, auto_knows_old X3 -> auto_knows_old (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil) -> auto_knows_old X2 -> auto___def_25 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil) -> auto___def_25 X1 X2 X3 X4). tauto. exact (rem_2617 X1 X2 X3 X4).
Qed.

Remark rem_2619 : forall X1 X2 X3 X4:term, auto_knows_old X2 -> auto_knows_old (cons X3 (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil)) -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_860 X3 (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil) H);  intros.
  apply (rem_2618 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_2620 : forall X1 X2 X3 X4:term, auto_knows_old (cons X2 (cons X3 (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil))) -> auto___def_25 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_860 X2 (cons X3 (cons (crypt (cons X1 (cons X4 nil)) (key sym (cons X2 (cons server nil)))) nil)) H);  intros.
  apply (rem_2619 X1 X2 X3 X4);  tauto.
Qed.

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

Remark rem_2622 : forall X1 X2:term, auto___def_36 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_2621 X1).
Qed.

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

Remark rem_2624 : forall X1 X2:term, auto___def_36 X2 -> auto___type_6 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_2623 X2).
Qed.

Remark rem_2625 : forall X1 X2:term, auto___def_36 X2 -> auto___type_6 X1 -> (auto___type_6 X1 /\ auto___def_36 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_6 X1). 2:apply (rem_2622 X1 X2);  assumption.
  cut (auto___def_36 X2). 2:apply (rem_2624 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2626 : forall X1 X2:term, auto___def_36 X2 -> auto___type_6 X1 -> auto___def_33 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2625 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_33_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2627 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_2.  tauto.
Defined.

Remark rem_2628 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> auto___type_2 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2.  case (rem_2627 epsilon_mknows_old_p__type_2). clear  epsilon_mknows_old_p__type_2. intros. apply trans___type_2_bob_1;  tauto.
 clear  epsilon_mknows_old_p__type_2. tauto.
Defined.

Remark rem_2629 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> auto_knows_old bob -> auto___type_2 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intro H. intros.
  elim (rem_783 H);  intros.
  apply (rem_2628 epsilon_mknows_old_p__type_2);  tauto.
Defined.

Remark rem_2630 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> auto___type_2 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2.  case (rem_2627 epsilon_mknows_old_p__type_2). clear  epsilon_mknows_old_p__type_2. intros. apply trans___type_2_alice_1;  tauto.
 clear  epsilon_mknows_old_p__type_2. tauto.
Defined.

Remark rem_2631 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> auto_knows_old alice -> auto___type_2 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intro H. intros.
  elim (rem_786 H);  intros.
  apply (rem_2630 epsilon_mknows_old_p__type_2);  tauto.
Defined.

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

Remark rem_2633 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_2632 epsilon_mknows_old_p__type_2 X1);  assumption.
  tauto.
Defined.

Remark rem_2634 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_2 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1. intros A1.
  case (rem_2633 epsilon_mknows_old_p__type_2 X1 A1). clear  epsilon_mknows_old_p__type_2 A1. intros. apply trans___type_2_s_1;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1. tauto.
Defined.

Remark rem_2635 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto_knows_old (s X1) -> auto___type_2 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1. intro H. intros.
  elim (rem_791 X1 H);  intros.
  apply (rem_2634 epsilon_mknows_old_p__type_2 X1);  tauto.
Defined.

Remark rem_2636 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> auto___type_2 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2.  case (rem_2627 epsilon_mknows_old_p__type_2). clear  epsilon_mknows_old_p__type_2. intros. apply trans___type_2_server_1;  tauto.
 clear  epsilon_mknows_old_p__type_2. tauto.
Defined.

Remark rem_2637 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> auto_knows_old server -> auto___type_2 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intro H. intros.
  elim (rem_794 H);  intros.
  apply (rem_2636 epsilon_mknows_old_p__type_2);  tauto.
Defined.

Remark rem_2638 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> auto___type_2 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2.  case (rem_2627 epsilon_mknows_old_p__type_2). clear  epsilon_mknows_old_p__type_2. intros. apply trans___type_2_nil_1;  tauto.
 clear  epsilon_mknows_old_p__type_2. tauto.
Defined.

Remark rem_2639 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> auto_knows_old nil -> auto___type_2 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intro H. intros.
  elim (rem_797 H);  intros.
  apply (rem_2638 epsilon_mknows_old_p__type_2);  tauto.
Defined.

Remark rem_2640 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> auto___type_2 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2.  case (rem_2627 epsilon_mknows_old_p__type_2). clear  epsilon_mknows_old_p__type_2. intros. apply trans___type_2_i_1;  tauto.
 clear  epsilon_mknows_old_p__type_2. tauto.
Defined.

Remark rem_2641 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> auto_knows_old i -> auto___type_2 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intro H. intros.
  elim (rem_800 H);  intros.
  apply (rem_2640 epsilon_mknows_old_p__type_2);  tauto.
Defined.

Remark rem_2642 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2643 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_2642 epsilon_mknows_old_p__type_2 X1).
Defined.

Remark rem_2644 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2645 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_2644 epsilon_mknows_old_p__type_2 X2).
Defined.

Remark rem_2646 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_2643 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_2645 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2647 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_2 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2646 epsilon_mknows_old_p__type_2 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_2 A1 A2. intros. apply trans___type_2_key_1;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2648 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2649 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_2648 epsilon_mknows_old_p__type_2 X1).
Defined.

Remark rem_2650 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2651 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_2650 epsilon_mknows_old_p__type_2 X2).
Defined.

Remark rem_2652 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_2649 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_2651 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2653 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_2 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2652 epsilon_mknows_old_p__type_2 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_2 A1 A2. intros. apply trans___type_2_key_2;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2654 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto___type_2 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intro H. intros.
  elim (rem_293 X1 X2 H);  intros.
  apply (rem_2647 epsilon_mknows_old_p__type_2 X1 X2);  tauto.
  apply (rem_2653 epsilon_mknows_old_p__type_2 X1 X2);  tauto.
Defined.

Remark rem_2655 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2632 epsilon_mknows_old_p__type_2 X1).
Defined.

Remark rem_2656 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2657 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2656 epsilon_mknows_old_p__type_2 X2).
Defined.

Remark rem_2658 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X3:term, auto_knows_old X3 -> auto_knows_old X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2659 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_2658 epsilon_mknows_old_p__type_2 X3).
Defined.

Remark rem_2660 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_2655 epsilon_mknows_old_p__type_2 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_2657 epsilon_mknows_old_p__type_2 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2659 epsilon_mknows_old_p__type_2 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2661 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_2 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2660 epsilon_mknows_old_p__type_2 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p__type_2 A1 A2 A3. intros. apply trans___type_2_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1 A2 A3. tauto.
Defined.

Remark rem_2662 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2 X3:term, auto_knows_old (nonceb_old X1 X2 X3) -> auto___type_2 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2 X3. intro H. intros.
  elim (rem_822 X1 X2 X3 H);  intros.
  apply (rem_2661 epsilon_mknows_old_p__type_2 X1 X2 X3);  tauto.
Defined.

Remark rem_2663 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2664 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_2663 epsilon_mknows_old_p__type_2 X1);  assumption.
  tauto.
Defined.

Remark rem_2665 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto_agent X1 -> auto___type_2 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1. intros A1.
  case (rem_2664 epsilon_mknows_old_p__type_2 X1 A1). clear  epsilon_mknows_old_p__type_2 A1. intros. apply trans___type_2_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1. tauto.
Defined.

Remark rem_2666 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto_knows_old (noncea_old X1) -> auto___type_2 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1. intro H. intros.
  elim (rem_827 X1 H);  intros.
  apply (rem_2665 epsilon_mknows_old_p__type_2 X1);  tauto.
Defined.

Remark rem_2667 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_16 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2668 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_2667 epsilon_mknows_old_p__type_2 X1).
Defined.

Remark rem_2669 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2670 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_2669 epsilon_mknows_old_p__type_2 X2).
Defined.

Remark rem_2671 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_2668 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_2670 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2672 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2671 epsilon_mknows_old_p__type_2 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_2 A1 A2. intros. apply trans___type_2_crypt_1;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2673 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2674 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_2673 epsilon_mknows_old_p__type_2 X1).
Defined.

Remark rem_2675 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2676 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_2675 epsilon_mknows_old_p__type_2 X2).
Defined.

Remark rem_2677 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_2674 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_2676 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2678 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2677 epsilon_mknows_old_p__type_2 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_2 A1 A2. intros. apply trans___type_2_crypt_2;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2679 : (forall X:term, auto_knows_old X -> auto___type_2 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_2. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2632 epsilon_mknows_old_p__type_2 X1).
Defined.

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

Remark rem_2681 : (forall X:term, auto_knows_old X -> auto___type_2 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_2. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_2680 epsilon_mknows_old_p__type_2 X2).
Defined.

Remark rem_2682 : (forall X:term, auto_knows_old X -> auto___type_2 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_2. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_2679 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2681 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2683 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2682 epsilon_mknows_old_p__type_2 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_2 A1 A2. intros. apply trans___type_2_crypt_3;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2684 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2685 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_2684 epsilon_mknows_old_p__type_2 X1).
Defined.

Remark rem_2686 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2687 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_2686 epsilon_mknows_old_p__type_2 X2).
Defined.

Remark rem_2688 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_2685 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_2687 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2689 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2688 epsilon_mknows_old_p__type_2 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_2 A1 A2. intros. apply trans___type_2_crypt_4;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1 A2. tauto.
Defined.

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

Remark rem_2691 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_2690 epsilon_mknows_old_p__type_2 X1).
Defined.

Remark rem_2692 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2693 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_2692 epsilon_mknows_old_p__type_2 X2).
Defined.

Remark rem_2694 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_2691 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_2693 epsilon_mknows_old_p__type_2 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2695 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_2 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2694 epsilon_mknows_old_p__type_2 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_2 A1 A2. intros. apply trans___type_2_crypt_5;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2696 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto___type_2 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intro H. intros.
  elim (rem_313 X1 X2 H);  intros.
  apply (rem_2672 epsilon_mknows_old_p__type_2 X1 X2);  tauto.
  apply (rem_2678 epsilon_mknows_old_p__type_2 X1 X2);  tauto.
  apply (rem_2683 epsilon_mknows_old_p__type_2 X1 X2);  tauto.
  apply (rem_2689 epsilon_mknows_old_p__type_2 X1 X2);  tauto.
  apply (rem_2695 epsilon_mknows_old_p__type_2 X1 X2);  tauto.
Defined.

Remark rem_2697 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_2 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intros A1 A2.
  case (rem_2682 epsilon_mknows_old_p__type_2 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_2 A1 A2. intros. apply trans___type_2_cons_1;  tauto.
 clear  epsilon_mknows_old_p__type_2 A1 A2. tauto.
Defined.

Remark rem_2698 : (forall X:term, auto_knows_old X -> auto___type_2 X)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto___type_2 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_2. intros X1 X2. intro H. intros.
  elim (rem_860 X1 X2 H);  intros.
  apply (rem_2697 epsilon_mknows_old_p__type_2 X1 X2);  tauto.
Defined.

Remark rem_2699 : forall X1:term, auto_knows_old X1 -> auto___type_2 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_old_p__type_2 1.
  intro X. case X.
  exact (rem_2631 epsilon_mknows_old_p__type_2 ).
  exact (rem_2629 epsilon_mknows_old_p__type_2 ).
  intros X1 X2;  exact (rem_2698 epsilon_mknows_old_p__type_2 X1 X2).
  intros X1 X2;  exact (rem_2696 epsilon_mknows_old_p__type_2 X1 X2).
  exact (rem_2641 epsilon_mknows_old_p__type_2 ).
  intros X1 X2;  exact (rem_2654 epsilon_mknows_old_p__type_2 X1 X2).
  exact (rem_2639 epsilon_mknows_old_p__type_2 ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_2666 epsilon_mknows_old_p__type_2 X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_2662 epsilon_mknows_old_p__type_2 X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_2635 epsilon_mknows_old_p__type_2 X1).
  exact (rem_2637 epsilon_mknows_old_p__type_2 ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Qed.

Remark rem_2700 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto___type_2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X1 -> auto___type_2 X1). tauto. exact (rem_2699 X1).
Qed.

Remark rem_2701 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_2 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X1 -> auto___type_2 X1). tauto. exact (rem_2700 X1 X2).
Qed.

Remark rem_2702 : forall X1 X2:term, auto___def_10 X1 X2 -> auto___type_2 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_266 X1 X2 H);  intros.
  apply (rem_2701 X1 X2);  tauto.
Qed.

Remark rem_2703 : 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_257 X1).
Qed.

Remark rem_2704 : 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_2175 X2).
Qed.

Remark rem_2705 : 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_2703 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2704 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2706 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old nil -> auto___def_10 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_2705 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_10_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_2707 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old nil -> auto_knows_old X1 -> auto___def_10 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_10 X1 X2). tauto. exact (rem_2706 X1 X2).
Qed.

Remark rem_2708 : forall X1 X2:term, auto_knows_old X1 -> auto_knows_old (cons X2 nil) -> auto___def_10 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_860 X2 nil H);  intros.
  apply (rem_2707 X1 X2);  tauto.
Qed.

Remark rem_2709 : forall X1 X2:term, auto_knows_old (cons X1 (cons X2 nil)) -> auto___def_10 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_860 X1 (cons X2 nil) H);  intros.
  apply (rem_2708 X1 X2);  tauto.
Qed.

Remark rem_2710 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_8.  tauto.
Defined.

Remark rem_2711 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> auto___type_8 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8.  case (rem_2710 epsilon_mknows_old_p__type_8). clear  epsilon_mknows_old_p__type_8. intros. apply trans___type_8_bob_1;  tauto.
 clear  epsilon_mknows_old_p__type_8. tauto.
Defined.

Remark rem_2712 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> auto_knows_old bob -> auto___type_8 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intro H. intros.
  elim (rem_783 H);  intros.
  apply (rem_2711 epsilon_mknows_old_p__type_8);  tauto.
Defined.

Remark rem_2713 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> auto___type_8 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8.  case (rem_2710 epsilon_mknows_old_p__type_8). clear  epsilon_mknows_old_p__type_8. intros. apply trans___type_8_alice_1;  tauto.
 clear  epsilon_mknows_old_p__type_8. tauto.
Defined.

Remark rem_2714 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> auto_knows_old alice -> auto___type_8 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intro H. intros.
  elim (rem_786 H);  intros.
  apply (rem_2713 epsilon_mknows_old_p__type_8);  tauto.
Defined.

Remark rem_2715 : (forall X:term, auto_knows_old 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_2716 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_2715 epsilon_mknows_old_p__type_8 X1);  assumption.
  tauto.
Defined.

Remark rem_2717 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_8 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1. intros A1.
  case (rem_2716 epsilon_mknows_old_p__type_8 X1 A1). clear  epsilon_mknows_old_p__type_8 A1. intros. apply trans___type_8_s_1;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1. tauto.
Defined.

Remark rem_2718 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1:term, auto_knows_old (s X1) -> auto___type_8 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1. intro H. intros.
  elim (rem_791 X1 H);  intros.
  apply (rem_2717 epsilon_mknows_old_p__type_8 X1);  tauto.
Defined.

Remark rem_2719 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> auto___type_8 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8.  case (rem_2710 epsilon_mknows_old_p__type_8). clear  epsilon_mknows_old_p__type_8. intros. apply trans___type_8_server_1;  tauto.
 clear  epsilon_mknows_old_p__type_8. tauto.
Defined.

Remark rem_2720 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> auto_knows_old server -> auto___type_8 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intro H. intros.
  elim (rem_794 H);  intros.
  apply (rem_2719 epsilon_mknows_old_p__type_8);  tauto.
Defined.

Remark rem_2721 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> auto___type_8 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8.  case (rem_2710 epsilon_mknows_old_p__type_8). clear  epsilon_mknows_old_p__type_8. intros. apply trans___type_8_nil_1;  tauto.
 clear  epsilon_mknows_old_p__type_8. tauto.
Defined.

Remark rem_2722 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> auto_knows_old nil -> auto___type_8 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intro H. intros.
  elim (rem_797 H);  intros.
  apply (rem_2721 epsilon_mknows_old_p__type_8);  tauto.
Defined.

Remark rem_2723 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> auto___type_8 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8.  case (rem_2710 epsilon_mknows_old_p__type_8). clear  epsilon_mknows_old_p__type_8. intros. apply trans___type_8_i_1;  tauto.
 clear  epsilon_mknows_old_p__type_8. tauto.
Defined.

Remark rem_2724 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> auto_knows_old i -> auto___type_8 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intro H. intros.
  elim (rem_800 H);  intros.
  apply (rem_2723 epsilon_mknows_old_p__type_8);  tauto.
Defined.

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

Remark rem_2726 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_2725 epsilon_mknows_old_p__type_8 X1).
Defined.

Remark rem_2727 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2728 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_2727 epsilon_mknows_old_p__type_8 X2).
Defined.

Remark rem_2729 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_2726 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_2728 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2730 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_8 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  case (rem_2729 epsilon_mknows_old_p__type_8 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_8 A1 A2. intros. apply trans___type_8_key_1;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1 A2. tauto.
Defined.

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

Remark rem_2732 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_2731 epsilon_mknows_old_p__type_8 X1).
Defined.

Remark rem_2733 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2734 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_2733 epsilon_mknows_old_p__type_8 X2).
Defined.

Remark rem_2735 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_2732 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_2734 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2736 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_8 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  case (rem_2735 epsilon_mknows_old_p__type_8 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_8 A1 A2. intros. apply trans___type_8_key_2;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1 A2. tauto.
Defined.

Remark rem_2737 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto___type_8 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intro H. intros.
  elim (rem_293 X1 X2 H);  intros.
  apply (rem_2730 epsilon_mknows_old_p__type_8 X1 X2);  tauto.
  apply (rem_2736 epsilon_mknows_old_p__type_8 X1 X2);  tauto.
Defined.

Remark rem_2738 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2715 epsilon_mknows_old_p__type_8 X1).
Defined.

Remark rem_2739 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2740 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2739 epsilon_mknows_old_p__type_8 X2).
Defined.

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

Remark rem_2742 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_2741 epsilon_mknows_old_p__type_8 X3).
Defined.

Remark rem_2743 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_2738 epsilon_mknows_old_p__type_8 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_2740 epsilon_mknows_old_p__type_8 X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2742 epsilon_mknows_old_p__type_8 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2744 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_8 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2743 epsilon_mknows_old_p__type_8 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p__type_8 A1 A2 A3. intros. apply trans___type_8_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1 A2 A3. tauto.
Defined.

Remark rem_2745 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2 X3:term, auto_knows_old (nonceb_old X1 X2 X3) -> auto___type_8 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2 X3. intro H. intros.
  elim (rem_822 X1 X2 X3 H);  intros.
  apply (rem_2744 epsilon_mknows_old_p__type_8 X1 X2 X3);  tauto.
Defined.

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

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

Remark rem_2748 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1:term, auto_agent X1 -> auto___type_8 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1. intros A1.
  case (rem_2747 epsilon_mknows_old_p__type_8 X1 A1). clear  epsilon_mknows_old_p__type_8 A1. intros. apply trans___type_8_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1. tauto.
Defined.

Remark rem_2749 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1:term, auto_knows_old (noncea_old X1) -> auto___type_8 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1. intro H. intros.
  elim (rem_827 X1 H);  intros.
  apply (rem_2748 epsilon_mknows_old_p__type_8 X1);  tauto.
Defined.

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

Remark rem_2751 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_2750 epsilon_mknows_old_p__type_8 X1).
Defined.

Remark rem_2752 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2753 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_2752 epsilon_mknows_old_p__type_8 X2).
Defined.

Remark rem_2754 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_2751 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_2753 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2755 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_8 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  case (rem_2754 epsilon_mknows_old_p__type_8 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_8 A1 A2. intros. apply trans___type_8_crypt_1;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1 A2. tauto.
Defined.

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

Remark rem_2757 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_2756 epsilon_mknows_old_p__type_8 X1).
Defined.

Remark rem_2758 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2759 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_2758 epsilon_mknows_old_p__type_8 X2).
Defined.

Remark rem_2760 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_2757 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_2759 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2761 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_8 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  case (rem_2760 epsilon_mknows_old_p__type_8 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_8 A1 A2. intros. apply trans___type_8_crypt_2;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1 A2. tauto.
Defined.

Remark rem_2762 : (forall X:term, auto_knows_old X -> auto___type_8 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_8. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2715 epsilon_mknows_old_p__type_8 X1).
Defined.

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

Remark rem_2764 : (forall X:term, auto_knows_old X -> auto___type_8 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_8. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_2763 epsilon_mknows_old_p__type_8 X2).
Defined.

Remark rem_2765 : (forall X:term, auto_knows_old X -> auto___type_8 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_8. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_2762 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2764 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2766 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_8 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  case (rem_2765 epsilon_mknows_old_p__type_8 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_8 A1 A2. intros. apply trans___type_8_crypt_3;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1 A2. tauto.
Defined.

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

Remark rem_2768 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_2767 epsilon_mknows_old_p__type_8 X1).
Defined.

Remark rem_2769 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2770 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_2769 epsilon_mknows_old_p__type_8 X2).
Defined.

Remark rem_2771 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_2768 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_2770 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2772 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_8 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  case (rem_2771 epsilon_mknows_old_p__type_8 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_8 A1 A2. intros. apply trans___type_8_crypt_4;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1 A2. tauto.
Defined.

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

Remark rem_2774 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_2773 epsilon_mknows_old_p__type_8 X1).
Defined.

Remark rem_2775 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2776 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_2775 epsilon_mknows_old_p__type_8 X2).
Defined.

Remark rem_2777 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_2774 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_2776 epsilon_mknows_old_p__type_8 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2778 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_8 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  case (rem_2777 epsilon_mknows_old_p__type_8 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_8 A1 A2. intros. apply trans___type_8_crypt_5;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1 A2. tauto.
Defined.

Remark rem_2779 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto___type_8 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intro H. intros.
  elim (rem_313 X1 X2 H);  intros.
  apply (rem_2755 epsilon_mknows_old_p__type_8 X1 X2);  tauto.
  apply (rem_2761 epsilon_mknows_old_p__type_8 X1 X2);  tauto.
  apply (rem_2766 epsilon_mknows_old_p__type_8 X1 X2);  tauto.
  apply (rem_2772 epsilon_mknows_old_p__type_8 X1 X2);  tauto.
  apply (rem_2778 epsilon_mknows_old_p__type_8 X1 X2);  tauto.
Defined.

Remark rem_2780 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_8 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intros A1 A2.
  case (rem_2765 epsilon_mknows_old_p__type_8 X1 X2 A1 A2). clear  epsilon_mknows_old_p__type_8 A1 A2. intros. apply trans___type_8_cons_1;  tauto.
 clear  epsilon_mknows_old_p__type_8 A1 A2. tauto.
Defined.

Remark rem_2781 : (forall X:term, auto_knows_old X -> auto___type_8 X)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto___type_8 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p__type_8. intros X1 X2. intro H. intros.
  elim (rem_860 X1 X2 H);  intros.
  apply (rem_2780 epsilon_mknows_old_p__type_8 X1 X2);  tauto.
Defined.

Remark rem_2782 : forall X1:term, auto_knows_old X1 -> auto___type_8 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_old_p__type_8 1.
  intro X. case X.
  exact (rem_2714 epsilon_mknows_old_p__type_8 ).
  exact (rem_2712 epsilon_mknows_old_p__type_8 ).
  intros X1 X2;  exact (rem_2781 epsilon_mknows_old_p__type_8 X1 X2).
  intros X1 X2;  exact (rem_2779 epsilon_mknows_old_p__type_8 X1 X2).
  exact (rem_2724 epsilon_mknows_old_p__type_8 ).
  intros X1 X2;  exact (rem_2737 epsilon_mknows_old_p__type_8 X1 X2).
  exact (rem_2722 epsilon_mknows_old_p__type_8 ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_2749 epsilon_mknows_old_p__type_8 X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_2745 epsilon_mknows_old_p__type_8 X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_2718 epsilon_mknows_old_p__type_8 X1).
  exact (rem_2720 epsilon_mknows_old_p__type_8 ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Qed.

Remark rem_2783 : forall X1 X2 X3 X4 X5:term, auto___def_32 X2 -> auto___type_5 X3 -> auto___type_7 X4 -> auto_agent X4 -> auto_knows_old X5 -> auto_knows_old X1 -> auto___type_8 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X1 -> auto___type_8 X1). tauto. exact (rem_2782 X1).
Qed.

Remark rem_2784 : forall X1 X2 X3 X4 X5:term, auto_agent X2 -> auto___type_7 X2 -> auto_knows_old X1 -> auto___type_5 X3 -> auto_knows_old X4 -> auto___def_32 X5 -> auto___type_8 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X4 X3 X5 X2.
  cut (auto___def_32 X2 -> auto___type_5 X3 -> auto___type_7 X4 -> auto_agent X4 -> auto_knows_old X5 -> auto_knows_old X1 -> auto___type_8 X1). tauto. exact (rem_2783 X1 X2 X3 X4 X5).
Qed.

Remark rem_2785 : forall X1 X2 X3 X4 X5:term, auto___def_46 X1 X2 X3 X4 X5 -> or_1
    (auto_agent X1 /\ auto___type_7 X1 /\ auto_knows_old X2 /\ auto___type_5 X3 /\ auto_knows_old X4 /\ auto___def_32 X5)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2786 : forall X1 X2 X3 X4 X5:term, auto___def_46 X2 X1 X3 X4 X5 -> auto___type_8 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_2785 X2 X1 X3 X4 X5 H);  intros.
  apply (rem_2784 X1 X2 X3 X4 X5);  tauto.
Qed.

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

Remark rem_2788 : forall X1 X2:term, auto___def_85 X2 -> auto___type_15 X1 -> auto___type_15 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_15 X1 -> auto___type_15 X1). tauto. exact (rem_2787 X1).
Qed.

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

Remark rem_2790 : forall X1 X2:term, auto___def_85 X2 -> auto___type_15 X1 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_2789 X2).
Qed.

Remark rem_2791 : forall X1 X2:term, auto___def_85 X2 -> auto___type_15 X1 -> (auto___type_15 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_15 X1). 2:apply (rem_2788 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_2790 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2792 : forall X1 X2:term, auto___def_85 X2 -> auto___type_15 X1 -> auto___def_82 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2791 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_82_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2793 : 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_140 X1).
Qed.

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

Remark rem_2795 : 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_2794 X2).
Qed.

Remark rem_2796 : 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_2793 X1 X2);  assumption.
  cut (auto___def_82 X2). 2:apply (rem_2795 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2797 : forall X1 X2:term, auto___def_81 X1 -> auto___def_82 X2 -> auto___def_80 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2796 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_80_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2798 : forall X1 X2:term, auto___def_82 X2 -> auto___def_81 X1 -> auto___def_80 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_81 X1 -> auto___def_82 X2 -> auto___def_80 (cons X1 X2)). tauto. exact (rem_2797 X1 X2).
Qed.

Remark rem_2799 : forall X1 X2 X3 X4 X5:term, auto___def_32 X2 -> auto___type_5 X3 -> auto___type_7 X4 -> auto_agent X4 -> auto_knows_old X5 -> auto_knows_old X1 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X1 -> auto___type_4 X1). tauto. exact (rem_945 X1).
Qed.

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

Remark rem_2801 : forall X1 X2 X3 X4 X5:term, auto___def_32 X2 -> auto___type_5 X3 -> auto___type_7 X4 -> auto_agent X4 -> auto_knows_old X5 -> auto_knows_old X1 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_2800 X2).
Qed.

Remark rem_2802 : forall X1 X2 X3 X4 X5:term, auto___def_32 X2 -> auto___type_5 X3 -> auto___type_7 X4 -> auto_agent X4 -> auto_knows_old X5 -> auto_knows_old X1 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3 A4 A5 A6.
  cut (auto___type_4 X1). 2:apply (rem_2799 X1 X2 X3 X4 X5);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_2801 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_2803 : forall X1 X2 X3 X4 X5:term, auto___def_32 X2 -> auto___type_5 X3 -> auto___type_7 X4 -> auto_agent X4 -> auto_knows_old X5 -> auto_knows_old X1 -> auto___def_48 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3 A4 A5 A6.
  case (rem_2802 X1 X2 X3 X4 X5 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans___def_48_crypt_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_2804 : forall X1 X2 X3 X4 X5:term, auto_agent X3 -> auto___type_7 X3 -> auto_knows_old X4 -> auto___type_5 X5 -> auto_knows_old X1 -> auto___def_32 X2 -> auto___def_48 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X5 X3.
  cut (auto___def_32 X2 -> auto___type_5 X3 -> auto___type_7 X4 -> auto_agent X4 -> auto_knows_old X5 -> auto_knows_old X1 -> auto___def_48 (crypt X1 X2)). tauto. exact (rem_2803 X1 X2 X3 X4 X5).
Qed.

Remark rem_2805 : forall X1 X2 X3 X4 X5:term, auto___def_46 X3 X4 X5 X1 X2 -> auto___def_48 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_2785 X3 X4 X5 X1 X2 H);  intros.
  apply (rem_2804 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_2806 : forall X1 X2:term, auto___def_16 X2 -> auto___def_17 (key pub X1) -> auto___type_9 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_9_1. Qed.

Remark rem_2807 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_pknows_old.  tauto.
Defined.

Remark rem_2808 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> auto_knows_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old.  case (rem_2807 epsilon_m__type_2_pknows_old). clear  epsilon_m__type_2_pknows_old. intros. apply trans_knows_old_bob_1;  tauto.
 clear  epsilon_m__type_2_pknows_old. tauto.
Defined.

Remark rem_2809 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> auto___type_2 bob -> auto_knows_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intro H. intros.
  elim (rem_1002 H);  intros.
  apply (rem_2808 epsilon_m__type_2_pknows_old);  tauto.
Defined.

Remark rem_2810 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> auto_knows_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old.  case (rem_2807 epsilon_m__type_2_pknows_old). clear  epsilon_m__type_2_pknows_old. intros. apply trans_knows_old_alice_1;  tauto.
 clear  epsilon_m__type_2_pknows_old. tauto.
Defined.

Remark rem_2811 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> auto___type_2 alice -> auto_knows_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intro H. intros.
  elim (rem_1005 H);  intros.
  apply (rem_2810 epsilon_m__type_2_pknows_old);  tauto.
Defined.

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

Remark rem_2813 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_2812 epsilon_m__type_2_pknows_old X1);  assumption.
  tauto.
Defined.

Remark rem_2814 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1. intros A1.
  case (rem_2813 epsilon_m__type_2_pknows_old X1 A1). clear  epsilon_m__type_2_pknows_old A1. intros. apply trans_knows_old_s_1;  tauto.
 clear  epsilon_m__type_2_pknows_old A1. tauto.
Defined.

Remark rem_2815 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto___type_2 (s X1) -> auto_knows_old (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1. intro H. intros.
  elim (rem_1010 X1 H);  intros.
  apply (rem_2814 epsilon_m__type_2_pknows_old X1);  tauto.
Defined.

Remark rem_2816 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> auto_knows_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old.  case (rem_2807 epsilon_m__type_2_pknows_old). clear  epsilon_m__type_2_pknows_old. intros. apply trans_knows_old_server_1;  tauto.
 clear  epsilon_m__type_2_pknows_old. tauto.
Defined.

Remark rem_2817 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> auto___type_2 server -> auto_knows_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intro H. intros.
  elim (rem_1013 H);  intros.
  apply (rem_2816 epsilon_m__type_2_pknows_old);  tauto.
Defined.

Remark rem_2818 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old.  case (rem_2807 epsilon_m__type_2_pknows_old). clear  epsilon_m__type_2_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_m__type_2_pknows_old. tauto.
Defined.

Remark rem_2819 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> auto___type_2 nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intro H. intros.
  elim (rem_1016 H);  intros.
  apply (rem_2818 epsilon_m__type_2_pknows_old);  tauto.
Defined.

Remark rem_2820 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> auto_knows_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old.  case (rem_2807 epsilon_m__type_2_pknows_old). clear  epsilon_m__type_2_pknows_old. intros. apply trans_knows_old_i_1;  tauto.
 clear  epsilon_m__type_2_pknows_old. tauto.
Defined.

Remark rem_2821 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> auto___type_2 i -> auto_knows_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intro H. intros.
  elim (rem_1019 H);  intros.
  apply (rem_2820 epsilon_m__type_2_pknows_old);  tauto.
Defined.

Remark rem_2822 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2823 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_2822 epsilon_m__type_2_pknows_old X1).
Defined.

Remark rem_2824 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2825 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_2824 epsilon_m__type_2_pknows_old X2).
Defined.

Remark rem_2826 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_2823 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_2825 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2827 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2826 epsilon_m__type_2_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_2_pknows_old A1 A2. intros. apply trans_knows_old_key_1;  tauto.
 clear  epsilon_m__type_2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2828 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2829 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_2828 epsilon_m__type_2_pknows_old X1).
Defined.

Remark rem_2830 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2831 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_2830 epsilon_m__type_2_pknows_old X2).
Defined.

Remark rem_2832 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_2829 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_2831 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2833 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2832 epsilon_m__type_2_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_2_pknows_old A1 A2. intros. apply trans_knows_old_key_2;  tauto.
 clear  epsilon_m__type_2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2834 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_2 (key X1 X2) -> auto_knows_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_1033 X1 X2 H);  intros.
  apply (rem_2827 epsilon_m__type_2_pknows_old X1 X2);  tauto.
  apply (rem_2833 epsilon_m__type_2_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2835 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2812 epsilon_m__type_2_pknows_old X1).
Defined.

Remark rem_2836 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2837 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2836 epsilon_m__type_2_pknows_old X2).
Defined.

Remark rem_2838 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X3:term, auto_knows_old X3 -> auto_knows_old X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2839 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_2838 epsilon_m__type_2_pknows_old X3).
Defined.

Remark rem_2840 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_2835 epsilon_m__type_2_pknows_old X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_2837 epsilon_m__type_2_pknows_old X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2839 epsilon_m__type_2_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2841 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2840 epsilon_m__type_2_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_2_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_1;  tauto.
 clear  epsilon_m__type_2_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2842 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto___type_2 (nonceb_old X1 X2 X3) -> auto_knows_old (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_1037 X1 X2 X3 H);  intros.
  apply (rem_2841 epsilon_m__type_2_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_2843 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2844 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_2843 epsilon_m__type_2_pknows_old X1);  assumption.
  tauto.
Defined.

Remark rem_2845 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_knows_old (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1. intros A1.
  case (rem_2844 epsilon_m__type_2_pknows_old X1 A1). clear  epsilon_m__type_2_pknows_old A1. intros. apply trans_knows_old_noncea_old_1;  tauto.
 clear  epsilon_m__type_2_pknows_old A1. tauto.
Defined.

Remark rem_2846 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto___type_2 (noncea_old X1) -> auto_knows_old (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1. intro H. intros.
  elim (rem_1041 X1 H);  intros.
  apply (rem_2845 epsilon_m__type_2_pknows_old X1);  tauto.
Defined.

Remark rem_2847 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_16 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2848 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_2847 epsilon_m__type_2_pknows_old X1).
Defined.

Remark rem_2849 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2850 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_2849 epsilon_m__type_2_pknows_old X2).
Defined.

Remark rem_2851 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_2848 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_2850 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2852 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2851 epsilon_m__type_2_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_2_pknows_old A1 A2. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  epsilon_m__type_2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2853 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2854 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_2853 epsilon_m__type_2_pknows_old X1).
Defined.

Remark rem_2855 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2856 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_2855 epsilon_m__type_2_pknows_old X2).
Defined.

Remark rem_2857 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_2854 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_2856 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2858 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2857 epsilon_m__type_2_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_2_pknows_old A1 A2. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  epsilon_m__type_2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2859 : (forall X:term, auto___type_2 X -> auto_knows_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_2_pknows_old. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2812 epsilon_m__type_2_pknows_old X1).
Defined.

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

Remark rem_2861 : (forall X:term, auto___type_2 X -> auto_knows_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_2_pknows_old. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_2860 epsilon_m__type_2_pknows_old X2).
Defined.

Remark rem_2862 : (forall X:term, auto___type_2 X -> auto_knows_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_2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_2859 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2861 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2863 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2862 epsilon_m__type_2_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_2_pknows_old A1 A2. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  epsilon_m__type_2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2864 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2865 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_2864 epsilon_m__type_2_pknows_old X1).
Defined.

Remark rem_2866 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2867 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_2866 epsilon_m__type_2_pknows_old X2).
Defined.

Remark rem_2868 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_2865 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_2867 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2869 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2868 epsilon_m__type_2_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_2_pknows_old A1 A2. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  epsilon_m__type_2_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_2871 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_2870 epsilon_m__type_2_pknows_old X1).
Defined.

Remark rem_2872 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2873 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_2872 epsilon_m__type_2_pknows_old X2).
Defined.

Remark rem_2874 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_2871 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_2873 epsilon_m__type_2_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2875 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2874 epsilon_m__type_2_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_2_pknows_old A1 A2. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  epsilon_m__type_2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2876 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_2 (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_1250 X1 X2 H);  intros.
  apply (rem_2852 epsilon_m__type_2_pknows_old X1 X2);  tauto.
  apply (rem_2858 epsilon_m__type_2_pknows_old X1 X2);  tauto.
  apply (rem_2863 epsilon_m__type_2_pknows_old X1 X2);  tauto.
  apply (rem_2869 epsilon_m__type_2_pknows_old X1 X2);  tauto.
  apply (rem_2875 epsilon_m__type_2_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2877 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2862 epsilon_m__type_2_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_2_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__type_2_pknows_old A1 A2. tauto.
Defined.

Remark rem_2878 : (forall X:term, auto___type_2 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_2 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_2_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_1253 X1 X2 H);  intros.
  apply (rem_2877 epsilon_m__type_2_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2879 : forall X1:term, auto___type_2 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__type_2_pknows_old 1.
  intro X. case X.
  exact (rem_2811 epsilon_m__type_2_pknows_old ).
  exact (rem_2809 epsilon_m__type_2_pknows_old ).
  intros X1 X2;  exact (rem_2878 epsilon_m__type_2_pknows_old X1 X2).
  intros X1 X2;  exact (rem_2876 epsilon_m__type_2_pknows_old X1 X2).
  exact (rem_2821 epsilon_m__type_2_pknows_old ).
  intros X1 X2;  exact (rem_2834 epsilon_m__type_2_pknows_old X1 X2).
  exact (rem_2819 epsilon_m__type_2_pknows_old ).
  intros X1. intro H. elim (rem_1257 X1 H).
  intros X1;  exact (rem_2846 epsilon_m__type_2_pknows_old X1).
  intros X1 X2 X3. intro H. elim (rem_1259 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_2842 epsilon_m__type_2_pknows_old X1 X2 X3).
   intro H. elim (rem_1256  H).
   intro H. elim (rem_1258  H).
  intros X1;  exact (rem_2815 epsilon_m__type_2_pknows_old X1).
  exact (rem_2817 epsilon_m__type_2_pknows_old ).
  intros X1 X2 X3 X4. intro H. elim (rem_1260 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1261 X1 X2 X3 X4 H).
   intro H. elim (rem_1255  H).
Qed.

Remark rem_2880 : (forall X:term, auto___def_16 X -> auto_knows_old X)
    -> forall X1:term, auto___type_2 X1 -> auto_knows_old X1. (* Cut history. *)
Proof.  intros epsilon_m__def_16_pknows_old. exact (rem_2879).
Defined.

Remark rem_2881 : (forall X:term, auto___def_16 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_16_pknows_old. intros X1 X2.
  cut (auto___type_2 X1 -> auto_knows_old X1). tauto. exact (rem_2880 epsilon_m__def_16_pknows_old X1).
Defined.

Remark rem_2882 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_pknows_old.  tauto.
Defined.

Remark rem_2883 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> auto_knows_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old.  case (rem_2882 epsilon_m__type_3_pknows_old). clear  epsilon_m__type_3_pknows_old. intros. apply trans_knows_old_bob_1;  tauto.
 clear  epsilon_m__type_3_pknows_old. tauto.
Defined.

Remark rem_2884 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> auto___type_3 bob -> auto_knows_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intro H. intros.
  elim (rem_151 H);  intros.
  apply (rem_2883 epsilon_m__type_3_pknows_old);  tauto.
Defined.

Remark rem_2885 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> auto_knows_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old.  case (rem_2882 epsilon_m__type_3_pknows_old). clear  epsilon_m__type_3_pknows_old. intros. apply trans_knows_old_alice_1;  tauto.
 clear  epsilon_m__type_3_pknows_old. tauto.
Defined.

Remark rem_2886 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> auto___type_3 alice -> auto_knows_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intro H. intros.
  elim (rem_154 H);  intros.
  apply (rem_2885 epsilon_m__type_3_pknows_old);  tauto.
Defined.

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

Remark rem_2888 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1. intros A1.
  cut (auto_knows_old X1). 2:apply (rem_2887 epsilon_m__type_3_pknows_old X1);  assumption.
  tauto.
Defined.

Remark rem_2889 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1. intros A1.
  case (rem_2888 epsilon_m__type_3_pknows_old X1 A1). clear  epsilon_m__type_3_pknows_old A1. intros. apply trans_knows_old_s_1;  tauto.
 clear  epsilon_m__type_3_pknows_old A1. tauto.
Defined.

Remark rem_2890 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto___type_3 (s X1) -> auto_knows_old (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1. intro H. intros.
  elim (rem_159 X1 H);  intros.
  apply (rem_2889 epsilon_m__type_3_pknows_old X1);  tauto.
Defined.

Remark rem_2891 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> auto_knows_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old.  case (rem_2882 epsilon_m__type_3_pknows_old). clear  epsilon_m__type_3_pknows_old. intros. apply trans_knows_old_server_1;  tauto.
 clear  epsilon_m__type_3_pknows_old. tauto.
Defined.

Remark rem_2892 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> auto___type_3 server -> auto_knows_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intro H. intros.
  elim (rem_162 H);  intros.
  apply (rem_2891 epsilon_m__type_3_pknows_old);  tauto.
Defined.

Remark rem_2893 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old.  case (rem_2882 epsilon_m__type_3_pknows_old). clear  epsilon_m__type_3_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_m__type_3_pknows_old. tauto.
Defined.

Remark rem_2894 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> auto___type_3 nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intro H. intros.
  elim (rem_165 H);  intros.
  apply (rem_2893 epsilon_m__type_3_pknows_old);  tauto.
Defined.

Remark rem_2895 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> auto_knows_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old.  case (rem_2882 epsilon_m__type_3_pknows_old). clear  epsilon_m__type_3_pknows_old. intros. apply trans_knows_old_i_1;  tauto.
 clear  epsilon_m__type_3_pknows_old. tauto.
Defined.

Remark rem_2896 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> auto___type_3 i -> auto_knows_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intro H. intros.
  elim (rem_168 H);  intros.
  apply (rem_2895 epsilon_m__type_3_pknows_old);  tauto.
Defined.

Remark rem_2897 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2898 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_2897 epsilon_m__type_3_pknows_old X1).
Defined.

Remark rem_2899 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2900 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_2899 epsilon_m__type_3_pknows_old X2).
Defined.

Remark rem_2901 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_2898 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_2900 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2902 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2901 epsilon_m__type_3_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_3_pknows_old A1 A2. intros. apply trans_knows_old_key_1;  tauto.
 clear  epsilon_m__type_3_pknows_old A1 A2. tauto.
Defined.

Remark rem_2903 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2904 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_2903 epsilon_m__type_3_pknows_old X1).
Defined.

Remark rem_2905 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2906 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_2905 epsilon_m__type_3_pknows_old X2).
Defined.

Remark rem_2907 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_2904 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_2906 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2908 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2907 epsilon_m__type_3_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_3_pknows_old A1 A2. intros. apply trans_knows_old_key_2;  tauto.
 clear  epsilon_m__type_3_pknows_old A1 A2. tauto.
Defined.

Remark rem_2909 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_3 (key X1 X2) -> auto_knows_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_182 X1 X2 H);  intros.
  apply (rem_2902 epsilon_m__type_3_pknows_old X1 X2);  tauto.
  apply (rem_2908 epsilon_m__type_3_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2910 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2887 epsilon_m__type_3_pknows_old X1).
Defined.

Remark rem_2911 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2912 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_2911 epsilon_m__type_3_pknows_old X2).
Defined.

Remark rem_2913 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X3:term, auto_knows_old X3 -> auto_knows_old X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2914 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_2913 epsilon_m__type_3_pknows_old X3).
Defined.

Remark rem_2915 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_2910 epsilon_m__type_3_pknows_old X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_2912 epsilon_m__type_3_pknows_old X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_2914 epsilon_m__type_3_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_2916 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_2915 epsilon_m__type_3_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_3_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_1;  tauto.
 clear  epsilon_m__type_3_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_2917 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto___type_3 (nonceb_old X1 X2 X3) -> auto_knows_old (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_191 X1 X2 X3 H);  intros.
  apply (rem_2916 epsilon_m__type_3_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_2918 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2919 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_2918 epsilon_m__type_3_pknows_old X1);  assumption.
  tauto.
Defined.

Remark rem_2920 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_knows_old (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1. intros A1.
  case (rem_2919 epsilon_m__type_3_pknows_old X1 A1). clear  epsilon_m__type_3_pknows_old A1. intros. apply trans_knows_old_noncea_old_1;  tauto.
 clear  epsilon_m__type_3_pknows_old A1. tauto.
Defined.

Remark rem_2921 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto___type_3 (noncea_old X1) -> auto_knows_old (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1. intro H. intros.
  elim (rem_196 X1 H);  intros.
  apply (rem_2920 epsilon_m__type_3_pknows_old X1);  tauto.
Defined.

Remark rem_2922 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_16 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2923 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_2922 epsilon_m__type_3_pknows_old X1).
Defined.

Remark rem_2924 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2925 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_2924 epsilon_m__type_3_pknows_old X2).
Defined.

Remark rem_2926 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_2923 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_2925 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2927 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2926 epsilon_m__type_3_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_3_pknows_old A1 A2. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  epsilon_m__type_3_pknows_old A1 A2. tauto.
Defined.

Remark rem_2928 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2929 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_2928 epsilon_m__type_3_pknows_old X1).
Defined.

Remark rem_2930 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2931 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_2930 epsilon_m__type_3_pknows_old X2).
Defined.

Remark rem_2932 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_2929 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_2931 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2933 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2932 epsilon_m__type_3_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_3_pknows_old A1 A2. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  epsilon_m__type_3_pknows_old A1 A2. tauto.
Defined.

Remark rem_2934 : (forall X:term, auto___type_3 X -> auto_knows_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_3_pknows_old. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2887 epsilon_m__type_3_pknows_old X1).
Defined.

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

Remark rem_2936 : (forall X:term, auto___type_3 X -> auto_knows_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_3_pknows_old. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_2935 epsilon_m__type_3_pknows_old X2).
Defined.

Remark rem_2937 : (forall X:term, auto___type_3 X -> auto_knows_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_3_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_2934 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2936 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2938 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2937 epsilon_m__type_3_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_3_pknows_old A1 A2. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  epsilon_m__type_3_pknows_old A1 A2. tauto.
Defined.

Remark rem_2939 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2940 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_2939 epsilon_m__type_3_pknows_old X1).
Defined.

Remark rem_2941 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2942 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_2941 epsilon_m__type_3_pknows_old X2).
Defined.

Remark rem_2943 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_2940 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_2942 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2944 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2943 epsilon_m__type_3_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_3_pknows_old A1 A2. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  epsilon_m__type_3_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_2946 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_2945 epsilon_m__type_3_pknows_old X1).
Defined.

Remark rem_2947 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2948 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_2947 epsilon_m__type_3_pknows_old X2).
Defined.

Remark rem_2949 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_2946 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_2948 epsilon_m__type_3_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2950 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2949 epsilon_m__type_3_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_3_pknows_old A1 A2. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  epsilon_m__type_3_pknows_old A1 A2. tauto.
Defined.

Remark rem_2951 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_3 (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_227 X1 X2 H);  intros.
  apply (rem_2927 epsilon_m__type_3_pknows_old X1 X2);  tauto.
  apply (rem_2933 epsilon_m__type_3_pknows_old X1 X2);  tauto.
  apply (rem_2938 epsilon_m__type_3_pknows_old X1 X2);  tauto.
  apply (rem_2944 epsilon_m__type_3_pknows_old X1 X2);  tauto.
  apply (rem_2950 epsilon_m__type_3_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2952 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2937 epsilon_m__type_3_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_3_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__type_3_pknows_old A1 A2. tauto.
Defined.

Remark rem_2953 : (forall X:term, auto___type_3 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_3 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_3_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_230 X1 X2 H);  intros.
  apply (rem_2952 epsilon_m__type_3_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2954 : forall X1:term, auto___type_3 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__type_3_pknows_old 1.
  intro X. case X.
  exact (rem_2886 epsilon_m__type_3_pknows_old ).
  exact (rem_2884 epsilon_m__type_3_pknows_old ).
  intros X1 X2;  exact (rem_2953 epsilon_m__type_3_pknows_old X1 X2).
  intros X1 X2;  exact (rem_2951 epsilon_m__type_3_pknows_old X1 X2).
  exact (rem_2896 epsilon_m__type_3_pknows_old ).
  intros X1 X2;  exact (rem_2909 epsilon_m__type_3_pknows_old X1 X2).
  exact (rem_2894 epsilon_m__type_3_pknows_old ).
  intros X1. intro H. elim (rem_234 X1 H).
  intros X1;  exact (rem_2921 epsilon_m__type_3_pknows_old X1).
  intros X1 X2 X3. intro H. elim (rem_236 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_2917 epsilon_m__type_3_pknows_old X1 X2 X3).
   intro H. elim (rem_233  H).
   intro H. elim (rem_235  H).
  intros X1;  exact (rem_2890 epsilon_m__type_3_pknows_old X1).
  exact (rem_2892 epsilon_m__type_3_pknows_old ).
  intros X1 X2 X3 X4. intro H. elim (rem_237 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_238 X1 X2 X3 X4 H).
   intro H. elim (rem_232  H).
Qed.

Remark rem_2955 : (forall X:term, auto___def_18 X -> auto_knows_old X)
    -> forall X1:term, auto___type_3 X1 -> auto_knows_old X1. (* Cut history. *)
Proof.  intros epsilon_m__def_18_pknows_old. exact (rem_2954).
Defined.

Remark rem_2956 : (forall X:term, auto___def_18 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_18_pknows_old. intros X1 X2.
  cut (auto___type_3 X1 -> auto_knows_old X1). tauto. exact (rem_2955 epsilon_m__def_18_pknows_old X1).
Defined.

Remark rem_2957 : (forall X:term, auto___def_19 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_19_pknows_old.  tauto.
Defined.

Remark rem_2958 : (forall X:term, auto___def_19 X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_19_pknows_old.  case (rem_2957 epsilon_m__def_19_pknows_old). clear  epsilon_m__def_19_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_m__def_19_pknows_old. tauto.
Defined.

Remark rem_2959 : (forall X:term, auto___def_19 X -> auto_knows_old X)
    -> auto___def_19 nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_19_pknows_old. intro H. intros.
  elim (rem_1335 H);  intros.
  apply (rem_2958 epsilon_m__def_19_pknows_old);  tauto.
Defined.

Remark rem_2960 : forall X2:term, auto___def_19 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_19_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_1340  H).
   intro H. elim (rem_1337  H).
  intros X1 X2. intro H. elim (rem_1351 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1350 X1 X2 H).
   intro H. elim (rem_1343  H).
  intros X1 X2. intro H. elim (rem_1344 X1 X2 H).
  exact (rem_2959 epsilon_m__def_19_pknows_old ).
  intros X1. intro H. elim (rem_1345 X1 H).
  intros X1. intro H. elim (rem_1348 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1349 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1346 X1 X2 X3 H).
   intro H. elim (rem_1339  H).
   intro H. elim (rem_1347  H).
  intros X1. intro H. elim (rem_1341 X1 H).
   intro H. elim (rem_1342  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1352 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1353 X1 X2 X3 X4 H).
   intro H. elim (rem_1338  H).
Qed.

Remark rem_2961 : (forall X:term, auto___def_18 X -> auto_knows_old X)
    -> forall X2:term, auto___def_19 X2 -> auto_knows_old X2. (* Cut history. *)
Proof.  intros epsilon_m__def_18_pknows_old. exact (rem_2960).
Defined.

Remark rem_2962 : (forall X:term, auto___def_18 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_18_pknows_old. intros X1 X2.
  cut (auto___def_19 X2 -> auto_knows_old X2). tauto. exact (rem_2961 epsilon_m__def_18_pknows_old X2).
Defined.

Remark rem_2963 : (forall X:term, auto___def_18 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_18_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_2956 epsilon_m__def_18_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2962 epsilon_m__def_18_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2964 : (forall X:term, auto___def_18 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_18_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2963 epsilon_m__def_18_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_18_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__def_18_pknows_old A1 A2. tauto.
Defined.

Remark rem_2965 : (forall X:term, auto___def_18 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_18 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_18_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_1359 X1 X2 H);  intros.
  apply (rem_2964 epsilon_m__def_18_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2966 : forall X2:term, auto___def_18 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_18_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_1364  H).
   intro H. elim (rem_1361  H).
  intros X1 X2;  exact (rem_2965 epsilon_m__def_18_pknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_1375 X1 X2 H).
   intro H. elim (rem_1368  H).
  intros X1 X2. intro H. elim (rem_1369 X1 X2 H).
   intro H. elim (rem_1367  H).
  intros X1. intro H. elim (rem_1370 X1 H).
  intros X1. intro H. elim (rem_1373 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1374 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1371 X1 X2 X3 H).
   intro H. elim (rem_1363  H).
   intro H. elim (rem_1372  H).
  intros X1. intro H. elim (rem_1365 X1 H).
   intro H. elim (rem_1366  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1376 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1377 X1 X2 X3 X4 H).
   intro H. elim (rem_1362  H).
Qed.

Remark rem_2967 : (forall X:term, auto___def_16 X -> auto_knows_old X)
    -> forall X2:term, auto___def_18 X2 -> auto_knows_old X2. (* Cut history. *)
Proof.  intros epsilon_m__def_16_pknows_old. exact (rem_2966).
Defined.

Remark rem_2968 : (forall X:term, auto___def_16 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_16_pknows_old. intros X1 X2.
  cut (auto___def_18 X2 -> auto_knows_old X2). tauto. exact (rem_2967 epsilon_m__def_16_pknows_old X2).
Defined.

Remark rem_2969 : (forall X:term, auto___def_16 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_16_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_2881 epsilon_m__def_16_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2968 epsilon_m__def_16_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2970 : (forall X:term, auto___def_16 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_16_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2969 epsilon_m__def_16_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_16_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__def_16_pknows_old A1 A2. tauto.
Defined.

Remark rem_2971 : (forall X:term, auto___def_16 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_16_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_1382 X1 X2 H);  intros.
  apply (rem_2970 epsilon_m__def_16_pknows_old X1 X2);  tauto.
Defined.

Remark rem_2972 : forall X2:term, auto___def_16 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_16_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_1387  H).
   intro H. elim (rem_1384  H).
  intros X1 X2;  exact (rem_2971 epsilon_m__def_16_pknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_1398 X1 X2 H).
   intro H. elim (rem_1391  H).
  intros X1 X2. intro H. elim (rem_1392 X1 X2 H).
   intro H. elim (rem_1390  H).
  intros X1. intro H. elim (rem_1393 X1 H).
  intros X1. intro H. elim (rem_1396 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1397 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1394 X1 X2 X3 H).
   intro H. elim (rem_1386  H).
   intro H. elim (rem_1395  H).
  intros X1. intro H. elim (rem_1388 X1 H).
   intro H. elim (rem_1389  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1399 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1400 X1 X2 X3 X4 H).
   intro H. elim (rem_1385  H).
Qed.

Remark rem_2973 : forall X1 X2:term, auto___def_16 X2 -> auto___def_17 (key pub X1) -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_16 X2 -> auto_knows_old X2). tauto. exact (rem_2972 X2).
Qed.

Remark rem_2974 : forall X1 X2:term, auto___def_16 X2 -> auto___def_17 (key pub X1) -> (auto___type_9 X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_9 X1). 2:apply (rem_2806 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2973 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2975 : forall X1 X2:term, auto___def_16 X2 -> auto___def_17 (key pub X1) -> auto___def_1 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2974 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_1_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2976 : auto___def_34 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1173 H);  intros.
Qed.

Remark rem_2977 : forall X1 X2:term, auto___def_34 pub -> auto___def_40 X2 -> auto___def_45 X1 -> auto___def_1 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 pub -> False). tauto.
  exact (rem_2976).
Qed.

Remark rem_2978 : forall X1 X2:term, auto___def_34 pub -> auto___def_45 X1 -> auto___def_40 X2 -> auto___def_1 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_34 pub -> auto___def_40 X2 -> auto___def_45 X1 -> auto___def_1 X1 X2). tauto. exact (rem_2977 X1 X2).
Qed.

Remark rem_2979 : forall X1 X2:term, auto___def_40 X2 -> auto___def_41 (key pub X1) -> auto___def_1 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_284 pub X1 H);  intros.
  apply (rem_2978 X1 X2);  tauto.
Qed.

Remark rem_2980 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old (key pub X1) -> auto___type_9 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_9_1. Qed.

Remark rem_2981 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old (key pub 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_2175 X2).
Qed.

Remark rem_2982 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old (key pub X1) -> (auto___type_9 X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_9 X1). 2:apply (rem_2980 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_2981 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_2983 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old (key pub X1) -> auto___def_1 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2982 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_1_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_2984 : forall X1 X2:term, auto___def_29 X2 -> auto___def_34 pub -> auto___def_37 X1 -> auto___def_1 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 pub -> False). tauto.
  exact (rem_2976).
Qed.

Remark rem_2985 : forall X1 X2:term, auto___def_34 pub -> auto___def_37 X1 -> auto___def_29 X2 -> auto___def_1 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_29 X2 -> auto___def_34 pub -> auto___def_37 X1 -> auto___def_1 X1 X2). tauto. exact (rem_2984 X1 X2).
Qed.

Remark rem_2986 : forall X1 X2:term, auto___def_29 X2 -> auto___def_30 (key pub X1) -> auto___def_1 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_302 pub X1 H);  intros.
  apply (rem_2985 X1 X2);  tauto.
Qed.

Remark rem_2987 : forall X1 X2:term, auto___def_32 (key pub X1) -> auto___type_4 X2 -> auto___type_9 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_9_1. Qed.

Remark rem_2988 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_4_pknows_old.  tauto.
Defined.

Remark rem_2989 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> auto_knows_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old.  case (rem_2988 epsilon_m__type_4_pknows_old). clear  epsilon_m__type_4_pknows_old. intros. apply trans_knows_old_bob_1;  tauto.
 clear  epsilon_m__type_4_pknows_old. tauto.
Defined.

Remark rem_2990 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> auto___type_4 bob -> auto_knows_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_2989 epsilon_m__type_4_pknows_old);  tauto.
Defined.

Remark rem_2991 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> auto_knows_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old.  case (rem_2988 epsilon_m__type_4_pknows_old). clear  epsilon_m__type_4_pknows_old. intros. apply trans_knows_old_alice_1;  tauto.
 clear  epsilon_m__type_4_pknows_old. tauto.
Defined.

Remark rem_2992 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> auto___type_4 alice -> auto_knows_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_2991 epsilon_m__type_4_pknows_old);  tauto.
Defined.

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

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

Remark rem_2995 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1. intros A1.
  case (rem_2994 epsilon_m__type_4_pknows_old X1 A1). clear  epsilon_m__type_4_pknows_old A1. intros. apply trans_knows_old_s_1;  tauto.
 clear  epsilon_m__type_4_pknows_old A1. tauto.
Defined.

Remark rem_2996 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_old (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_2995 epsilon_m__type_4_pknows_old X1);  tauto.
Defined.

Remark rem_2997 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> auto_knows_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old.  case (rem_2988 epsilon_m__type_4_pknows_old). clear  epsilon_m__type_4_pknows_old. intros. apply trans_knows_old_server_1;  tauto.
 clear  epsilon_m__type_4_pknows_old. tauto.
Defined.

Remark rem_2998 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> auto___type_4 server -> auto_knows_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_2997 epsilon_m__type_4_pknows_old);  tauto.
Defined.

Remark rem_2999 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old.  case (rem_2988 epsilon_m__type_4_pknows_old). clear  epsilon_m__type_4_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_m__type_4_pknows_old. tauto.
Defined.

Remark rem_3000 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> auto___type_4 nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_2999 epsilon_m__type_4_pknows_old);  tauto.
Defined.

Remark rem_3001 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> auto_knows_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old.  case (rem_2988 epsilon_m__type_4_pknows_old). clear  epsilon_m__type_4_pknows_old. intros. apply trans_knows_old_i_1;  tauto.
 clear  epsilon_m__type_4_pknows_old. tauto.
Defined.

Remark rem_3002 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> auto___type_4 i -> auto_knows_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_3001 epsilon_m__type_4_pknows_old);  tauto.
Defined.

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

Remark rem_3004 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3003 epsilon_m__type_4_pknows_old X1).
Defined.

Remark rem_3005 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3006 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3005 epsilon_m__type_4_pknows_old X2).
Defined.

Remark rem_3007 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3004 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3006 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3008 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3007 epsilon_m__type_4_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_4_pknows_old A1 A2. intros. apply trans_knows_old_key_1;  tauto.
 clear  epsilon_m__type_4_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_3010 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3009 epsilon_m__type_4_pknows_old X1).
Defined.

Remark rem_3011 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3012 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3011 epsilon_m__type_4_pknows_old X2).
Defined.

Remark rem_3013 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3010 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3012 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3014 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3013 epsilon_m__type_4_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_4_pknows_old A1 A2. intros. apply trans_knows_old_key_2;  tauto.
 clear  epsilon_m__type_4_pknows_old A1 A2. tauto.
Defined.

Remark rem_3015 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_3008 epsilon_m__type_4_pknows_old X1 X2);  tauto.
  apply (rem_3014 epsilon_m__type_4_pknows_old X1 X2);  tauto.
Defined.

Remark rem_3016 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2993 epsilon_m__type_4_pknows_old X1).
Defined.

Remark rem_3017 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3018 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_3017 epsilon_m__type_4_pknows_old X2).
Defined.

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

Remark rem_3020 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_3019 epsilon_m__type_4_pknows_old X3).
Defined.

Remark rem_3021 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_3016 epsilon_m__type_4_pknows_old X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_3018 epsilon_m__type_4_pknows_old X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_3020 epsilon_m__type_4_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3022 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3021 epsilon_m__type_4_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_4_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_1;  tauto.
 clear  epsilon_m__type_4_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3023 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_old (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_3022 epsilon_m__type_4_pknows_old X1 X2 X3);  tauto.
Defined.

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

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

Remark rem_3026 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_knows_old (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1. intros A1.
  case (rem_3025 epsilon_m__type_4_pknows_old X1 A1). clear  epsilon_m__type_4_pknows_old A1. intros. apply trans_knows_old_noncea_old_1;  tauto.
 clear  epsilon_m__type_4_pknows_old A1. tauto.
Defined.

Remark rem_3027 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_old (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_3026 epsilon_m__type_4_pknows_old X1);  tauto.
Defined.

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

Remark rem_3029 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_3028 epsilon_m__type_4_pknows_old X1).
Defined.

Remark rem_3030 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3031 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_3030 epsilon_m__type_4_pknows_old X2).
Defined.

Remark rem_3032 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_3029 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_3031 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3033 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3032 epsilon_m__type_4_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_4_pknows_old A1 A2. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  epsilon_m__type_4_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_3035 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3034 epsilon_m__type_4_pknows_old X1).
Defined.

Remark rem_3036 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3037 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3036 epsilon_m__type_4_pknows_old X2).
Defined.

Remark rem_3038 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3035 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3037 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3039 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3038 epsilon_m__type_4_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_4_pknows_old A1 A2. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  epsilon_m__type_4_pknows_old A1 A2. tauto.
Defined.

Remark rem_3040 : (forall X:term, auto___type_4 X -> auto_knows_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_4_pknows_old. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_2993 epsilon_m__type_4_pknows_old X1).
Defined.

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

Remark rem_3042 : (forall X:term, auto___type_4 X -> auto_knows_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_4_pknows_old. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_3041 epsilon_m__type_4_pknows_old X2).
Defined.

Remark rem_3043 : (forall X:term, auto___type_4 X -> auto_knows_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_4_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_3040 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_3042 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3044 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3043 epsilon_m__type_4_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_4_pknows_old A1 A2. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  epsilon_m__type_4_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_3046 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3045 epsilon_m__type_4_pknows_old X1).
Defined.

Remark rem_3047 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3048 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3047 epsilon_m__type_4_pknows_old X2).
Defined.

Remark rem_3049 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3046 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3048 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3050 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3049 epsilon_m__type_4_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_4_pknows_old A1 A2. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  epsilon_m__type_4_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_3052 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_3051 epsilon_m__type_4_pknows_old X1).
Defined.

Remark rem_3053 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3054 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_3053 epsilon_m__type_4_pknows_old X2).
Defined.

Remark rem_3055 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_3052 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_3054 epsilon_m__type_4_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3056 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3055 epsilon_m__type_4_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_4_pknows_old A1 A2. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  epsilon_m__type_4_pknows_old A1 A2. tauto.
Defined.

Remark rem_3057 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_3033 epsilon_m__type_4_pknows_old X1 X2);  tauto.
  apply (rem_3039 epsilon_m__type_4_pknows_old X1 X2);  tauto.
  apply (rem_3044 epsilon_m__type_4_pknows_old X1 X2);  tauto.
  apply (rem_3050 epsilon_m__type_4_pknows_old X1 X2);  tauto.
  apply (rem_3056 epsilon_m__type_4_pknows_old X1 X2);  tauto.
Defined.

Remark rem_3058 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3043 epsilon_m__type_4_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_4_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__type_4_pknows_old A1 A2. tauto.
Defined.

Remark rem_3059 : (forall X:term, auto___type_4 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_4_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_3058 epsilon_m__type_4_pknows_old X1 X2);  tauto.
Defined.

Remark rem_3060 : forall X2:term, auto___type_4 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__type_4_pknows_old 1.
  intro X. case X.
  exact (rem_2992 epsilon_m__type_4_pknows_old ).
  exact (rem_2990 epsilon_m__type_4_pknows_old ).
  intros X1 X2;  exact (rem_3059 epsilon_m__type_4_pknows_old X1 X2).
  intros X1 X2;  exact (rem_3057 epsilon_m__type_4_pknows_old X1 X2).
  exact (rem_3002 epsilon_m__type_4_pknows_old ).
  intros X1 X2;  exact (rem_3015 epsilon_m__type_4_pknows_old X1 X2).
  exact (rem_3000 epsilon_m__type_4_pknows_old ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_3027 epsilon_m__type_4_pknows_old X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3023 epsilon_m__type_4_pknows_old X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_2996 epsilon_m__type_4_pknows_old X1).
  exact (rem_2998 epsilon_m__type_4_pknows_old ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Qed.

Remark rem_3061 : forall X1 X2:term, auto___def_32 (key pub X1) -> auto___type_4 X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_4 X2 -> auto_knows_old X2). tauto. exact (rem_3060 X2).
Qed.

Remark rem_3062 : forall X1 X2:term, auto___def_32 (key pub X1) -> auto___type_4 X2 -> (auto___type_9 X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_9 X1). 2:apply (rem_2987 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_3061 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3063 : forall X1 X2:term, auto___def_32 (key pub X1) -> auto___type_4 X2 -> auto___def_1 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3062 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_1_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3064 : forall X1 X2:term, auto___type_4 X2 -> auto___def_32 (key pub X1) -> auto___def_1 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_32 (key pub X1) -> auto___type_4 X2 -> auto___def_1 X1 X2). tauto. exact (rem_3063 X1 X2).
Qed.

Remark rem_3065 : 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_313 X2 (key pub X1) H);  intros.
  apply (rem_2975 X1 X2);  tauto.
  apply (rem_2979 X1 X2);  tauto.
  apply (rem_2983 X1 X2);  tauto.
  apply (rem_2986 X1 X2);  tauto.
  apply (rem_3064 X1 X2);  tauto.
Qed.

Remark rem_3066 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_268 X1).
Qed.

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

Remark rem_3068 : forall X1 X2:term, auto___def_16 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_3067 X2).
Qed.

Remark rem_3069 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_3066 X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_3068 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3070 : forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_14 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3069 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_14_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3071 : forall X1 X2:term, auto___def_17 X2 -> auto___def_16 X1 -> auto___def_14 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_17 X2 -> auto___def_14 (crypt X1 X2)). tauto. exact (rem_3070 X1 X2).
Qed.

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

Remark rem_3073 : forall X1 X2:term, auto___def_85 X2 -> auto___type_13 X1 -> auto___type_13 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_13 X1 -> auto___type_13 X1). tauto. exact (rem_3072 X1).
Qed.

Remark rem_3074 : forall X1 X2:term, auto___def_85 X2 -> auto___type_13 X1 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_2789 X2).
Qed.

Remark rem_3075 : forall X1 X2:term, auto___def_85 X2 -> auto___type_13 X1 -> (auto___type_13 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_13 X1). 2:apply (rem_3073 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_3074 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3076 : forall X1 X2:term, auto___def_85 X2 -> auto___type_13 X1 -> auto___def_93 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3075 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_93_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3077 : auto___def_15 nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_15_nil_1;  tauto.
 tauto.
Qed.

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

Remark rem_3079 : forall X1 X2:term, auto___def_34 X1 -> auto___def_35 X2 -> auto___def_34 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_34 X1). tauto. exact (rem_3078 X1).
Qed.

Remark rem_3080 : forall X1 X2:term, auto___def_34 X1 -> auto___def_35 X2 -> auto___def_35 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_35 X2 -> auto___def_35 X2). tauto. exact (rem_306 X2).
Qed.

Remark rem_3081 : forall X1 X2:term, auto___def_34 X1 -> auto___def_35 X2 -> (auto___def_34 X1 /\ auto___def_35 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_34 X1). 2:apply (rem_3079 X1 X2);  assumption.
  cut (auto___def_35 X2). 2:apply (rem_3080 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3082 : forall X1 X2:term, auto___def_34 X1 -> auto___def_35 X2 -> auto___def_32 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3081 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_32_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3083 : forall X1 X2:term, auto___def_35 X2 -> auto___def_34 X1 -> auto___def_32 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_35 X2 -> auto___def_32 (key X1 X2)). tauto. exact (rem_3082 X1 X2).
Qed.

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

Remark rem_3085 : forall X1 X2:term, auto___def_87 X2 -> auto___type_14 X1 -> auto___type_14 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_14 X1 -> auto___type_14 X1). tauto. exact (rem_3084 X1).
Qed.

Remark rem_3086 : forall X1 X2:term, auto___def_87 X2 -> auto___type_14 X1 -> auto___def_87 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_87 X2 -> auto___def_87 X2). tauto. exact (rem_253 X2).
Qed.

Remark rem_3087 : forall X1 X2:term, auto___def_87 X2 -> auto___type_14 X1 -> (auto___type_14 X1 /\ auto___def_87 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_14 X1). 2:apply (rem_3085 X1 X2);  assumption.
  cut (auto___def_87 X2). 2:apply (rem_3086 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3088 : forall X1 X2:term, auto___def_87 X2 -> auto___type_14 X1 -> auto___def_94 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3087 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_94_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3089 : forall X1:term, auto___def_51 sym -> auto___def_52 X1 -> auto___def_61 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_287).
Qed.

Remark rem_3090 : forall X1:term, auto___def_50 sym -> auto___def_61 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_50 sym -> False). tauto.
  exact (rem_290).
Qed.

Remark rem_3091 : forall X1:term, auto___def_50 sym -> auto___type_9 X1 -> auto___def_61 X1. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1. intros. apply (rem_3090 X1);  assumption.
Qed.

Remark rem_3092 : (forall X:term, auto___def_55 X -> auto___def_61 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_55_p__def_61.  tauto.
Defined.

Remark rem_3093 : (forall X:term, auto___def_55 X -> auto___def_61 X)
    -> forall X1 X2 X3 X4:term, auto___def_61 (session_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_55_p__def_61. intros X1 X2 X3 X4.  case (rem_3092 epsilon_m__def_55_p__def_61). clear  epsilon_m__def_55_p__def_61. intros. apply trans___def_61_session_old_1;  tauto.
 clear  epsilon_m__def_55_p__def_61. tauto.
Defined.

Remark rem_3094 : forall X1 X2 X3 X4:term, auto___def_55 (session_old X1 X2 X3 X4) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3095 : (forall X:term, auto___def_55 X -> auto___def_61 X)
    -> forall X1 X2 X3 X4:term, auto___def_55 (session_old X1 X2 X3 X4) -> auto___def_61 (session_old X1 X2 X3 X4). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_55_p__def_61. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_3094 X1 X2 X3 X4 H);  intros.
  apply (rem_3093 epsilon_m__def_55_p__def_61 X1 X2 X3 X4);  tauto.
Defined.

Remark rem_3096 : auto___def_55 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3097 : auto___def_55 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3098 : auto___def_55 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3099 : auto___def_55 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_3101 : auto___def_55 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3102 : auto___def_55 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3103 : auto___def_55 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_3105 : forall X1:term, auto___def_55 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3106 : forall X1 X2 X3:term, auto___def_55 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3107 : auto___def_55 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3108 : forall X1:term, auto___def_55 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3109 : forall X1 X2 X3:term, auto___def_55 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_3111 : forall X1 X2 X3 X4:term, auto___def_55 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3112 : forall X1:term, auto___def_55 X1 -> auto___def_61 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_55_p__def_61 1.
  intro X. case X.
   intro H. elim (rem_3099  H).
   intro H. elim (rem_3096  H).
  intros X1 X2. intro H. elim (rem_728 X1 X2 H).
  intros X1 X2. intro H. elim (rem_3110 X1 X2 H).
   intro H. elim (rem_3103  H).
  intros X1 X2. intro H. elim (rem_3104 X1 X2 H).
   intro H. elim (rem_3102  H).
  intros X1. intro H. elim (rem_3105 X1 H).
  intros X1. intro H. elim (rem_3108 X1 H).
  intros X1 X2 X3. intro H. elim (rem_3109 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_3106 X1 X2 X3 H).
   intro H. elim (rem_3098  H).
   intro H. elim (rem_3107  H).
  intros X1. intro H. elim (rem_3100 X1 H).
   intro H. elim (rem_3101  H).
  intros X1 X2 X3 X4. intro H. elim (rem_3111 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4;  exact (rem_3095 epsilon_m__def_55_p__def_61 X1 X2 X3 X4).
   intro H. elim (rem_3097  H).
Qed.

Remark rem_3113 : forall X1:term, auto___def_54 sym -> auto___def_55 X1 -> auto___def_61 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1.
  cut (auto___def_55 X1 -> auto___def_61 X1). tauto. exact (rem_3112 X1).
Qed.

Remark rem_3114 : forall X1:term, auto_knows_current (key sym X1) -> auto___def_61 X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_47 sym X1 H);  intros.
  apply (rem_3089 X1);  tauto.
  apply (rem_3091 X1);  tauto.
  apply (rem_3113 X1);  tauto.
Qed.

Remark rem_3115 : forall X1 X2:term, auto___def_38 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_134 X1).
Qed.

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

Remark rem_3117 : forall X1 X2:term, auto___def_38 X2 -> auto___type_5 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_3116 X2).
Qed.

Remark rem_3118 : forall X1 X2:term, auto___def_38 X2 -> auto___type_5 X1 -> (auto___type_5 X1 /\ auto___def_38 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_5 X1). 2:apply (rem_3115 X1 X2);  assumption.
  cut (auto___def_38 X2). 2:apply (rem_3117 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3119 : forall X1 X2:term, auto___def_38 X2 -> auto___type_5 X1 -> auto___def_45 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3118 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_45_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3120 : forall X1 X2:term, auto___def_36 X2 -> 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_304 X1).
Qed.

Remark rem_3121 : forall X1 X2:term, auto___def_36 X2 -> auto___type_4 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_2623 X2).
Qed.

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

Remark rem_3123 : forall X1 X2:term, auto___def_36 X2 -> auto___type_4 X1 -> auto___def_44 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3122 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_44_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_3125 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> auto___type_12 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12.  case (rem_3124 epsilon_mknows_current_p__type_12). clear  epsilon_mknows_current_p__type_12. intros. apply trans___type_12_bob_1;  tauto.
 clear  epsilon_mknows_current_p__type_12. tauto.
Defined.

Remark rem_3126 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> auto_knows_current bob -> auto___type_12 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intro H. intros.
  elim (rem_10 H);  intros.
  apply (rem_3125 epsilon_mknows_current_p__type_12);  tauto.
Defined.

Remark rem_3127 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> auto___type_12 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12.  case (rem_3124 epsilon_mknows_current_p__type_12). clear  epsilon_mknows_current_p__type_12. intros. apply trans___type_12_alice_1;  tauto.
 clear  epsilon_mknows_current_p__type_12. tauto.
Defined.

Remark rem_3128 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> auto_knows_current alice -> auto___type_12 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intro H. intros.
  elim (rem_13 H);  intros.
  apply (rem_3127 epsilon_mknows_current_p__type_12);  tauto.
Defined.

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

Remark rem_3130 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3129 epsilon_mknows_current_p__type_12 X1);  assumption.
  tauto.
Defined.

Remark rem_3131 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_12 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1. intros A1.
  case (rem_3130 epsilon_mknows_current_p__type_12 X1 A1). clear  epsilon_mknows_current_p__type_12 A1. intros. apply trans___type_12_s_1;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1. tauto.
Defined.

Remark rem_3132 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1:term, auto_knows_current (s X1) -> auto___type_12 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1. intro H. intros.
  elim (rem_18 X1 H);  intros.
  apply (rem_3131 epsilon_mknows_current_p__type_12 X1);  tauto.
Defined.

Remark rem_3133 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> auto___type_12 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12.  case (rem_3124 epsilon_mknows_current_p__type_12). clear  epsilon_mknows_current_p__type_12. intros. apply trans___type_12_server_1;  tauto.
 clear  epsilon_mknows_current_p__type_12. tauto.
Defined.

Remark rem_3134 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> auto_knows_current server -> auto___type_12 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intro H. intros.
  elim (rem_21 H);  intros.
  apply (rem_3133 epsilon_mknows_current_p__type_12);  tauto.
Defined.

Remark rem_3135 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> auto___type_12 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12.  case (rem_3124 epsilon_mknows_current_p__type_12). clear  epsilon_mknows_current_p__type_12. intros. apply trans___type_12_nil_1;  tauto.
 clear  epsilon_mknows_current_p__type_12. tauto.
Defined.

Remark rem_3136 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> auto_knows_current nil -> auto___type_12 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intro H. intros.
  elim (rem_24 H);  intros.
  apply (rem_3135 epsilon_mknows_current_p__type_12);  tauto.
Defined.

Remark rem_3137 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> auto___type_12 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12.  case (rem_3124 epsilon_mknows_current_p__type_12). clear  epsilon_mknows_current_p__type_12. intros. apply trans___type_12_i_1;  tauto.
 clear  epsilon_mknows_current_p__type_12. tauto.
Defined.

Remark rem_3138 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> auto_knows_current i -> auto___type_12 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intro H. intros.
  elim (rem_27 H);  intros.
  apply (rem_3137 epsilon_mknows_current_p__type_12);  tauto.
Defined.

Remark rem_3139 : (forall X:term, auto_knows_current 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_3140 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3139 epsilon_mknows_current_p__type_12 X1).
Defined.

Remark rem_3141 : (forall X:term, auto_knows_current 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_3142 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3141 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3143 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3140 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3142 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3144 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3143 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_key_1;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

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

Remark rem_3146 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3145 epsilon_mknows_current_p__type_12 X1).
Defined.

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

Remark rem_3148 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3147 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3149 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3146 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3148 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3150 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3149 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_key_2;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

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

Remark rem_3152 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_3151 epsilon_mknows_current_p__type_12 X1).
Defined.

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

Remark rem_3154 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_3153 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3155 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_3152 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_3154 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3156 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3155 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_key_3;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

Remark rem_3157 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___type_12 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_47 X1 X2 H);  intros.
  apply (rem_3144 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
  apply (rem_3150 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
  apply (rem_3156 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
Defined.

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

Remark rem_3159 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_3158 epsilon_mknows_current_p__type_12 X1);  assumption.
  tauto.
Defined.

Remark rem_3160 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1:term, auto_agent X1 -> auto___type_12 (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1. intros A1.
  case (rem_3159 epsilon_mknows_current_p__type_12 X1 A1). clear  epsilon_mknows_current_p__type_12 A1. intros. apply trans___type_12_noncea_current_1;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1. tauto.
Defined.

Remark rem_3161 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1:term, auto_knows_current (noncea_current X1) -> auto___type_12 (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1. intro H. intros.
  elim (rem_52 X1 H);  intros.
  apply (rem_3160 epsilon_mknows_current_p__type_12 X1);  tauto.
Defined.

Remark rem_3162 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2 X3:term, auto___type_12 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2 X3.  case (rem_3124 epsilon_mknows_current_p__type_12). clear  epsilon_mknows_current_p__type_12. intros. apply trans___type_12_nonceb_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_12. tauto.
Defined.

Remark rem_3163 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3) -> auto___type_12 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2 X3. intro H. intros.
  elim (rem_55 X1 X2 X3 H);  intros.
  apply (rem_3162 epsilon_mknows_current_p__type_12 X1 X2 X3);  tauto.
Defined.

Remark rem_3164 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1:term, auto___type_12 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1.  case (rem_3124 epsilon_mknows_current_p__type_12). clear  epsilon_mknows_current_p__type_12. intros. apply trans___type_12_noncea_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_12. tauto.
Defined.

Remark rem_3165 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1:term, auto_knows_current (noncea_old X1) -> auto___type_12 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1. intro H. intros.
  elim (rem_58 X1 H);  intros.
  apply (rem_3164 epsilon_mknows_current_p__type_12 X1);  tauto.
Defined.

Remark rem_3166 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_3129 epsilon_mknows_current_p__type_12 X1).
Defined.

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

Remark rem_3168 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_3167 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3169 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3170 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_3169 epsilon_mknows_current_p__type_12 X3).
Defined.

Remark rem_3171 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_3166 epsilon_mknows_current_p__type_12 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_3168 epsilon_mknows_current_p__type_12 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_3170 epsilon_mknows_current_p__type_12 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3172 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_12 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3171 epsilon_mknows_current_p__type_12 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_current_p__type_12 A1 A2 A3. intros. apply trans___type_12_nonceb_current_1;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2 A3. tauto.
Defined.

Remark rem_3173 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto___type_12 (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2 X3. intro H. intros.
  elim (rem_67 X1 X2 X3 H);  intros.
  apply (rem_3172 epsilon_mknows_current_p__type_12 X1 X2 X3);  tauto.
Defined.

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

Remark rem_3175 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_3174 epsilon_mknows_current_p__type_12 X1).
Defined.

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

Remark rem_3177 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_3176 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3178 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_3175 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_3177 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3179 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3178 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_crypt_1;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

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

Remark rem_3181 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3180 epsilon_mknows_current_p__type_12 X1).
Defined.

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

Remark rem_3183 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3182 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3184 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3181 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3183 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3185 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3184 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_crypt_2;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

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

Remark rem_3187 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3186 epsilon_mknows_current_p__type_12 X1).
Defined.

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

Remark rem_3189 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3188 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3190 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3187 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3189 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3191 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3190 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_crypt_3;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

Remark rem_3192 : (forall X:term, auto_knows_current X -> auto___type_12 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_12. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_3129 epsilon_mknows_current_p__type_12 X1).
Defined.

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

Remark rem_3194 : (forall X:term, auto_knows_current X -> auto___type_12 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_12. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_3193 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3195 : (forall X:term, auto_knows_current X -> auto___type_12 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_12. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3192 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3194 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3196 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3195 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

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

Remark rem_3198 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_3197 epsilon_mknows_current_p__type_12 X1).
Defined.

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

Remark rem_3200 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_3199 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3201 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3198 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3200 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3202 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3201 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_crypt_5;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

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

Remark rem_3204 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_3203 epsilon_mknows_current_p__type_12 X1).
Defined.

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

Remark rem_3206 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_3205 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3207 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_3204 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_3206 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3208 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3207 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_crypt_6;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

Remark rem_3209 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_3129 epsilon_mknows_current_p__type_12 X1).
Defined.

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

Remark rem_3211 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_3210 epsilon_mknows_current_p__type_12 X2).
Defined.

Remark rem_3212 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3209 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_3211 epsilon_mknows_current_p__type_12 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3213 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3212 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_crypt_7;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

Remark rem_3214 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___type_12 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_109 X1 X2 H);  intros.
  apply (rem_3179 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
  apply (rem_3185 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
  apply (rem_3191 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
  apply (rem_3196 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
  apply (rem_3202 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
  apply (rem_3208 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
  apply (rem_3213 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_3215 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_12 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intros A1 A2.
  case (rem_3195 epsilon_mknows_current_p__type_12 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_12 A1 A2. intros. apply trans___type_12_cons_1;  tauto.
 clear  epsilon_mknows_current_p__type_12 A1 A2. tauto.
Defined.

Remark rem_3216 : (forall X:term, auto_knows_current X -> auto___type_12 X)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___type_12 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_12. intros X1 X2. intro H. intros.
  elim (rem_112 X1 X2 H);  intros.
  apply (rem_3215 epsilon_mknows_current_p__type_12 X1 X2);  tauto.
Defined.

Remark rem_3217 : forall X1:term, auto_knows_current X1 -> auto___type_12 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_current_p__type_12 1.
  intro X. case X.
  exact (rem_3128 epsilon_mknows_current_p__type_12 ).
  exact (rem_3126 epsilon_mknows_current_p__type_12 ).
  intros X1 X2;  exact (rem_3216 epsilon_mknows_current_p__type_12 X1 X2).
  intros X1 X2;  exact (rem_3214 epsilon_mknows_current_p__type_12 X1 X2).
  exact (rem_3138 epsilon_mknows_current_p__type_12 ).
  intros X1 X2;  exact (rem_3157 epsilon_mknows_current_p__type_12 X1 X2).
  exact (rem_3136 epsilon_mknows_current_p__type_12 ).
  intros X1;  exact (rem_3161 epsilon_mknows_current_p__type_12 X1).
  intros X1;  exact (rem_3165 epsilon_mknows_current_p__type_12 X1).
  intros X1 X2 X3;  exact (rem_3173 epsilon_mknows_current_p__type_12 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_3163 epsilon_mknows_current_p__type_12 X1 X2 X3).
   intro H. elim (rem_115  H).
   intro H. elim (rem_116  H).
  intros X1;  exact (rem_3132 epsilon_mknows_current_p__type_12 X1).
  exact (rem_3134 epsilon_mknows_current_p__type_12 ).
  intros X1 X2 X3 X4. intro H. elim (rem_117 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_118 X1 X2 X3 X4 H).
   intro H. elim (rem_114  H).
Qed.

Remark rem_3218 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current X1 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current X1 -> auto___type_12 X1). tauto. exact (rem_3217 X1).
Qed.

Remark rem_3219 : forall X1 X2:term, auto___def_64 X2 X1 -> auto___type_12 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_417 X2 X1 H);  intros.
  apply (rem_3218 X1 X2);  tauto.
Qed.

Remark rem_3220 : forall X1:term, auto_agent X1 -> auto___def_8 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_2191 X1 A1). clear  A1. intros. apply trans___def_8_noncea_old_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_3221 : auto___def_98 nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_98_nil_1;  tauto.
 tauto.
Qed.

Remark rem_3222 : forall X1 X2:term, auto___def_31 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_134 X1).
Qed.

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

Remark rem_3224 : forall X1 X2:term, auto___def_31 X2 -> auto___type_5 X1 -> auto___def_31 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_31 X2 -> auto___def_31 X2). tauto. exact (rem_3223 X2).
Qed.

Remark rem_3225 : forall X1 X2:term, auto___def_31 X2 -> auto___type_5 X1 -> (auto___type_5 X1 /\ auto___def_31 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_5 X1). 2:apply (rem_3222 X1 X2);  assumption.
  cut (auto___def_31 X2). 2:apply (rem_3224 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_3226 : forall X1 X2:term, auto___def_31 X2 -> auto___type_5 X1 -> auto___def_29 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_3225 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_29_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_3227 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17.  tauto.
Defined.

Remark rem_3228 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> auto___type_17 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17.  case (rem_3227 epsilon_mknows_current_p__type_17). clear  epsilon_mknows_current_p__type_17. intros. apply trans___type_17_bob_1;  tauto.
 clear  epsilon_mknows_current_p__type_17. tauto.
Defined.

Remark rem_3229 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> auto_knows_current bob -> auto___type_17 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intro H. intros.
  elim (rem_10 H);  intros.
  apply (rem_3228 epsilon_mknows_current_p__type_17);  tauto.
Defined.

Remark rem_3230 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> auto___type_17 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17.  case (rem_3227 epsilon_mknows_current_p__type_17). clear  epsilon_mknows_current_p__type_17. intros. apply trans___type_17_alice_1;  tauto.
 clear  epsilon_mknows_current_p__type_17. tauto.
Defined.

Remark rem_3231 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> auto_knows_current alice -> auto___type_17 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intro H. intros.
  elim (rem_13 H);  intros.
  apply (rem_3230 epsilon_mknows_current_p__type_17);  tauto.
Defined.

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

Remark rem_3233 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3232 epsilon_mknows_current_p__type_17 X1);  assumption.
  tauto.
Defined.

Remark rem_3234 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto_knows_current X1 -> auto___type_17 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1. intros A1.
  case (rem_3233 epsilon_mknows_current_p__type_17 X1 A1). clear  epsilon_mknows_current_p__type_17 A1. intros. apply trans___type_17_s_1;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1. tauto.
Defined.

Remark rem_3235 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto_knows_current (s X1) -> auto___type_17 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1. intro H. intros.
  elim (rem_18 X1 H);  intros.
  apply (rem_3234 epsilon_mknows_current_p__type_17 X1);  tauto.
Defined.

Remark rem_3236 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> auto___type_17 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17.  case (rem_3227 epsilon_mknows_current_p__type_17). clear  epsilon_mknows_current_p__type_17. intros. apply trans___type_17_server_1;  tauto.
 clear  epsilon_mknows_current_p__type_17. tauto.
Defined.

Remark rem_3237 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> auto_knows_current server -> auto___type_17 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intro H. intros.
  elim (rem_21 H);  intros.
  apply (rem_3236 epsilon_mknows_current_p__type_17);  tauto.
Defined.

Remark rem_3238 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> auto___type_17 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17.  case (rem_3227 epsilon_mknows_current_p__type_17). clear  epsilon_mknows_current_p__type_17. intros. apply trans___type_17_nil_1;  tauto.
 clear  epsilon_mknows_current_p__type_17. tauto.
Defined.

Remark rem_3239 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> auto_knows_current nil -> auto___type_17 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intro H. intros.
  elim (rem_24 H);  intros.
  apply (rem_3238 epsilon_mknows_current_p__type_17);  tauto.
Defined.

Remark rem_3240 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> auto___type_17 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17.  case (rem_3227 epsilon_mknows_current_p__type_17). clear  epsilon_mknows_current_p__type_17. intros. apply trans___type_17_i_1;  tauto.
 clear  epsilon_mknows_current_p__type_17. tauto.
Defined.

Remark rem_3241 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> auto_knows_current i -> auto___type_17 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intro H. intros.
  elim (rem_27 H);  intros.
  apply (rem_3240 epsilon_mknows_current_p__type_17);  tauto.
Defined.

Remark rem_3242 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto___def_51 X1 -> auto___def_51 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3243 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3242 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3245 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3244 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3246 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3243 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3245 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3247 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_17 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3246 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_key_1;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3248 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3249 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3248 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3251 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3250 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3252 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3249 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3251 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3253 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_17 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3252 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_key_2;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3254 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto___def_54 X1 -> auto___def_54 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3255 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_3254 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3257 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_3256 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3258 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_3255 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_3257 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3259 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___type_17 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3258 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_key_3;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3260 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___type_17 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intro H. intros.
  elim (rem_47 X1 X2 H);  intros.
  apply (rem_3247 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
  apply (rem_3253 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
  apply (rem_3259 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
Defined.

Remark rem_3261 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3262 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_3261 epsilon_mknows_current_p__type_17 X1);  assumption.
  tauto.
Defined.

Remark rem_3263 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto_agent X1 -> auto___type_17 (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1. intros A1.
  case (rem_3262 epsilon_mknows_current_p__type_17 X1 A1). clear  epsilon_mknows_current_p__type_17 A1. intros. apply trans___type_17_noncea_current_1;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1. tauto.
Defined.

Remark rem_3264 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto_knows_current (noncea_current X1) -> auto___type_17 (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1. intro H. intros.
  elim (rem_52 X1 H);  intros.
  apply (rem_3263 epsilon_mknows_current_p__type_17 X1);  tauto.
Defined.

Remark rem_3265 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2 X3:term, auto___type_17 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2 X3.  case (rem_3227 epsilon_mknows_current_p__type_17). clear  epsilon_mknows_current_p__type_17. intros. apply trans___type_17_nonceb_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_17. tauto.
Defined.

Remark rem_3266 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3) -> auto___type_17 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2 X3. intro H. intros.
  elim (rem_55 X1 X2 X3 H);  intros.
  apply (rem_3265 epsilon_mknows_current_p__type_17 X1 X2 X3);  tauto.
Defined.

Remark rem_3267 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto___type_17 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1.  case (rem_3227 epsilon_mknows_current_p__type_17). clear  epsilon_mknows_current_p__type_17. intros. apply trans___type_17_noncea_old_1;  tauto.
 clear  epsilon_mknows_current_p__type_17. tauto.
Defined.

Remark rem_3268 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto_knows_current (noncea_old X1) -> auto___type_17 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1. intro H. intros.
  elim (rem_58 X1 H);  intros.
  apply (rem_3267 epsilon_mknows_current_p__type_17 X1);  tauto.
Defined.

Remark rem_3269 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_3232 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3271 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_3270 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3272 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3273 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_3272 epsilon_mknows_current_p__type_17 X3).
Defined.

Remark rem_3274 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_3269 epsilon_mknows_current_p__type_17 X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_3271 epsilon_mknows_current_p__type_17 X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_3273 epsilon_mknows_current_p__type_17 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3275 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto___type_17 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3274 epsilon_mknows_current_p__type_17 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_current_p__type_17 A1 A2 A3. intros. apply trans___type_17_nonceb_current_1;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2 A3. tauto.
Defined.

Remark rem_3276 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto___type_17 (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2 X3. intro H. intros.
  elim (rem_67 X1 X2 X3 H);  intros.
  apply (rem_3275 epsilon_mknows_current_p__type_17 X1 X2 X3);  tauto.
Defined.

Remark rem_3277 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto___def_78 X1 -> auto___def_78 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3278 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_3277 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3280 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_3279 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3281 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_3278 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_3280 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3282 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___type_17 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3281 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_crypt_1;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3283 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3284 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3283 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3286 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3285 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3287 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3284 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3286 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3288 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_17 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3287 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_crypt_2;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3289 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3290 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3289 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3292 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3291 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3293 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3290 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3292 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3294 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_17 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3293 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_crypt_3;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3295 : (forall X:term, auto_knows_current X -> auto___type_17 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_17. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_3232 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3297 : (forall X:term, auto_knows_current X -> auto___type_17 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_17. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_3296 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3298 : (forall X:term, auto_knows_current X -> auto___type_17 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_17. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3295 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3297 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3299 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_17 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3298 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_crypt_4;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3300 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto___def_70 X1 -> auto___def_70 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3301 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_3300 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3303 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_3302 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3304 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3301 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3303 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3305 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___type_17 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3304 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_crypt_5;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3306 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1:term, auto___def_89 X1 -> auto___def_89 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_3307 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_3306 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3309 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_3308 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3310 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_3307 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_3309 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3311 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___type_17 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3310 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_crypt_6;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3312 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_3232 epsilon_mknows_current_p__type_17 X1).
Defined.

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

Remark rem_3314 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_3313 epsilon_mknows_current_p__type_17 X2).
Defined.

Remark rem_3315 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3312 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_3314 epsilon_mknows_current_p__type_17 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3316 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___type_17 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3315 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_crypt_7;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3317 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___type_17 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intro H. intros.
  elim (rem_109 X1 X2 H);  intros.
  apply (rem_3282 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
  apply (rem_3288 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
  apply (rem_3294 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
  apply (rem_3299 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
  apply (rem_3305 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
  apply (rem_3311 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
  apply (rem_3316 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
Defined.

Remark rem_3318 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto___type_17 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intros A1 A2.
  case (rem_3298 epsilon_mknows_current_p__type_17 X1 X2 A1 A2). clear  epsilon_mknows_current_p__type_17 A1 A2. intros. apply trans___type_17_cons_1;  tauto.
 clear  epsilon_mknows_current_p__type_17 A1 A2. tauto.
Defined.

Remark rem_3319 : (forall X:term, auto_knows_current X -> auto___type_17 X)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___type_17 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_p__type_17. intros X1 X2. intro H. intros.
  elim (rem_112 X1 X2 H);  intros.
  apply (rem_3318 epsilon_mknows_current_p__type_17 X1 X2);  tauto.
Defined.

Remark rem_3320 : forall X1:term, auto_knows_current X1 -> auto___type_17 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_current_p__type_17 1.
  intro X. case X.
  exact (rem_3231 epsilon_mknows_current_p__type_17 ).
  exact (rem_3229 epsilon_mknows_current_p__type_17 ).
  intros X1 X2;  exact (rem_3319 epsilon_mknows_current_p__type_17 X1 X2).
  intros X1 X2;  exact (rem_3317 epsilon_mknows_current_p__type_17 X1 X2).
  exact (rem_3241 epsilon_mknows_current_p__type_17 ).
  intros X1 X2;  exact (rem_3260 epsilon_mknows_current_p__type_17 X1 X2).
  exact (rem_3239 epsilon_mknows_current_p__type_17 ).
  intros X1;  exact (rem_3264 epsilon_mknows_current_p__type_17 X1).
  intros X1;  exact (rem_3268 epsilon_mknows_current_p__type_17 X1).
  intros X1 X2 X3;  exact (rem_3276 epsilon_mknows_current_p__type_17 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_3266 epsilon_mknows_current_p__type_17 X1 X2 X3).
   intro H. elim (rem_115  H).
   intro H. elim (rem_116  H).
  intros X1;  exact (rem_3235 epsilon_mknows_current_p__type_17 X1).
  exact (rem_3237 epsilon_mknows_current_p__type_17 ).
  intros X1 X2 X3 X4. intro H. elim (rem_117 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_118 X1 X2 X3 X4 H).
   intro H. elim (rem_114  H).
Qed.

Remark rem_3321 : forall X1 X2 X3 X4 X5:term, auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X4 -> auto_agent X4 -> auto_knows_current X5 -> auto_knows_current X1 -> auto___type_17 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X1 -> auto___type_17 X1). tauto. exact (rem_3320 X1).
Qed.

Remark rem_3322 : forall X1 X2 X3 X4 X5:term, auto_agent X2 -> auto___type_16 X2 -> auto_knows_current X1 -> auto___type_14 X3 -> auto_knows_current X4 -> auto___def_81 X5 -> auto___type_17 X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X4 X3 X5 X2.
  cut (auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X4 -> auto_agent X4 -> auto_knows_current X5 -> auto_knows_current X1 -> auto___type_17 X1). tauto. exact (rem_3321 X1 X2 X3 X4 X5).
Qed.

Remark rem_3323 : forall X1 X2 X3 X4 X5:term, auto___def_95 X1 X2 X3 X4 X5 -> or_1
    (auto_agent X1 /\ auto___type_16 X1 /\ auto_knows_current X2 /\ auto___type_14 X3 /\ auto_knows_current X4 /\ auto___def_81 X5)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_3324 : forall X1 X2 X3 X4 X5:term, auto___def_95 X2 X1 X3 X4 X5 -> auto___type_17 X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_3323 X2 X1 X3 X4 X5 H);  intros.
  apply (rem_3322 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_3325 : auto___def_83 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_3326 : auto___def_83 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_3325 H);  intros.
Qed.

Remark rem_3327 : forall X1 X2:term, auto___def_78 X2 -> auto___def_83 pub -> auto___def_86 X1 -> auto___def_56 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_83 pub -> False). tauto.
  exact (rem_3326).
Qed.

Remark rem_3328 : forall X1 X2:term, auto___def_83 pub -> auto___def_86 X1 -> auto___def_78 X2 -> auto___def_56 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_78 X2 -> auto___def_83 pub -> auto___def_86 X1 -> auto___def_56 X1 X2). tauto. exact (rem_3327 X1 X2).
Qed.

Remark rem_3329 : forall X1 X2:term, auto___def_78 X2 -> auto___def_79 (key pub X1) -> auto___def_56 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_438 pub X1 H);  intros.
  apply (rem_3328 X1 X2);  tauto.
Qed.

Remark rem_3330 : forall X1 X2:term, auto___def_40 X2 -> auto___def_41 (key pub X1) -> auto___type_9 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_9_1. Qed.

Remark rem_3331 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current.  tauto.
Defined.

Remark rem_3332 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current.  case (rem_3331 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. tauto.
Defined.

Remark rem_3333 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> auto___type_7 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intro H. intros.
  elim (rem_961 H);  intros.
  apply (rem_3332 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current);  tauto.
Defined.

Remark rem_3334 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current.  case (rem_3331 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. tauto.
Defined.

Remark rem_3335 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> auto___type_7 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intro H. intros.
  elim (rem_964 H);  intros.
  apply (rem_3334 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current);  tauto.
Defined.

Remark rem_3336 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current.  tauto.
Defined.

Remark rem_3337 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current.  case (rem_3336 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_3338 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_783 H);  intros.
  apply (rem_3337 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_3339 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current.  case (rem_3336 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_3340 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_786 H);  intros.
  apply (rem_3339 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_3341 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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 H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3342 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3341 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_3343 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1. intros A1.
  case (rem_3342 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1. tauto.
Defined.

Remark rem_3344 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1. intro H. intros.
  elim (rem_791 X1 H);  intros.
  apply (rem_3343 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1);  tauto.
Defined.

Remark rem_3345 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current.  case (rem_3336 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_3346 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_794 H);  intros.
  apply (rem_3345 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_3347 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current.  case (rem_3336 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_3348 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_797 H);  intros.
  apply (rem_3347 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_3349 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current.  case (rem_3336 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. tauto.
Defined.

Remark rem_3350 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intro H. intros.
  elim (rem_800 H);  intros.
  apply (rem_3349 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current);  tauto.
Defined.

Remark rem_3351 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3352 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3351 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_3353 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3354 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3353 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_3355 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3352 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3354 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3356 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3355 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_3357 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3358 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3357 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_3359 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3360 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3359 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_3361 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3358 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3360 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3362 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3361 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_3363 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_293 X1 X2 H);  intros.
  apply (rem_3356 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_3362 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3364 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_3365 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3364 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_3366 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_822 X1 X2 X3 H);  intros.
  apply (rem_3365 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_3367 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_3368 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1. intros A1.
  case (rem_3367 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1. tauto.
Defined.

Remark rem_3369 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1. intro H. intros.
  elim (rem_827 X1 H);  intros.
  apply (rem_3368 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1);  tauto.
Defined.

Remark rem_3370 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. exact (rem_1401 epsilon_mknows_old_pknows_current).
Defined.

Remark rem_3371 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_3370 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_3372 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. exact (rem_1069).
Defined.

Remark rem_3373 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_3372 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_3374 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3371 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3373 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3375 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3374 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_3376 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3377 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3376 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_3378 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3379 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3378 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_3380 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3377 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3379 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3381 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3380 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_3382 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3341 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_3383 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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 H. clear H. intro H. clear H. intro Hrec. intros X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_3384 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_3383 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_3385 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3382 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3384 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3386 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3385 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_3387 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3388 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3387 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_3389 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3390 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3389 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_3391 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3388 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3390 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3392 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3391 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_3393 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  tauto.
Defined.

Remark rem_3394 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  case (rem_3393 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_3395 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_3394 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_3396 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  case (rem_3393 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_3397 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_3396 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_3398 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3399 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3398 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_3400 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_3399 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_3401 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_3400 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_3402 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  case (rem_3393 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_3403 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_3402 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_3404 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  case (rem_3393 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_3405 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_3404 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_3406 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current.  case (rem_3393 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_3407 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_3406 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_3408 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_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. intro H. clear H. tauto. Defined.

Remark rem_3409 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3408 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3410 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3411 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3410 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3412 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3409 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3411 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3413 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3412 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3414 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3415 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3414 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3416 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3417 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3416 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3418 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3415 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3417 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3419 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3418 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3420 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_3413 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_3419 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3421 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_3422 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3421 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_3423 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_3422 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_3424 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_3425 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_3424 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_3426 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_3425 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_3427 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. exact (rem_1401 epsilon_mknows_old_pknows_current).
Defined.

Remark rem_3428 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_3427 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3429 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. exact (rem_3372 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current).
Defined.

Remark rem_3430 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_3429 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3431 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3428 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3430 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3432 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3431 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3433 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3434 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3433 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3435 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3436 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3435 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3437 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3434 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3436 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3438 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3437 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3439 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3398 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3440 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intros X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_3441 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_3440 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3442 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3439 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3441 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3443 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3442 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3444 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3445 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3444 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3446 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3447 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3446 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3448 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3445 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3447 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3449 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3448 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3450 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3451 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_3450 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3452 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. exact (rem_1226).
Defined.

Remark rem_3453 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_3452 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3454 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3451 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3453 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3455 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3454 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3456 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_3432 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_3438 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_3443 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_3449 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_3455 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3457 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3442 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3458 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_3457 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3459 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_3397 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current ).
  exact (rem_3395 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_3458 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  intros X1 X2;  exact (rem_3456 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_3407 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_3420 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_3405 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_3426 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3423 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_3401 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current X1).
  exact (rem_3403 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_3460 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_3459 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
Defined.

Remark rem_3461 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. exact (rem_1226).
Defined.

Remark rem_3462 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_3461 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X2).
Defined.

Remark rem_3463 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3460 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3462 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3464 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3463 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_3465 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_313 X1 X2 H);  intros.
  apply (rem_3375 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_3381 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_3386 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_3392 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  tauto.
  apply (rem_3464 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3466 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3385 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current A1 A2. tauto.
Defined.

Remark rem_3467 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_860 X1 X2 H);  intros.
  apply (rem_3466 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3468 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. fix epsilon_mknows_old_pknows_current 1.
  intro X. case X.
  exact (rem_3340 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current ).
  exact (rem_3338 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_3467 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_3465 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_3350 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_3363 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_3348 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_3369 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3366 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_3344 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
  exact (rem_3346 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Defined.

Remark rem_3469 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3468 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_3470 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1. intros A1.
  case (rem_3469 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1. tauto.
Defined.

Remark rem_3471 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto___type_7 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1. intro H. intros.
  elim (rem_1503 X1 H);  intros.
  apply (rem_3470 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1);  tauto.
Defined.

Remark rem_3472 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current.  case (rem_3331 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. tauto.
Defined.

Remark rem_3473 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> auto___type_7 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intro H. intros.
  elim (rem_1506 H);  intros.
  apply (rem_3472 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current);  tauto.
Defined.

Remark rem_3474 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current.  case (rem_3331 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. tauto.
Defined.

Remark rem_3475 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> auto___type_7 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intro H. intros.
  elim (rem_1509 H);  intros.
  apply (rem_3474 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current);  tauto.
Defined.

Remark rem_3476 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current.  case (rem_3331 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. tauto.
Defined.

Remark rem_3477 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> auto___type_7 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intro H. intros.
  elim (rem_1512 H);  intros.
  apply (rem_3476 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current);  tauto.
Defined.

Remark rem_3478 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_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_3479 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3478 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1).
Defined.

Remark rem_3480 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3481 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3480 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X2).
Defined.

Remark rem_3482 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3479 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3481 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3483 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3482 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. tauto.
Defined.

Remark rem_3484 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3485 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3484 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1).
Defined.

Remark rem_3486 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3487 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3486 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X2).
Defined.

Remark rem_3488 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3485 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3487 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3489 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3488 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. tauto.
Defined.

Remark rem_3490 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1526 X1 X2 H);  intros.
  apply (rem_3483 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  tauto.
  apply (rem_3489 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3491 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_3492 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3491 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_3493 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_7 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1530 X1 X2 X3 H);  intros.
  apply (rem_3492 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_3494 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_3495 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1. intros A1.
  case (rem_3494 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1. tauto.
Defined.

Remark rem_3496 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto___type_7 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1. intro H. intros.
  elim (rem_1534 X1 H);  intros.
  apply (rem_3495 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1);  tauto.
Defined.

Remark rem_3497 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  tauto.
Defined.

Remark rem_3498 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3497 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_bob_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3499 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 bob -> auto___type_11 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1002 H);  intros.
  apply (rem_3498 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3500 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3497 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_alice_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3501 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 alice -> auto___type_11 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1005 H);  intros.
  apply (rem_3500 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3502 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_3468 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current).
Defined.

Remark rem_3503 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3502 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_3504 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_11 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_3503 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans___type_11_s_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_3505 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_2 (s X1) -> auto___type_11 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1010 X1 H);  intros.
  apply (rem_3504 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_3506 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3497 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_server_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3507 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 server -> auto___type_11 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1013 H);  intros.
  apply (rem_3506 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3508 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3497 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_nil_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3509 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 nil -> auto___type_11 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1016 H);  intros.
  apply (rem_3508 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3510 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3497 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_i_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3511 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 i -> auto___type_11 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1019 H);  intros.
  apply (rem_3510 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3512 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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. intro H. clear H. tauto. Defined.

Remark rem_3513 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3512 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3514 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3515 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3514 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3516 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3513 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3515 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3517 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3516 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_key_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3518 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3519 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3518 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3520 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3521 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3520 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3522 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3519 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3521 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3523 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3522 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_key_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3524 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (key X1 X2) -> auto___type_11 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1033 X1 X2 H);  intros.
  apply (rem_3517 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_3523 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_3525 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_3526 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_11 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3525 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. intros. apply trans___type_11_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. tauto.
Defined.

Remark rem_3527 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_2 (nonceb_old X1 X2 X3) -> auto___type_11 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_1037 X1 X2 X3 H);  intros.
  apply (rem_3526 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_3528 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  tauto.
Defined.

Remark rem_3529 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto___type_11 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_3528 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans___type_11_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_3530 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_2 (noncea_old X1) -> auto___type_11 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1041 X1 H);  intros.
  apply (rem_3529 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_3531 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3532 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_3531 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3533 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1069).
Defined.

Remark rem_3534 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_3533 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3535 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3532 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3534 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3536 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3535 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_5;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3537 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3538 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3537 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3539 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3540 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3539 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3541 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3538 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3540 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3542 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3541 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3543 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3502 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3544 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. fix epsilon_mknows_old_pknows_current 1.
  intro X. case X.
  exact (rem_3340 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current ).
  exact (rem_3338 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_3467 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2).
  intros X1 X2;  exact (rem_3465 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_3350 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current ).
  intros X1 X2;  exact (rem_3363 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2).
  exact (rem_3348 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_3369 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3366 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_3344 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current X1).
  exact (rem_3346 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Defined.

Remark rem_3545 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_3544 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current).
Defined.

Remark rem_3546 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_3545 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3547 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3543 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3546 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3548 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3547 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3549 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3550 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3549 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3551 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3552 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3551 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3553 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3550 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3552 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3554 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3553 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_3;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3555 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  tauto.
Defined.

Remark rem_3556 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3555 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3557 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_3556 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3558 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3555 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3559 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_3558 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3560 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_3468 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current).
Defined.

Remark rem_3561 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3560 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_3562 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_3561 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_3563 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_3562 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_3564 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3555 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3565 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_3564 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3566 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3555 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3567 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_3566 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3568 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3555 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3569 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_3568 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3570 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3571 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3570 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3572 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3573 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3572 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3574 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3571 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3573 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3575 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3574 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3576 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3577 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3576 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3578 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3579 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3578 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3580 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3577 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3579 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3581 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3580 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3582 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_3575 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_3581 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_3583 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_3584 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3583 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. tauto.
Defined.

Remark rem_3585 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_3584 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_3586 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  tauto.
Defined.

Remark rem_3587 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_3586 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_3588 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_3587 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_3589 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3590 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_3589 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3591 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_3533 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11).
Defined.

Remark rem_3592 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_3591 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3593 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3590 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3592 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3594 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3593 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3595 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3596 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3595 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3597 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3598 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3597 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3599 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3596 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3598 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3600 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3599 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3601 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3560 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3602 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_3544 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current).
Defined.

Remark rem_3603 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_3602 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3604 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3601 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3603 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3605 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3604 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3606 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3607 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3606 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3608 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3609 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3608 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3610 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3607 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3609 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3611 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3610 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3612 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3613 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_3612 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3614 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1226).
Defined.

Remark rem_3615 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_3614 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3616 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3613 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3615 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3617 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3616 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3618 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_3594 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_3600 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_3605 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_3611 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_3617 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_3619 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3604 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3620 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_3619 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_3621 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_3559 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  exact (rem_3557 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_3620 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_3618 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_3569 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_3582 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_3567 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_3588 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3585 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_3563 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  exact (rem_3565 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_3622 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_3621 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3623 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1226).
Defined.

Remark rem_3624 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_3623 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_3625 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3622 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3624 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3626 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3625 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3627 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (crypt X1 X2) -> auto___type_11 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1250 X1 X2 H);  intros.
  apply (rem_3536 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_3542 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_3548 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_3554 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_3626 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_3628 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_3547 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_cons_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_3629 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (cons X1 X2) -> auto___type_11 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1253 X1 X2 H);  intros.
  apply (rem_3628 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_3630 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_2 X1 -> auto___type_11 X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__type_2_p__type_11 1.
  intro X. case X.
  exact (rem_3501 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  exact (rem_3499 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_3629 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_3627 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_3511 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_3524 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_3509 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1. intro H. elim (rem_1257 X1 H).
  intros X1;  exact (rem_3530 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  intros X1 X2 X3. intro H. elim (rem_1259 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3527 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3).
   intro H. elim (rem_1256  H).
   intro H. elim (rem_1258  H).
  intros X1;  exact (rem_3505 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  exact (rem_3507 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1260 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1261 X1 X2 X3 X4 H).
   intro H. elim (rem_1255  H).
Defined.

Remark rem_3631 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_2 X1 -> auto___type_11 X1). tauto. exact (rem_3630 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3632 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  tauto.
Defined.

Remark rem_3633 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_3632 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_bob_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_3634 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 bob -> auto___type_12 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_151 H);  intros.
  apply (rem_3633 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_3635 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_3632 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_alice_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_3636 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 alice -> auto___type_12 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_154 H);  intros.
  apply (rem_3635 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_3637 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_3468 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current).
Defined.

Remark rem_3638 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3637 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  assumption.
  tauto.
Defined.

Remark rem_3639 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_12 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_3638 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans___type_12_s_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_3640 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 (s X1) -> auto___type_12 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_159 X1 H);  intros.
  apply (rem_3639 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_3641 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_3632 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_server_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_3642 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 server -> auto___type_12 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_162 H);  intros.
  apply (rem_3641 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_3643 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_3632 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_nil_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_3644 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 nil -> auto___type_12 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_165 H);  intros.
  apply (rem_3643 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_3645 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_3632 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_i_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_3646 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 i -> auto___type_12 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_168 H);  intros.
  apply (rem_3645 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_3647 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3648 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3647 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3649 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3650 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3649 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3651 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3648 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3650 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3652 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3651 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_key_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3653 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3654 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3653 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3655 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3656 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3655 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3657 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3654 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3656 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3658 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3657 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_key_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3659 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (key X1 X2) -> auto___type_12 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_182 X1 X2 H);  intros.
  apply (rem_3652 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_3658 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_3660 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_3661 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_12 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3660 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. intros. apply trans___type_12_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. tauto.
Defined.

Remark rem_3662 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto___type_3 (nonceb_old X1 X2 X3) -> auto___type_12 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intro H. intros.
  elim (rem_191 X1 X2 X3 H);  intros.
  apply (rem_3661 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3);  tauto.
Defined.

Remark rem_3663 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  tauto.
Defined.

Remark rem_3664 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> auto___type_12 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_3663 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans___type_12_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_3665 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 (noncea_old X1) -> auto___type_12 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_196 X1 H);  intros.
  apply (rem_3664 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_3666 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3667 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_3666 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3668 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1069).
Defined.

Remark rem_3669 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_3668 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3670 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3667 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3669 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3671 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3670 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_5;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3672 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3673 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3672 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3674 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3675 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3674 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3676 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3673 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3675 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3677 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3676 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3678 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3637 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3679 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_3544 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current).
Defined.

Remark rem_3680 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_3679 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3681 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3678 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3680 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3682 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3681 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3683 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3684 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3683 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3685 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3686 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3685 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3687 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3684 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3686 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3688 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3687 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_3;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3689 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  tauto.
Defined.

Remark rem_3690 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_3689 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_3691 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_3690 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_3692 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_3689 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_3693 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_3692 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_3694 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_3637 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70).
Defined.

Remark rem_3695 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3694 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  assumption.
  tauto.
Defined.

Remark rem_3696 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_3695 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_3697 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_3696 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_3698 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_3689 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_3699 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_3698 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_3700 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_3689 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_3701 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_3700 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_3702 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_3689 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_3703 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_3702 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_3704 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3705 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3704 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3706 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3707 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3706 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3708 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3705 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3707 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3709 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3708 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3710 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3711 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3710 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3712 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3713 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3712 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3714 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3711 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3713 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3715 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3714 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3716 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_3709 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_3715 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_3717 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_3718 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3717 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. tauto.
Defined.

Remark rem_3719 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_3718 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3);  tauto.
Defined.

Remark rem_3720 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  tauto.
Defined.

Remark rem_3721 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_3720 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_3722 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_3721 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_3723 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3724 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_3723 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3725 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_3668 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70).
Defined.

Remark rem_3726 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_3725 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3727 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3724 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3726 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3728 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3727 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3729 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3730 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3729 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3731 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3732 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3731 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3733 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3730 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3732 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3734 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3733 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3735 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3694 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3736 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_3679 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70).
Defined.

Remark rem_3737 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_3736 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3738 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3735 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3737 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3739 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3738 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3740 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3741 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3740 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3742 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3743 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3742 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3744 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3741 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3743 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3745 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3744 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3746 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intro H. clear H. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3747 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_3746 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3748 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1226).
Defined.

Remark rem_3749 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_3748 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3750 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3747 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3749 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3751 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3750 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3752 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_3728 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_3734 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_3739 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_3745 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_3751 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_3753 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3738 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3754 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_3753 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_3755 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_3693 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  exact (rem_3691 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_3754 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2;  exact (rem_3752 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_3703 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_3716 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_3701 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_3722 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3719 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_3697 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  exact (rem_3699 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_3756 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_3755 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3757 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1226).
Defined.

Remark rem_3758 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_3757 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3759 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3756 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3758 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3760 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3759 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3761 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (crypt X1 X2) -> auto___type_12 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_227 X1 X2 H);  intros.
  apply (rem_3671 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_3677 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_3682 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_3688 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_3760 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_3762 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_12 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3681 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_cons_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3763 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (cons X1 X2) -> auto___type_12 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_230 X1 X2 H);  intros.
  apply (rem_3762 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_3764 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 X1 -> auto___type_12 X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. fix epsilon_m__type_3_p__type_12 1.
  intro X. case X.
  exact (rem_3636 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  exact (rem_3634 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_3763 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2;  exact (rem_3761 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_3646 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_3659 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_3644 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1. intro H. elim (rem_234 X1 H).
  intros X1;  exact (rem_3665 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  intros X1 X2 X3. intro H. elim (rem_236 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3662 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3).
   intro H. elim (rem_233  H).
   intro H. elim (rem_235  H).
  intros X1;  exact (rem_3640 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  exact (rem_3642 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2 X3 X4. intro H. elim (rem_237 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_238 X1 X2 X3 X4 H).
   intro H. elim (rem_232  H).
Defined.

Remark rem_3765 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_3 X1 -> auto___type_12 X1). tauto. exact (rem_3764 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_3766 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_19 X2 -> auto___def_73 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. exact (rem_1354).
Defined.

Remark rem_3767 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_73 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_19 X2 -> auto___def_73 X2). tauto. exact (rem_3766 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3768 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> (auto___type_12 X1 /\ auto___def_73 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_3765 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_73 X2). 2:apply (rem_3767 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3769 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_72 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3768 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___def_72_cons_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3770 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_18 (cons X1 X2) -> auto___def_72 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1359 X1 X2 H);  intros.
  apply (rem_3769 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_3771 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_18 X2 -> auto___def_72 X2. (* Induct. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__def_18_p__def_72 1.
  intro X. case X.
   intro H. elim (rem_1364  H).
   intro H. elim (rem_1361  H).
  intros X1 X2;  exact (rem_3770 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2. intro H. elim (rem_1375 X1 X2 H).
   intro H. elim (rem_1368  H).
  intros X1 X2. intro H. elim (rem_1369 X1 X2 H).
   intro H. elim (rem_1367  H).
  intros X1. intro H. elim (rem_1370 X1 H).
  intros X1. intro H. elim (rem_1373 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1374 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1371 X1 X2 X3 H).
   intro H. elim (rem_1363  H).
   intro H. elim (rem_1372  H).
  intros X1. intro H. elim (rem_1365 X1 H).
   intro H. elim (rem_1366  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1376 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1377 X1 X2 X3 X4 H).
   intro H. elim (rem_1362  H).
Defined.

Remark rem_3772 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_18 X2 -> auto___def_72 X2). tauto. exact (rem_3771 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_3773 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> (auto___type_11 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_3631 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_3772 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3774 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_70 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_3773 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___def_70_cons_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_3775 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 (cons X1 X2) -> auto___def_70 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1382 X1 X2 H);  intros.
  apply (rem_3774 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_3776 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. fix epsilon_m__def_16_p__def_70 1.
  intro X. case X.
   intro H. elim (rem_1387  H).
   intro H. elim (rem_1384  H).
  intros X1 X2;  exact (rem_3775 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2. intro H. elim (rem_1398 X1 X2 H).
   intro H. elim (rem_1391  H).
  intros X1 X2. intro H. elim (rem_1392 X1 X2 H).
   intro H. elim (rem_1390  H).
  intros X1. intro H. elim (rem_1393 X1 H).
  intros X1. intro H. elim (rem_1396 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1397 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1394 X1 X2 X3 H).
   intro H. elim (rem_1386  H).
   intro H. elim (rem_1395  H).
  intros X1. intro H. elim (rem_1388 X1 H).
   intro H. elim (rem_1389  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1399 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1400 X1 X2 X3 X4 H).
   intro H. elim (rem_1385  H).
Defined.

Remark rem_3777 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_3776 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1).
Defined.

Remark rem_3778 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. exact (rem_1069).
Defined.

Remark rem_3779 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_3778 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X2).
Defined.

Remark rem_3780 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3777 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3779 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3781 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3780 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. tauto.
Defined.

Remark rem_3782 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3783 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3782 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1).
Defined.

Remark rem_3784 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3785 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3784 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X2).
Defined.

Remark rem_3786 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3783 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3785 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3787 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3786 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. tauto.
Defined.

Remark rem_3788 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3468 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1).
Defined.

Remark rem_3789 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_3544 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X2).
Defined.

Remark rem_3790 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3788 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3789 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3791 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3790 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. tauto.
Defined.

Remark rem_3792 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3793 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3792 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1).
Defined.

Remark rem_3794 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3795 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3794 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X2).
Defined.

Remark rem_3796 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3793 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3795 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3797 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3796 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. tauto.
Defined.

Remark rem_3798 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current.  tauto.
Defined.

Remark rem_3799 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current.  case (rem_3798 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_3800 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_3799 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_3801 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current.  case (rem_3798 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_3802 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_3801 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_3803 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. exact (rem_3468 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current).
Defined.

Remark rem_3804 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3803 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_3805 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_3804 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_3806 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_3805 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_3807 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current.  case (rem_3798 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_3808 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_3807 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_3809 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current.  case (rem_3798 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_3810 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_3809 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_3811 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current.  case (rem_3798 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_3812 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_3811 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_3813 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_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_3814 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3813 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3815 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3816 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3815 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3817 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3814 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3816 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3818 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3817 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3819 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3820 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3819 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3821 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3822 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3821 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3823 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3820 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3822 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3824 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3823 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3825 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_3818 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_3824 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3826 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_3827 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3826 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_3828 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_3827 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_3829 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_3830 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_3829 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_3831 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_3830 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_3832 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. exact (rem_3776 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current).
Defined.

Remark rem_3833 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_3832 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3834 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. exact (rem_3778 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current).
Defined.

Remark rem_3835 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_3834 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3836 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3833 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3835 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3837 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3836 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3838 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3839 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3838 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3840 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3841 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3840 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3842 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3839 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3841 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3843 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3842 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3844 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3803 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3845 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. exact (rem_3544 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current).
Defined.

Remark rem_3846 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_3845 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3847 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3844 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3846 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3848 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3847 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3849 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3850 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3849 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3851 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3852 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3851 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3853 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3850 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3852 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3854 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3853 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3855 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3856 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_3855 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_3857 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. exact (rem_1226).
Defined.

Remark rem_3858 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_3857 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_3859 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3856 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3858 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3860 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3859 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3861 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_3837 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_3843 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_3848 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_3854 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_3860 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3862 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3847 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_3863 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_3862 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3864 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_3802 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current ).
  exact (rem_3800 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_3863 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  intros X1 X2;  exact (rem_3861 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_3812 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_3825 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_3810 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_3831 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3828 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_3806 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current X1).
  exact (rem_3808 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_3865 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_3864 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1).
Defined.

Remark rem_3866 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. exact (rem_1226).
Defined.

Remark rem_3867 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_3866 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X2).
Defined.

Remark rem_3868 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3865 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3867 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3869 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3868 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. tauto.
Defined.

Remark rem_3870 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1846 X1 X2 H);  intros.
  apply (rem_3781 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  tauto.
  apply (rem_3787 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  tauto.
  apply (rem_3791 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  tauto.
  apply (rem_3797 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  tauto.
  apply (rem_3869 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3871 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 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_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3790 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current A1 A2. tauto.
Defined.

Remark rem_3872 : (forall X:term, auto___type_7 X -> auto_knows_current X)
    -> (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1849 X1 X2 H);  intros.
  apply (rem_3871 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3873 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1:term, auto___type_7 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current. fix epsilon_m__type_7_pknows_current 1.
  intro X. case X.
  exact (rem_3335 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current ).
  exact (rem_3333 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current ).
  intros X1 X2;  exact (rem_3872 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2).
  intros X1 X2;  exact (rem_3870 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2).
  exact (rem_3477 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current ).
  intros X1 X2;  exact (rem_3490 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2).
  exact (rem_3475 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current ).
  intros X1. intro H. elim (rem_1853 X1 H).
  intros X1;  exact (rem_3496 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_1855 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3493 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1 X2 X3).
   intro H. elim (rem_1852  H).
   intro H. elim (rem_1854  H).
  intros X1;  exact (rem_3471 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current X1).
  exact (rem_3473 epsilon_m__type_7_pknows_current epsilon_m__def_40_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_1856 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1857 X1 X2 X3 X4 H).
   intro H. elim (rem_1851  H).
Defined.

Remark rem_3874 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_42 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___type_7 X1 -> auto_knows_current X1). tauto. exact (rem_3873 epsilon_m__def_40_pknows_current X1).
Defined.

Remark rem_3875 : forall X1:term, auto___type_5 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_5_pknows_current 1.
  intro X. case X.
  exact (rem_1893 epsilon_m__type_5_pknows_current ).
  exact (rem_1891 epsilon_m__type_5_pknows_current ).
  intros X1 X2. intro H. elim (rem_1884 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1883 X1 X2 H).
  exact (rem_1897 epsilon_m__type_5_pknows_current ).
  intros X1 X2. intro H. elim (rem_1877 X1 X2 H).
   intro H. elim (rem_1876  H).
  intros X1. intro H. elim (rem_1878 X1 H).
  intros X1. intro H. elim (rem_1881 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1882 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1879 X1 X2 X3 H).
   intro H. elim (rem_1874  H).
   intro H. elim (rem_1880  H).
  intros X1. intro H. elim (rem_1875 X1 H).
  exact (rem_1895 epsilon_m__type_5_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_1885 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1886 X1 X2 X3 X4 H).
   intro H. elim (rem_1873  H).
Qed.

Remark rem_3876 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___type_5 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current. exact (rem_3875).
Defined.

Remark rem_3877 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_43 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___type_5 X1 -> auto_knows_current X1). tauto. exact (rem_3876 epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3878 : forall X1:term, auto___def_32 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_32_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_1213  H).
   intro H. elim (rem_1210  H).
  intros X1 X2. intro H. elim (rem_1223 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1222 X1 X2 H).
   intro H. elim (rem_1217  H).
  intros X1 X2;  exact (rem_1209 epsilon_m__def_32_pknows_current X1 X2).
   intro H. elim (rem_1216  H).
  intros X1. intro H. elim (rem_691 X1 H).
  intros X1. intro H. elim (rem_1220 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1221 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1218 X1 X2 X3 H).
   intro H. elim (rem_1212  H).
   intro H. elim (rem_1219  H).
  intros X1. intro H. elim (rem_1214 X1 H).
   intro H. elim (rem_1215  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1224 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1225 X1 X2 X3 X4 H).
   intro H. elim (rem_1211  H).
Qed.

Remark rem_3879 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___def_32 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. exact (rem_3878).
Defined.

Remark rem_3880 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_32 X1 -> auto___def_44 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_32 X1 -> auto_knows_current X1). tauto. exact (rem_3879 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3881 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  tauto.
Defined.

Remark rem_3882 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  case (rem_3881 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. tauto.
Defined.

Remark rem_3883 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_3882 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current);  tauto.
Defined.

Remark rem_3884 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  case (rem_3881 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. tauto.
Defined.

Remark rem_3885 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_3884 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current);  tauto.
Defined.

Remark rem_3886 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  tauto.
Defined.

Remark rem_3887 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  case (rem_3886 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. tauto.
Defined.

Remark rem_3888 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_old bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intro H. intros.
  elim (rem_783 H);  intros.
  apply (rem_3887 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current);  tauto.
Defined.

Remark rem_3889 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  case (rem_3886 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. tauto.
Defined.

Remark rem_3890 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_old alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intro H. intros.
  elim (rem_786 H);  intros.
  apply (rem_3889 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current);  tauto.
Defined.

Remark rem_3891 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intro H. clear H. intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3892 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3891 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_3893 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intros A1.
  case (rem_3892 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 A1). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1. tauto.
Defined.

Remark rem_3894 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intro H. intros.
  elim (rem_791 X1 H);  intros.
  apply (rem_3893 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1);  tauto.
Defined.

Remark rem_3895 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  case (rem_3886 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. tauto.
Defined.

Remark rem_3896 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_old server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intro H. intros.
  elim (rem_794 H);  intros.
  apply (rem_3895 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current);  tauto.
Defined.

Remark rem_3897 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  case (rem_3886 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. tauto.
Defined.

Remark rem_3898 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_old nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intro H. intros.
  elim (rem_797 H);  intros.
  apply (rem_3897 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current);  tauto.
Defined.

Remark rem_3899 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  case (rem_3886 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. tauto.
Defined.

Remark rem_3900 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_old i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intro H. intros.
  elim (rem_800 H);  intros.
  apply (rem_3899 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current);  tauto.
Defined.

Remark rem_3901 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_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. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3902 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3901 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3903 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3904 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3903 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_3905 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3902 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3904 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3906 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3905 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_3907 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3908 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3907 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3909 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3910 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3909 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_3911 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3908 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3910 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3912 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3911 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_3913 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_293 X1 X2 H);  intros.
  apply (rem_3906 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
  apply (rem_3912 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3914 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_3915 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3914 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_3916 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_822 X1 X2 X3 H);  intros.
  apply (rem_3915 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_3917 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_3918 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intros A1.
  case (rem_3917 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 A1). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1. tauto.
Defined.

Remark rem_3919 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intro H. intros.
  elim (rem_827 X1 H);  intros.
  apply (rem_3918 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1);  tauto.
Defined.

Remark rem_3920 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. exact (rem_1401 epsilon_mknows_old_pknows_current).
Defined.

Remark rem_3921 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_3920 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3922 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. exact (rem_1069).
Defined.

Remark rem_3923 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_3922 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_3924 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_3921 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_3923 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3925 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3924 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_3926 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3927 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_3926 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3928 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3929 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_3928 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_3930 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_3927 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_3929 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3931 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3930 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_3932 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3891 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3933 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intro H. clear H. intros X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_3934 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_3933 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_3935 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3932 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3934 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3936 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3935 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_3937 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3938 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_3937 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3939 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3940 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_3939 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_3941 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_3938 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_3940 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3942 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3941 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_3943 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_3944 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_3943 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3945 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. exact (rem_1226).
Defined.

Remark rem_3946 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. exact (rem_3945 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current).
Defined.

Remark rem_3947 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_3946 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_3948 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3944 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_3947 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3949 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3948 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_3950 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_313 X1 X2 H);  intros.
  apply (rem_3925 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
  apply (rem_3931 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
  apply (rem_3936 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
  apply (rem_3942 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
  apply (rem_3949 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3951 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3935 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_3952 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_860 X1 X2 H);  intros.
  apply (rem_3951 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3953 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. fix epsilon_mknows_old_pknows_current 1.
  intro X. case X.
  exact (rem_3890 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  exact (rem_3888 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1 X2;  exact (rem_3952 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  intros X1 X2;  exact (rem_3950 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  exact (rem_3900 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1 X2;  exact (rem_3913 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  exact (rem_3898 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_3919 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3916 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_3894 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
  exact (rem_3896 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Defined.

Remark rem_3954 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3953 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_3955 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intros A1.
  case (rem_3954 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 A1). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1. tauto.
Defined.

Remark rem_3956 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_3955 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1);  tauto.
Defined.

Remark rem_3957 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  case (rem_3881 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. tauto.
Defined.

Remark rem_3958 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_3957 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current);  tauto.
Defined.

Remark rem_3959 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  case (rem_3881 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. tauto.
Defined.

Remark rem_3960 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_3959 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current);  tauto.
Defined.

Remark rem_3961 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current.  case (rem_3881 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. tauto.
Defined.

Remark rem_3962 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_3961 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current);  tauto.
Defined.

Remark rem_3963 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_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. intro H. clear H. tauto. Defined.

Remark rem_3964 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3963 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3965 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3966 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3965 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_3967 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3964 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_3966 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3968 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3967 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_3969 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3970 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_3969 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_3971 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3972 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_3971 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_3973 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_3970 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_3972 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3974 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_3973 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_3975 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_3968 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
  apply (rem_3974 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
Defined.

Remark rem_3976 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_3977 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3976 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_3978 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_3977 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_3979 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_3980 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intros A1.
  case (rem_3979 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 A1). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1. tauto.
Defined.

Remark rem_3981 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_3980 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1);  tauto.
Defined.

Remark rem_3982 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  tauto.
Defined.

Remark rem_3983 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3982 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_bob_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3984 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 bob -> auto___type_11 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1002 H);  intros.
  apply (rem_3983 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3985 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3982 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_alice_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3986 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 alice -> auto___type_11 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1005 H);  intros.
  apply (rem_3985 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3987 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_3953 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current).
Defined.

Remark rem_3988 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_3987 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_3989 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_11 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_3988 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans___type_11_s_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_3990 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_2 (s X1) -> auto___type_11 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1010 X1 H);  intros.
  apply (rem_3989 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_3991 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3982 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_server_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3992 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 server -> auto___type_11 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1013 H);  intros.
  apply (rem_3991 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3993 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3982 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_nil_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3994 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 nil -> auto___type_11 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1016 H);  intros.
  apply (rem_3993 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3995 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_3982 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_i_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_3996 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 i -> auto___type_11 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1019 H);  intros.
  apply (rem_3995 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_3997 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_3998 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_3997 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_3999 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4000 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_3999 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4001 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_3998 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4000 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4002 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4001 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_key_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4003 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4004 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4003 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4005 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4006 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4005 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4007 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4004 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4006 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4008 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4007 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_key_2;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4009 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (key X1 X2) -> auto___type_11 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1033 X1 X2 H);  intros.
  apply (rem_4002 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4008 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_4010 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_4011 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_11 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4010 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3 A1 A2 A3). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. intros. apply trans___type_11_nonceb_old_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. tauto.
Defined.

Remark rem_4012 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_2 (nonceb_old X1 X2 X3) -> auto___type_11 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_1037 X1 X2 X3 H);  intros.
  apply (rem_4011 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_4013 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  tauto.
Defined.

Remark rem_4014 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto___type_11 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_4013 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans___type_11_noncea_old_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_4015 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_2 (noncea_old X1) -> auto___type_11 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1041 X1 H);  intros.
  apply (rem_4014 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_4016 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4017 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4016 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4018 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1069).
Defined.

Remark rem_4019 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4018 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4020 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4017 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4019 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4021 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4020 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_5;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4022 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4023 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4022 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4024 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4025 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4024 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4026 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4023 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4025 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4027 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4026 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_2;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4028 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3987 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4029 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. fix epsilon_mknows_old_pknows_current 1.
  intro X. case X.
  exact (rem_3890 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  exact (rem_3888 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1 X2;  exact (rem_3952 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  intros X1 X2;  exact (rem_3950 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  exact (rem_3900 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1 X2;  exact (rem_3913 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  exact (rem_3898 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_3919 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3916 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_3894 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
  exact (rem_3896 epsilon_m__def_40_pknows_current epsilon_mknows_old_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Defined.

Remark rem_4030 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_4029 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current).
Defined.

Remark rem_4031 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4030 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4032 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4028 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4031 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4033 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 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_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4032 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4034 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4035 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4034 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4036 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4037 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4036 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4038 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4035 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4037 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4039 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4038 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_3;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4040 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4041 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4040 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4042 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_3945 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current).
Defined.

Remark rem_4043 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4042 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4044 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4041 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4043 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4045 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4044 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4046 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (crypt X1 X2) -> auto___type_11 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1250 X1 X2 H);  intros.
  apply (rem_4021 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4027 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4033 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4039 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4045 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_4047 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4032 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_cons_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4048 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (cons X1 X2) -> auto___type_11 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1253 X1 X2 H);  intros.
  apply (rem_4047 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_4049 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_2 X1 -> auto___type_11 X1. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__type_2_p__type_11 1.
  intro X. case X.
  exact (rem_3986 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  exact (rem_3984 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_4048 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_4046 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_3996 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_4009 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_3994 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1. intro H. elim (rem_1257 X1 H).
  intros X1;  exact (rem_4015 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  intros X1 X2 X3. intro H. elim (rem_1259 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4012 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3).
   intro H. elim (rem_1256  H).
   intro H. elim (rem_1258  H).
  intros X1;  exact (rem_3990 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  exact (rem_3992 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1260 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1261 X1 X2 X3 X4 H).
   intro H. elim (rem_1255  H).
Defined.

Remark rem_4050 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_2 X1 -> auto___type_11 X1). tauto. exact (rem_4049 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4051 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70.  tauto.
Defined.

Remark rem_4052 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70.  case (rem_4051 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans___type_12_bob_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4053 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 bob -> auto___type_12 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_151 H);  intros.
  apply (rem_4052 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4054 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70.  case (rem_4051 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans___type_12_alice_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4055 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 alice -> auto___type_12 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_154 H);  intros.
  apply (rem_4054 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4056 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. exact (rem_3953 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current).
Defined.

Remark rem_4057 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_4056 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1);  assumption.
  tauto.
Defined.

Remark rem_4058 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_12 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_4057 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1. intros. apply trans___type_12_s_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_4059 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 (s X1) -> auto___type_12 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_159 X1 H);  intros.
  apply (rem_4058 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_4060 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70.  case (rem_4051 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans___type_12_server_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4061 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 server -> auto___type_12 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_162 H);  intros.
  apply (rem_4060 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4062 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70.  case (rem_4051 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans___type_12_nil_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4063 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 nil -> auto___type_12 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_165 H);  intros.
  apply (rem_4062 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4064 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70.  case (rem_4051 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros. apply trans___type_12_i_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4065 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 i -> auto___type_12 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_168 H);  intros.
  apply (rem_4064 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4066 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4067 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4066 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4068 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4069 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4068 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4070 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4067 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4069 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4071 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4070 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_key_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4072 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4073 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4072 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4074 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4075 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4074 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4076 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4073 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4075 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4077 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4076 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_key_2;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4078 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (key X1 X2) -> auto___type_12 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_182 X1 X2 H);  intros.
  apply (rem_4071 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4077 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4079 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_4080 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_12 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4079 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 X3 A1 A2 A3). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2 A3. intros. apply trans___type_12_nonceb_old_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2 A3. tauto.
Defined.

Remark rem_4081 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto___type_3 (nonceb_old X1 X2 X3) -> auto___type_12 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2 X3. intro H. intros.
  elim (rem_191 X1 X2 X3 H);  intros.
  apply (rem_4080 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 X3);  tauto.
Defined.

Remark rem_4082 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  tauto.
Defined.

Remark rem_4083 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> auto___type_12 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_4082 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1. intros. apply trans___type_12_noncea_old_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_4084 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 (noncea_old X1) -> auto___type_12 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_196 X1 H);  intros.
  apply (rem_4083 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_4085 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4086 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4085 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4087 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. exact (rem_1069).
Defined.

Remark rem_4088 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4087 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4089 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4086 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4088 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4090 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4089 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_5;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4091 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4092 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4091 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4093 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4094 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4093 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4095 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4092 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4094 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4096 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4095 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_2;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4097 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_4056 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4098 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. exact (rem_4029 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current).
Defined.

Remark rem_4099 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4098 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4100 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4097 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4099 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4101 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4100 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4102 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4103 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4102 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4104 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4105 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4104 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4106 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4103 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4105 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4107 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4106 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_3;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4108 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4109 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4108 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4110 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. exact (rem_3945 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current).
Defined.

Remark rem_4111 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4110 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4112 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4109 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4111 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4113 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4112 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4114 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (crypt X1 X2) -> auto___type_12 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_227 X1 X2 H);  intros.
  apply (rem_4090 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4096 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4101 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4107 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4113 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4115 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_12 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4100 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_cons_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4116 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (cons X1 X2) -> auto___type_12 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_230 X1 X2 H);  intros.
  apply (rem_4115 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4117 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 X1 -> auto___type_12 X1. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__type_3_p__type_12 1.
  intro X. case X.
  exact (rem_4055 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 ).
  exact (rem_4053 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_4116 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2;  exact (rem_4114 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_4065 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_4078 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_4063 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1. intro H. elim (rem_234 X1 H).
  intros X1;  exact (rem_4084 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
  intros X1 X2 X3. intro H. elim (rem_236 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4081 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 X3).
   intro H. elim (rem_233  H).
   intro H. elim (rem_235  H).
  intros X1;  exact (rem_4059 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
  exact (rem_4061 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__type_3_p__type_12 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 ).
  intros X1 X2 X3 X4. intro H. elim (rem_237 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_238 X1 X2 X3 X4 H).
   intro H. elim (rem_232  H).
Defined.

Remark rem_4118 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 X1 -> auto___type_12 X1. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. exact (rem_4117 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70).
Defined.

Remark rem_4119 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_3 X1 -> auto___type_12 X1). tauto. exact (rem_4118 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4120 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_19 X2 -> auto___def_73 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. exact (rem_1354).
Defined.

Remark rem_4121 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_73 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_19 X2 -> auto___def_73 X2). tauto. exact (rem_4120 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4122 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> (auto___type_12 X1 /\ auto___def_73 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_4119 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_73 X2). 2:apply (rem_4121 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4123 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_72 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4122 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___def_72_cons_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4124 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_18 (cons X1 X2) -> auto___def_72 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1359 X1 X2 H);  intros.
  apply (rem_4123 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4125 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_18 X2 -> auto___def_72 X2. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__def_18_p__def_72 1.
  intro X. case X.
   intro H. elim (rem_1364  H).
   intro H. elim (rem_1361  H).
  intros X1 X2;  exact (rem_4124 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2. intro H. elim (rem_1375 X1 X2 H).
   intro H. elim (rem_1368  H).
  intros X1 X2. intro H. elim (rem_1369 X1 X2 H).
   intro H. elim (rem_1367  H).
  intros X1. intro H. elim (rem_1370 X1 H).
  intros X1. intro H. elim (rem_1373 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1374 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1371 X1 X2 X3 H).
   intro H. elim (rem_1363  H).
   intro H. elim (rem_1372  H).
  intros X1. intro H. elim (rem_1365 X1 H).
   intro H. elim (rem_1366  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1376 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1377 X1 X2 X3 X4 H).
   intro H. elim (rem_1362  H).
Defined.

Remark rem_4126 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_18 X2 -> auto___def_72 X2). tauto. exact (rem_4125 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4127 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> (auto___type_11 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_4050 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_4126 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4128 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_70 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4127 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___def_70_cons_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4129 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 (cons X1 X2) -> auto___def_70 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1382 X1 X2 H);  intros.
  apply (rem_4128 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4130 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. fix epsilon_m__def_16_p__def_70 1.
  intro X. case X.
   intro H. elim (rem_1387  H).
   intro H. elim (rem_1384  H).
  intros X1 X2;  exact (rem_4129 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2. intro H. elim (rem_1398 X1 X2 H).
   intro H. elim (rem_1391  H).
  intros X1 X2. intro H. elim (rem_1392 X1 X2 H).
   intro H. elim (rem_1390  H).
  intros X1. intro H. elim (rem_1393 X1 H).
  intros X1. intro H. elim (rem_1396 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1397 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1394 X1 X2 X3 H).
   intro H. elim (rem_1386  H).
   intro H. elim (rem_1395  H).
  intros X1. intro H. elim (rem_1388 X1 H).
   intro H. elim (rem_1389  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1399 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1400 X1 X2 X3 X4 H).
   intro H. elim (rem_1385  H).
Defined.

Remark rem_4131 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4130 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_4132 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. exact (rem_1069).
Defined.

Remark rem_4133 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4132 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_4134 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4131 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4133 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4135 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4134 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_4136 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4137 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4136 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_4138 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4139 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4138 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_4140 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4137 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4139 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4141 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4140 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_4142 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_3953 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_4143 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4029 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_4144 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4142 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4143 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4145 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4144 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_4146 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4147 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4146 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_4148 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4149 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4148 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_4150 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4147 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4149 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4151 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4150 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_4152 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4153 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4152 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_4154 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. exact (rem_3945 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current).
Defined.

Remark rem_4155 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4154 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_4156 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4153 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4155 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4157 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4156 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_4158 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_4135 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
  apply (rem_4141 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
  apply (rem_4145 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
  apply (rem_4151 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
  apply (rem_4157 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4159 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 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_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4144 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_4160 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_4159 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4161 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_3885 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  exact (rem_3883 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1 X2;  exact (rem_4160 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  intros X1 X2;  exact (rem_4158 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  exact (rem_3962 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1 X2;  exact (rem_3975 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  exact (rem_3960 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_3981 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3978 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_3956 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
  exact (rem_3958 epsilon_m__def_40_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_4162 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_44 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. exact (rem_4161 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current).
Defined.

Remark rem_4163 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_44 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_36 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4162 epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1).
Defined.

Remark rem_4164 : (forall X:term, auto___def_36 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_36_pknows_current.  tauto.
Defined.

Remark rem_4165 : (forall X:term, auto___def_36 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_36_pknows_current.  case (rem_4164 epsilon_m__def_36_pknows_current). clear  epsilon_m__def_36_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__def_36_pknows_current. tauto.
Defined.

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

Remark rem_4167 : (forall X:term, auto___def_36 X -> auto_knows_current X)
    -> auto___def_36 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_36_pknows_current. intro H. intros.
  elim (rem_4166 H);  intros.
  apply (rem_4165 epsilon_m__def_36_pknows_current);  tauto.
Defined.

Remark rem_4168 : auto___def_36 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4169 : auto___def_36 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4170 : auto___def_36 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4171 : auto___def_36 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4173 : auto___def_36 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4174 : auto___def_36 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4176 : forall X1:term, auto___def_36 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4177 : forall X1 X2 X3:term, auto___def_36 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4178 : auto___def_36 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4179 : forall X1:term, auto___def_36 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4180 : forall X1 X2 X3:term, auto___def_36 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_4183 : forall X1 X2 X3 X4:term, auto___def_36 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4184 : forall X1 X2 X3 X4:term, auto___def_36 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4185 : forall X2:term, auto___def_36 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_36_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_4171  H).
   intro H. elim (rem_4168  H).
  intros X1 X2. intro H. elim (rem_4182 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4181 X1 X2 H).
   intro H. elim (rem_4174  H).
  intros X1 X2. intro H. elim (rem_4175 X1 X2 H).
  exact (rem_4167 epsilon_m__def_36_pknows_current ).
  intros X1. intro H. elim (rem_4176 X1 H).
  intros X1. intro H. elim (rem_4179 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4180 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4177 X1 X2 X3 H).
   intro H. elim (rem_4170  H).
   intro H. elim (rem_4178  H).
  intros X1. intro H. elim (rem_4172 X1 H).
   intro H. elim (rem_4173  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4183 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4184 X1 X2 X3 X4 H).
   intro H. elim (rem_4169  H).
Qed.

Remark rem_4186 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_44 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_36 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. exact (rem_4185).
Defined.

Remark rem_4187 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_44 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_36 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_36 X2 -> auto_knows_current X2). tauto. exact (rem_4186 epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_4188 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_44 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_36 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4163 epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4187 epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4189 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_44 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_36 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4188 epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_4190 : forall X1 X2:term, auto___def_44 (cons X1 X2) -> or_1
    (auto___type_4 X1 /\ auto___def_36 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4191 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_44 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_44 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_4190 X1 X2 H);  intros.
  apply (rem_4189 epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4192 : auto___def_44 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4193 : auto___def_44 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4194 : auto___def_44 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4195 : auto___def_44 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4197 : auto___def_44 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4198 : auto___def_44 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4199 : auto___def_44 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4201 : forall X1:term, auto___def_44 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4202 : forall X1 X2 X3:term, auto___def_44 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4203 : auto___def_44 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4204 : forall X1:term, auto___def_44 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4205 : forall X1 X2 X3:term, auto___def_44 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4207 : forall X1 X2 X3 X4:term, auto___def_44 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4208 : forall X1 X2 X3 X4:term, auto___def_44 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4209 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_44 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. fix epsilon_m__def_44_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_4195  H).
   intro H. elim (rem_4192  H).
  intros X1 X2;  exact (rem_4191 epsilon_m__def_40_pknows_current epsilon_m__def_44_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_4206 X1 X2 H).
   intro H. elim (rem_4199  H).
  intros X1 X2. intro H. elim (rem_4200 X1 X2 H).
   intro H. elim (rem_4198  H).
  intros X1. intro H. elim (rem_4201 X1 H).
  intros X1. intro H. elim (rem_4204 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4205 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4202 X1 X2 X3 H).
   intro H. elim (rem_4194  H).
   intro H. elim (rem_4203  H).
  intros X1. intro H. elim (rem_4196 X1 H).
   intro H. elim (rem_4197  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4207 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4208 X1 X2 X3 X4 H).
   intro H. elim (rem_4193  H).
Defined.

Remark rem_4210 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_32 X1 -> auto___def_44 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_44 X2 -> auto_knows_current X2). tauto. exact (rem_4209 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_4211 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_32 X1 -> auto___def_44 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3880 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4210 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4212 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_32 X1 -> auto___def_44 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4211 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_4213 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_43 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_43 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_694 X1 X2 H);  intros.
  apply (rem_4212 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4214 : auto___def_43 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4215 : auto___def_43 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4216 : auto___def_43 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4217 : auto___def_43 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4219 : auto___def_43 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4220 : auto___def_43 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4221 : auto___def_43 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4223 : forall X1:term, auto___def_43 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4224 : forall X1 X2 X3:term, auto___def_43 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4225 : auto___def_43 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4226 : forall X1:term, auto___def_43 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4227 : forall X1 X2 X3:term, auto___def_43 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4229 : forall X1 X2 X3 X4:term, auto___def_43 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4230 : forall X1 X2 X3 X4:term, auto___def_43 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4231 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X2:term, auto___def_43 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current. fix epsilon_m__def_43_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_4217  H).
   intro H. elim (rem_4214  H).
  intros X1 X2;  exact (rem_4213 epsilon_m__def_40_pknows_current epsilon_m__def_43_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_4228 X1 X2 H).
   intro H. elim (rem_4221  H).
  intros X1 X2. intro H. elim (rem_4222 X1 X2 H).
   intro H. elim (rem_4220  H).
  intros X1. intro H. elim (rem_4223 X1 H).
  intros X1. intro H. elim (rem_4226 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4227 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4224 X1 X2 X3 H).
   intro H. elim (rem_4216  H).
   intro H. elim (rem_4225  H).
  intros X1. intro H. elim (rem_4218 X1 H).
   intro H. elim (rem_4219  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4229 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4230 X1 X2 X3 X4 H).
   intro H. elim (rem_4215  H).
Defined.

Remark rem_4232 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_43 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2.
  cut (auto___def_43 X2 -> auto_knows_current X2). tauto. exact (rem_4231 epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current X2).
Defined.

Remark rem_4233 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_43 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3877 epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4232 epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4234 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_43 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4233 epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current A1 A2. tauto.
Defined.

Remark rem_4235 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> (forall X:term, auto___def_42 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_42 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_697 X1 X2 H);  intros.
  apply (rem_4234 epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current X1 X2);  tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Remark rem_4253 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X2:term, auto___def_42 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  intros epsilon_m__def_40_pknows_current. fix epsilon_m__def_42_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_4239  H).
   intro H. elim (rem_4236  H).
  intros X1 X2;  exact (rem_4235 epsilon_m__def_40_pknows_current epsilon_m__def_42_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_4250 X1 X2 H).
   intro H. elim (rem_4243  H).
  intros X1 X2. intro H. elim (rem_4244 X1 X2 H).
   intro H. elim (rem_4242  H).
  intros X1. intro H. elim (rem_4245 X1 H).
  intros X1. intro H. elim (rem_4248 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4249 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4246 X1 X2 X3 H).
   intro H. elim (rem_4238  H).
   intro H. elim (rem_4247  H).
  intros X1. intro H. elim (rem_4240 X1 H).
   intro H. elim (rem_4241  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4251 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4252 X1 X2 X3 X4 H).
   intro H. elim (rem_4237  H).
Defined.

Remark rem_4254 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_42 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_40_pknows_current. intros X1 X2.
  cut (auto___def_42 X2 -> auto_knows_current X2). tauto. exact (rem_4253 epsilon_m__def_40_pknows_current X2).
Defined.

Remark rem_4255 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_42 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_3874 epsilon_m__def_40_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4254 epsilon_m__def_40_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4256 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_7 X1 -> auto___def_42 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4255 epsilon_m__def_40_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_40_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_40_pknows_current A1 A2. tauto.
Defined.

Remark rem_4257 : (forall X:term, auto___def_40 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_40_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_703 X1 X2 H);  intros.
  apply (rem_4256 epsilon_m__def_40_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4258 : auto___def_40 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4259 : auto___def_40 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4260 : auto___def_40 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4261 : auto___def_40 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4263 : auto___def_40 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4264 : auto___def_40 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4265 : auto___def_40 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4267 : forall X1:term, auto___def_40 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4268 : forall X1 X2 X3:term, auto___def_40 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4269 : auto___def_40 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4270 : forall X1:term, auto___def_40 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4271 : forall X1 X2 X3:term, auto___def_40 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4273 : forall X1 X2 X3 X4:term, auto___def_40 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4274 : forall X1 X2 X3 X4:term, auto___def_40 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4275 : forall X2:term, auto___def_40 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_40_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_4261  H).
   intro H. elim (rem_4258  H).
  intros X1 X2;  exact (rem_4257 epsilon_m__def_40_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_4272 X1 X2 H).
   intro H. elim (rem_4265  H).
  intros X1 X2. intro H. elim (rem_4266 X1 X2 H).
   intro H. elim (rem_4264  H).
  intros X1. intro H. elim (rem_4267 X1 H).
  intros X1. intro H. elim (rem_4270 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4271 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4268 X1 X2 X3 H).
   intro H. elim (rem_4260  H).
   intro H. elim (rem_4269  H).
  intros X1. intro H. elim (rem_4262 X1 H).
   intro H. elim (rem_4263  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4273 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4274 X1 X2 X3 X4 H).
   intro H. elim (rem_4259  H).
Qed.

Remark rem_4276 : forall X1 X2:term, auto___def_40 X2 -> auto___def_41 (key pub X1) -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_40 X2 -> auto_knows_current X2). tauto. exact (rem_4275 X2).
Qed.

Remark rem_4277 : forall X1 X2:term, auto___def_40 X2 -> auto___def_41 (key pub X1) -> (auto___type_9 X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_9 X1). 2:apply (rem_3330 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4276 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_4278 : forall X1 X2:term, auto___def_40 X2 -> auto___def_41 (key pub X1) -> auto___def_56 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_4277 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_56_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4279 : forall X1 X2:term, auto___def_29 X2 -> auto___def_30 (key pub X1) -> auto___type_9 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_9_1. Qed.

Remark rem_4280 : (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1:term, auto___type_5 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_29_pknows_current. exact (rem_3875).
Defined.

Remark rem_4281 : (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_31 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_29_pknows_current. intros X1 X2.
  cut (auto___type_5 X1 -> auto_knows_current X1). tauto. exact (rem_4280 epsilon_m__def_29_pknows_current X1).
Defined.

Remark rem_4282 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1:term, auto___def_32 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current. exact (rem_3878).
Defined.

Remark rem_4283 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_32 X1 -> auto___def_33 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current. intros X1 X2.
  cut (auto___def_32 X1 -> auto_knows_current X1). tauto. exact (rem_4282 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current X1).
Defined.

Remark rem_4284 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  tauto.
Defined.

Remark rem_4285 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  case (rem_4284 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. tauto.
Defined.

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

Remark rem_4287 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto___type_6 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intro H. intros.
  elim (rem_4286 H);  intros.
  apply (rem_4285 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current);  tauto.
Defined.

Remark rem_4288 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  case (rem_4284 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. tauto.
Defined.

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

Remark rem_4290 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto___type_6 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intro H. intros.
  elim (rem_4289 H);  intros.
  apply (rem_4288 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current);  tauto.
Defined.

Remark rem_4291 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  tauto.
Defined.

Remark rem_4292 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  case (rem_4291 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. tauto.
Defined.

Remark rem_4293 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_old bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intro H. intros.
  elim (rem_783 H);  intros.
  apply (rem_4292 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current);  tauto.
Defined.

Remark rem_4294 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  case (rem_4291 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. tauto.
Defined.

Remark rem_4295 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_old alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intro H. intros.
  elim (rem_786 H);  intros.
  apply (rem_4294 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current);  tauto.
Defined.

Remark rem_4296 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4297 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_4296 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_4298 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intros A1.
  case (rem_4297 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1. tauto.
Defined.

Remark rem_4299 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intro H. intros.
  elim (rem_791 X1 H);  intros.
  apply (rem_4298 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1);  tauto.
Defined.

Remark rem_4300 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  case (rem_4291 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. tauto.
Defined.

Remark rem_4301 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_old server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intro H. intros.
  elim (rem_794 H);  intros.
  apply (rem_4300 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current);  tauto.
Defined.

Remark rem_4302 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  case (rem_4291 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. tauto.
Defined.

Remark rem_4303 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_old nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intro H. intros.
  elim (rem_797 H);  intros.
  apply (rem_4302 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current);  tauto.
Defined.

Remark rem_4304 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  case (rem_4291 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. tauto.
Defined.

Remark rem_4305 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_old i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intro H. intros.
  elim (rem_800 H);  intros.
  apply (rem_4304 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current);  tauto.
Defined.

Remark rem_4306 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_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. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4307 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4306 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4308 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4309 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4308 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4310 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4307 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4309 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4311 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4310 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4312 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4313 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4312 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4314 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4315 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4314 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4316 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4313 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4315 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4317 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4316 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4318 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_293 X1 X2 H);  intros.
  apply (rem_4311 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
  apply (rem_4317 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4319 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_4320 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4319 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_4321 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_822 X1 X2 X3 H);  intros.
  apply (rem_4320 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_4322 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_4323 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intros A1.
  case (rem_4322 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1. tauto.
Defined.

Remark rem_4324 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intro H. intros.
  elim (rem_827 X1 H);  intros.
  apply (rem_4323 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1);  tauto.
Defined.

Remark rem_4325 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. exact (rem_1401 epsilon_mknows_old_pknows_current).
Defined.

Remark rem_4326 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4325 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4327 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. exact (rem_1069).
Defined.

Remark rem_4328 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4327 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4329 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4326 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4328 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4330 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4329 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4331 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4332 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4331 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4333 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4334 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4333 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4335 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4332 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4334 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4336 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4335 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4337 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_4296 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4338 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intros X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_4339 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4338 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4340 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4337 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4339 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4341 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4340 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4342 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4343 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4342 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4344 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4345 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4344 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4346 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4343 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4345 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4347 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4346 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4348 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  tauto.
Defined.

Remark rem_4349 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  case (rem_4348 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_4350 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_4349 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_4351 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  case (rem_4348 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_4352 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_4351 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_4353 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intro H. clear H. intros X1.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4354 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_4353 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_4355 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_4354 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_4356 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_4355 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_4357 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  case (rem_4348 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_4358 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_4357 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_4359 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  case (rem_4348 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_4360 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_4359 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_4361 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  case (rem_4348 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_4362 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_4361 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_4363 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_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. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4364 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4363 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4365 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4366 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4365 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4367 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4364 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4366 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4368 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4367 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4369 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4370 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4369 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4371 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4372 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4371 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4373 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4370 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4372 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4374 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4373 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4375 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_4368 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_4374 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4376 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_4377 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4376 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_4378 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_4377 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_4379 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_4380 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_4379 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_4381 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_4380 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_4382 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. exact (rem_1401 epsilon_mknows_old_pknows_current).
Defined.

Remark rem_4383 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4382 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4384 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. exact (rem_4327 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4385 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4384 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4386 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4383 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4385 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4387 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4386 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4388 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4389 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4388 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4390 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4391 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4390 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4392 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4389 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4391 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4393 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4392 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4394 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_4353 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4395 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intro H. clear H. intros X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (Hrec X2).
Defined.

Remark rem_4396 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4395 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4397 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4394 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4396 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4398 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4397 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4399 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4400 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4399 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4401 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4402 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4401 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4403 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4400 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4402 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4404 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4403 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4405 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4406 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4405 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4407 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current. exact (rem_1226).
Defined.

Remark rem_4408 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. exact (rem_4407 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current).
Defined.

Remark rem_4409 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4408 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4410 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4406 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4409 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4411 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4410 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4412 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_4387 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_4393 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_4398 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_4404 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_4411 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4413 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4397 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4414 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_4413 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4415 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_4352 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current ).
  exact (rem_4350 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_4414 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  intros X1 X2;  exact (rem_4412 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_4362 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_4375 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_4360 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_4381 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4378 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_4356 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
  exact (rem_4358 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_4416 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4415 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4417 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. exact (rem_4407 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current).
Defined.

Remark rem_4418 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4417 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4419 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4416 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4418 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4420 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4419 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4421 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_313 X1 X2 H);  intros.
  apply (rem_4330 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
  apply (rem_4336 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
  apply (rem_4341 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
  apply (rem_4347 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
  apply (rem_4420 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4422 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4340 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4423 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto_knows_old X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_860 X1 X2 H);  intros.
  apply (rem_4422 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4424 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. fix epsilon_mknows_old_pknows_current 1.
  intro X. case X.
  exact (rem_4295 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  exact (rem_4293 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1 X2;  exact (rem_4423 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2).
  intros X1 X2;  exact (rem_4421 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2).
  exact (rem_4305 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1 X2;  exact (rem_4318 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2).
  exact (rem_4303 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_4324 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4321 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_4299 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
  exact (rem_4301 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Defined.

Remark rem_4425 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_4424 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_4426 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intros A1.
  case (rem_4425 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1. tauto.
Defined.

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

Remark rem_4428 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___type_6 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intro H. intros.
  elim (rem_4427 X1 H);  intros.
  apply (rem_4426 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1);  tauto.
Defined.

Remark rem_4429 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  case (rem_4284 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. tauto.
Defined.

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

Remark rem_4431 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto___type_6 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intro H. intros.
  elim (rem_4430 H);  intros.
  apply (rem_4429 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current);  tauto.
Defined.

Remark rem_4432 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  case (rem_4284 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. tauto.
Defined.

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

Remark rem_4434 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto___type_6 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intro H. intros.
  elim (rem_4433 H);  intros.
  apply (rem_4432 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current);  tauto.
Defined.

Remark rem_4435 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current.  case (rem_4284 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. tauto.
Defined.

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

Remark rem_4437 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> auto___type_6 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intro H. intros.
  elim (rem_4436 H);  intros.
  apply (rem_4435 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current);  tauto.
Defined.

Remark rem_4438 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_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. intro H. clear H. tauto. Defined.

Remark rem_4439 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4438 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4440 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4441 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4440 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4442 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4439 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4441 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4443 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4442 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4444 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4445 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4444 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4446 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4447 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4446 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4448 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4445 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4447 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4449 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4448 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4450 : forall X1 X2:term, auto___type_6 (key X1 X2) -> or_2
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_4451 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_6 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_4450 X1 X2 H);  intros.
  apply (rem_4443 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
  apply (rem_4449 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4452 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_4453 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4452 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_4454 : forall X1 X2 X3:term, auto___type_6 (nonceb_old X1 X2 X3) -> or_1
    (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4455 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_6 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_4454 X1 X2 X3 H);  intros.
  apply (rem_4453 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_4456 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_4457 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intros A1.
  case (rem_4456 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1. tauto.
Defined.

Remark rem_4458 : forall X1:term, auto___type_6 (noncea_old X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_4459 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___type_6 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1. intro H. intros.
  elim (rem_4458 X1 H);  intros.
  apply (rem_4457 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1);  tauto.
Defined.

Remark rem_4460 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  tauto.
Defined.

Remark rem_4461 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_4460 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_bob_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_4462 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 bob -> auto___type_11 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1002 H);  intros.
  apply (rem_4461 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_4463 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_4460 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_alice_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_4464 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 alice -> auto___type_11 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1005 H);  intros.
  apply (rem_4463 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_4465 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_4424 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4466 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_4465 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_4467 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_11 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_4466 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans___type_11_s_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_4468 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_2 (s X1) -> auto___type_11 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1010 X1 H);  intros.
  apply (rem_4467 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_4469 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_4460 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_server_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_4470 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 server -> auto___type_11 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1013 H);  intros.
  apply (rem_4469 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_4471 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_4460 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_nil_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_4472 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 nil -> auto___type_11 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1016 H);  intros.
  apply (rem_4471 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_4473 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_11 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_4460 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans___type_11_i_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_4474 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_2 i -> auto___type_11 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1019 H);  intros.
  apply (rem_4473 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_4475 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4476 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4475 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4477 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4478 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4477 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4479 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4476 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4478 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4480 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4479 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_key_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4481 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4482 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4481 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4483 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4484 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4483 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4485 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4482 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4484 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4486 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_11 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4485 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_key_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4487 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (key X1 X2) -> auto___type_11 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1033 X1 X2 H);  intros.
  apply (rem_4480 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4486 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_4488 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_4489 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_11 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4488 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. intros. apply trans___type_11_nonceb_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. tauto.
Defined.

Remark rem_4490 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_2 (nonceb_old X1 X2 X3) -> auto___type_11 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_1037 X1 X2 X3 H);  intros.
  apply (rem_4489 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_4491 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  tauto.
Defined.

Remark rem_4492 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto___type_11 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_4491 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans___type_11_noncea_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_4493 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_2 (noncea_old X1) -> auto___type_11 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1041 X1 H);  intros.
  apply (rem_4492 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_4494 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4495 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4494 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4496 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_1069).
Defined.

Remark rem_4497 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4496 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4498 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4495 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4497 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4499 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4498 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_5;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4500 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4501 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4500 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4502 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4503 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4502 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4504 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4501 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4503 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4505 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4504 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4506 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_4465 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4507 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. fix epsilon_mknows_old_pknows_current 1.
  intro X. case X.
  exact (rem_4295 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  exact (rem_4293 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1 X2;  exact (rem_4423 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2).
  intros X1 X2;  exact (rem_4421 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2).
  exact (rem_4305 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1 X2;  exact (rem_4318 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2).
  exact (rem_4303 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1. intro H. elim (rem_864 X1 H).
  intros X1;  exact (rem_4324 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_866 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4321 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 X3).
   intro H. elim (rem_863  H).
   intro H. elim (rem_865  H).
  intros X1;  exact (rem_4299 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
  exact (rem_4301 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_mknows_old_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_867 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_868 X1 X2 X3 X4 H).
   intro H. elim (rem_862  H).
Defined.

Remark rem_4508 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_4507 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4509 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4508 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4510 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4506 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4509 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4511 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4510 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4512 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4513 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4512 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4514 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4515 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4514 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4516 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4513 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4515 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4517 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4516 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_3;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4518 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  tauto.
Defined.

Remark rem_4519 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_4518 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_4520 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_4519 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_4521 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_4518 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_4522 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_4521 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_4523 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_4424 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4524 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_4523 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  assumption.
  tauto.
Defined.

Remark rem_4525 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_4524 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_4526 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_4525 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_4527 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_4518 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_4528 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_4527 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_4529 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_4518 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_4530 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_4529 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_4531 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11.  case (rem_4518 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. tauto.
Defined.

Remark rem_4532 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_4531 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11);  tauto.
Defined.

Remark rem_4533 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4534 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4533 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4535 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4536 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4535 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4537 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4534 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4536 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4538 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4537 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4539 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4540 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4539 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4541 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4542 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4541 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4543 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4540 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4542 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4544 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4543 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4545 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_4538 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4544 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_4546 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_4547 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4546 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2 A3. tauto.
Defined.

Remark rem_4548 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_4547 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3);  tauto.
Defined.

Remark rem_4549 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  tauto.
Defined.

Remark rem_4550 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intros A1.
  case (rem_4549 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1. tauto.
Defined.

Remark rem_4551 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_4550 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1);  tauto.
Defined.

Remark rem_4552 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4553 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4552 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4554 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_4496 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11).
Defined.

Remark rem_4555 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4554 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4556 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4553 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4555 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4557 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4556 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4558 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4559 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4558 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4560 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4561 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4560 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4562 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4559 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4561 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4563 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4562 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4564 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_4523 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4565 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_4507 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4566 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4565 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4567 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4564 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4566 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4568 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4567 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4569 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4570 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4569 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4571 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4572 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4571 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4573 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4570 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4572 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4574 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4573 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4575 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4576 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4575 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4577 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_4407 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current).
Defined.

Remark rem_4578 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4577 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4579 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4576 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4578 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4580 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4579 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4581 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_4557 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4563 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4568 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4574 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4580 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_4582 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4567 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4583 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_4582 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_4584 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_4522 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  exact (rem_4520 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_4583 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_4581 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_4532 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_4545 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_4530 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_4551 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4548 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_4526 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  exact (rem_4528 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_4585 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4584 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
Defined.

Remark rem_4586 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. exact (rem_4407 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current).
Defined.

Remark rem_4587 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4586 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X2).
Defined.

Remark rem_4588 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4585 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4587 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4589 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_11 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4588 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4590 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (crypt X1 X2) -> auto___type_11 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1250 X1 X2 H);  intros.
  apply (rem_4499 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4505 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4511 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4517 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
  apply (rem_4589 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_4591 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intros A1 A2.
  case (rem_4510 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. intros. apply trans___type_11_cons_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 A1 A2. tauto.
Defined.

Remark rem_4592 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> (forall X:term, auto___type_2 X -> auto___type_11 X)
    -> forall X1 X2:term, auto___type_2 (cons X1 X2) -> auto___type_11 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11. intros X1 X2. intro H. intros.
  elim (rem_1253 X1 X2 H);  intros.
  apply (rem_4591 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2);  tauto.
Defined.

Remark rem_4593 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_2 X1 -> auto___type_11 X1. (* Induct. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__type_2_p__type_11 1.
  intro X. case X.
  exact (rem_4464 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  exact (rem_4462 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_4592 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  intros X1 X2;  exact (rem_4590 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_4474 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2;  exact (rem_4487 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2).
  exact (rem_4472 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1. intro H. elim (rem_1257 X1 H).
  intros X1;  exact (rem_4493 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  intros X1 X2 X3. intro H. elim (rem_1259 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4490 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1 X2 X3).
   intro H. elim (rem_1256  H).
   intro H. elim (rem_1258  H).
  intros X1;  exact (rem_4468 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 X1).
  exact (rem_4470 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 epsilon_m__type_2_p__type_11 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1260 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1261 X1 X2 X3 X4 H).
   intro H. elim (rem_1255  H).
Defined.

Remark rem_4594 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___type_11 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_2 X1 -> auto___type_11 X1). tauto. exact (rem_4593 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4595 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  tauto.
Defined.

Remark rem_4596 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_4595 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_bob_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4597 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 bob -> auto___type_12 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_151 H);  intros.
  apply (rem_4596 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4598 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_4595 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_alice_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4599 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 alice -> auto___type_12 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_154 H);  intros.
  apply (rem_4598 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4600 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_4424 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4601 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_4600 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  assumption.
  tauto.
Defined.

Remark rem_4602 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto___type_12 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_4601 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans___type_12_s_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_4603 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 (s X1) -> auto___type_12 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_159 X1 H);  intros.
  apply (rem_4602 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_4604 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_4595 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_server_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4605 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 server -> auto___type_12 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_162 H);  intros.
  apply (rem_4604 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4606 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_4595 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_nil_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4607 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 nil -> auto___type_12 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_165 H);  intros.
  apply (rem_4606 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4608 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_12 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_4595 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans___type_12_i_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4609 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_3 i -> auto___type_12 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_168 H);  intros.
  apply (rem_4608 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4610 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4611 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4610 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4612 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4613 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4612 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4614 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4611 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4613 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4615 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4614 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_key_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4616 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4617 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4616 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4618 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4619 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4618 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4620 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4617 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4619 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4621 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_12 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4620 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_key_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4622 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (key X1 X2) -> auto___type_12 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_182 X1 X2 H);  intros.
  apply (rem_4615 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4621 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4623 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_4624 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto___type_12 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4623 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. intros. apply trans___type_12_nonceb_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. tauto.
Defined.

Remark rem_4625 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto___type_3 (nonceb_old X1 X2 X3) -> auto___type_12 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intro H. intros.
  elim (rem_191 X1 X2 X3 H);  intros.
  apply (rem_4624 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3);  tauto.
Defined.

Remark rem_4626 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  tauto.
Defined.

Remark rem_4627 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> auto___type_12 (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_4626 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans___type_12_noncea_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_4628 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 (noncea_old X1) -> auto___type_12 (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_196 X1 H);  intros.
  apply (rem_4627 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_4629 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4630 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4629 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4631 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_1069).
Defined.

Remark rem_4632 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4631 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4633 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4630 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4632 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4634 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4633 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_5;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4635 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4636 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4635 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4637 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4638 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4637 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4639 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4636 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4638 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4640 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4639 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4641 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_4600 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4642 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_4507 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4643 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4642 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4644 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4641 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4643 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4645 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4644 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4646 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4647 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4646 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4648 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4649 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4648 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4650 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4647 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4649 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4651 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4650 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_3;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4652 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  tauto.
Defined.

Remark rem_4653 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_4652 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4654 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_4653 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4655 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_4652 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4656 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_4655 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4657 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_4600 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70).
Defined.

Remark rem_4658 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_4657 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  assumption.
  tauto.
Defined.

Remark rem_4659 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_4658 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_4660 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_4659 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_4661 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_4652 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4662 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_4661 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4663 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_4652 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4664 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_4663 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4665 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70.  case (rem_4652 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. tauto.
Defined.

Remark rem_4666 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_4665 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70);  tauto.
Defined.

Remark rem_4667 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4668 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4667 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4669 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4670 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4669 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4671 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4668 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4670 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4672 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4671 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4673 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4674 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4673 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4675 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4676 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4675 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4677 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4674 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4676 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4678 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4677 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4679 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_4672 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4678 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4680 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_4681 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4680 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2 A3. tauto.
Defined.

Remark rem_4682 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_4681 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3);  tauto.
Defined.

Remark rem_4683 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  tauto.
Defined.

Remark rem_4684 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intros A1.
  case (rem_4683 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1. tauto.
Defined.

Remark rem_4685 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_4684 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1);  tauto.
Defined.

Remark rem_4686 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4687 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4686 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4688 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_4631 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70).
Defined.

Remark rem_4689 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4688 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4690 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4687 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4689 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4691 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4690 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4692 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4693 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4692 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4694 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4695 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4694 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4696 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4693 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4695 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4697 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4696 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4698 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_4657 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4699 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_4642 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70).
Defined.

Remark rem_4700 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4699 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4701 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4698 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4700 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4702 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4701 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4703 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4704 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4703 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4705 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4706 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4705 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4707 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4704 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4706 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4708 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4707 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4709 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intro H. clear H. intro H. clear H. intro H. clear H. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4710 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4709 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4711 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_4407 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current).
Defined.

Remark rem_4712 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4711 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4713 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4710 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4712 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4714 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4713 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4715 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_4691 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4697 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4702 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4708 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4714 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4716 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4701 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4717 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_4716 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4718 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_4656 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  exact (rem_4654 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_4717 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2;  exact (rem_4715 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_4666 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_4679 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_4664 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_4685 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4682 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_4660 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  exact (rem_4662 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_4719 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4718 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4720 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. exact (rem_4407 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current).
Defined.

Remark rem_4721 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4720 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4722 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4719 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4721 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4723 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_12 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4722 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4724 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (crypt X1 X2) -> auto___type_12 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_227 X1 X2 H);  intros.
  apply (rem_4634 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4640 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4645 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4651 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
  apply (rem_4723 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4725 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto___type_12 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4644 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___type_12_cons_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4726 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___type_3 X -> auto___type_12 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 (cons X1 X2) -> auto___type_12 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_230 X1 X2 H);  intros.
  apply (rem_4725 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4727 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1:term, auto___type_3 X1 -> auto___type_12 X1. (* Induct. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. fix epsilon_m__type_3_p__type_12 1.
  intro X. case X.
  exact (rem_4599 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  exact (rem_4597 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_4726 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2;  exact (rem_4724 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_4609 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2;  exact (rem_4622 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2).
  exact (rem_4607 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1. intro H. elim (rem_234 X1 H).
  intros X1;  exact (rem_4628 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  intros X1 X2 X3. intro H. elim (rem_236 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4625 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1 X2 X3).
   intro H. elim (rem_233  H).
   intro H. elim (rem_235  H).
  intros X1;  exact (rem_4603 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 X1).
  exact (rem_4605 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__type_3_p__type_12 epsilon_m__def_16_p__def_70 ).
  intros X1 X2 X3 X4. intro H. elim (rem_237 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_238 X1 X2 X3 X4 H).
   intro H. elim (rem_232  H).
Defined.

Remark rem_4728 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___type_12 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___type_3 X1 -> auto___type_12 X1). tauto. exact (rem_4727 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1).
Defined.

Remark rem_4729 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_19 X2 -> auto___def_73 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. exact (rem_1354).
Defined.

Remark rem_4730 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_73 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_19 X2 -> auto___def_73 X2). tauto. exact (rem_4729 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4731 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> (auto___type_12 X1 /\ auto___def_73 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___type_12 X1). 2:apply (rem_4728 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_73 X2). 2:apply (rem_4730 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4732 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_3 X1 -> auto___def_19 X2 -> auto___def_72 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4731 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___def_72_cons_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4733 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_18 X -> auto___def_72 X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_18 (cons X1 X2) -> auto___def_72 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1359 X1 X2 H);  intros.
  apply (rem_4732 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4734 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X2:term, auto___def_18 X2 -> auto___def_72 X2. (* Induct. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70. fix epsilon_m__def_18_p__def_72 1.
  intro X. case X.
   intro H. elim (rem_1364  H).
   intro H. elim (rem_1361  H).
  intros X1 X2;  exact (rem_4733 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_18_p__def_72 epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2. intro H. elim (rem_1375 X1 X2 H).
   intro H. elim (rem_1368  H).
  intros X1 X2. intro H. elim (rem_1369 X1 X2 H).
   intro H. elim (rem_1367  H).
  intros X1. intro H. elim (rem_1370 X1 H).
  intros X1. intro H. elim (rem_1373 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1374 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1371 X1 X2 X3 H).
   intro H. elim (rem_1363  H).
   intro H. elim (rem_1372  H).
  intros X1. intro H. elim (rem_1365 X1 H).
   intro H. elim (rem_1366  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1376 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1377 X1 X2 X3 X4 H).
   intro H. elim (rem_1362  H).
Defined.

Remark rem_4735 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_72 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2.
  cut (auto___def_18 X2 -> auto___def_72 X2). tauto. exact (rem_4734 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 X2).
Defined.

Remark rem_4736 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> (auto___type_11 X1 /\ auto___def_72 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  cut (auto___type_11 X1). 2:apply (rem_4594 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  cut (auto___def_72 X2). 2:apply (rem_4735 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4737 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___type_2 X1 -> auto___def_18 X2 -> auto___def_70 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intros A1 A2.
  case (rem_4736 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 A1 A2. intros. apply trans___def_70_cons_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 A1 A2. tauto.
Defined.

Remark rem_4738 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___def_16 X -> auto___def_70 X)
    -> forall X1 X2:term, auto___def_16 (cons X1 X2) -> auto___def_70 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70. intros X1 X2. intro H. intros.
  elim (rem_1382 X1 X2 H);  intros.
  apply (rem_4737 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 X1 X2);  tauto.
Defined.

Remark rem_4739 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Induct. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. fix epsilon_m__def_16_p__def_70 1.
  intro X. case X.
   intro H. elim (rem_1387  H).
   intro H. elim (rem_1384  H).
  intros X1 X2;  exact (rem_4738 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__def_16_p__def_70 X1 X2).
  intros X1 X2. intro H. elim (rem_1398 X1 X2 H).
   intro H. elim (rem_1391  H).
  intros X1 X2. intro H. elim (rem_1392 X1 X2 H).
   intro H. elim (rem_1390  H).
  intros X1. intro H. elim (rem_1393 X1 H).
  intros X1. intro H. elim (rem_1396 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1397 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1394 X1 X2 X3 H).
   intro H. elim (rem_1386  H).
   intro H. elim (rem_1395  H).
  intros X1. intro H. elim (rem_1388 X1 H).
   intro H. elim (rem_1389  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1399 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1400 X1 X2 X3 X4 H).
   intro H. elim (rem_1385  H).
Defined.

Remark rem_4740 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4739 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4741 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. exact (rem_1069).
Defined.

Remark rem_4742 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4741 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4743 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4740 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4742 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4744 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4743 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4745 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4746 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4745 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4747 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4748 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4747 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4749 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4746 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4748 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4750 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4749 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4751 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_4424 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4752 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4507 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4753 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4751 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4752 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4754 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4753 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4755 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4756 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4755 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4757 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4758 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4757 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4759 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4756 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4758 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4760 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4759 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4761 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  tauto.
Defined.

Remark rem_4762 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  case (rem_4761 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_4763 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1093 H);  intros.
  apply (rem_4762 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_4764 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  case (rem_4761 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_4765 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1096 H);  intros.
  apply (rem_4764 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_4766 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. exact (rem_4424 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4767 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_4766 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_4768 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_4767 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_4769 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1101 X1 H);  intros.
  apply (rem_4768 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_4770 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  case (rem_4761 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_4771 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1104 H);  intros.
  apply (rem_4770 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_4772 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  case (rem_4761 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_4773 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1107 H);  intros.
  apply (rem_4772 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_4774 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current.  case (rem_4761 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. tauto.
Defined.

Remark rem_4775 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> auto___type_4 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intro H. intros.
  elim (rem_1110 H);  intros.
  apply (rem_4774 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current);  tauto.
Defined.

Remark rem_4776 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_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. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4777 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4776 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4778 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4779 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4778 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4780 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4777 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4779 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4781 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4780 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4782 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4783 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4782 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4784 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4785 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4784 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4786 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4783 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4785 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4787 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4786 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4788 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1124 X1 X2 H);  intros.
  apply (rem_4781 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_4787 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4789 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Defined.

Remark rem_4790 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4789 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_4791 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_4 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1128 X1 X2 X3 H);  intros.
  apply (rem_4790 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_4792 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  tauto.
Defined.

Remark rem_4793 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intros A1.
  case (rem_4792 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 A1). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1. tauto.
Defined.

Remark rem_4794 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1. intro H. intros.
  elim (rem_1132 X1 H);  intros.
  apply (rem_4793 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1);  tauto.
Defined.

Remark rem_4795 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_70 X1. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. exact (rem_4739 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4796 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_70 X1). tauto. exact (rem_4795 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4797 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_71 X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. exact (rem_4741 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4798 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_71 X2). tauto. exact (rem_4797 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4799 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4796 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4798 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4800 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4799 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4801 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4802 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4801 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4803 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4804 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4803 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4805 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4802 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4804 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4806 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4805 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4807 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_current X1). tauto. exact (rem_4766 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4808 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto_knows_old X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. exact (rem_4507 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current).
Defined.

Remark rem_4809 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_current X2). tauto. exact (rem_4808 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4810 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4807 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4809 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4811 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4810 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4812 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4813 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4812 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4814 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. tauto. Defined.

Remark rem_4815 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4814 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4816 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4813 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4815 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4817 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4816 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4818 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Use induction hypothesis. *)
Proof.
   intro H. clear H. intro H. clear H. intro H. clear H. intro H. clear H. intro Hrec. intros X1.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (Hrec X1).
Defined.

Remark rem_4819 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4818 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
Defined.

Remark rem_4820 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. exact (rem_4407 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current).
Defined.

Remark rem_4821 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4820 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X2).
Defined.

Remark rem_4822 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4819 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4821 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4823 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4822 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4824 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1231 X1 X2 H);  intros.
  apply (rem_4800 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_4806 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_4811 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_4817 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
  apply (rem_4823 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4825 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4810 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current A1 A2. tauto.
Defined.

Remark rem_4826 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> (forall X:term, auto___type_4 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1234 X1 X2 H);  intros.
  apply (rem_4825 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4827 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___type_4 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. fix epsilon_m__type_4_pknows_current 1.
  intro X. case X.
  exact (rem_4765 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current ).
  exact (rem_4763 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_4826 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  intros X1 X2;  exact (rem_4824 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_4775 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2;  exact (rem_4788 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2).
  exact (rem_4773 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_4794 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4791 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_4769 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current X1).
  exact (rem_4771 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current epsilon_m__type_4_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Defined.

Remark rem_4828 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_current X1). tauto. exact (rem_4827 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4829 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_32 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. exact (rem_4407 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current).
Defined.

Remark rem_4830 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_32 X2 -> auto_knows_current X2). tauto. exact (rem_4829 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4831 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4828 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4830 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4832 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4831 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4833 : forall X1 X2:term, auto___type_6 (crypt X1 X2) -> or_5
    (auto___def_16 X1 /\ auto___def_17 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto___type_4 X1 /\ auto___def_32 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_5_intro_1; tauto.
  intros. apply or_5_intro_2; tauto.
  intros. apply or_5_intro_3; tauto.
  intros. apply or_5_intro_4; tauto.
  intros. apply or_5_intro_5; tauto.
Qed.

Remark rem_4834 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_6 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_4833 X1 X2 H);  intros.
  apply (rem_4744 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
  apply (rem_4750 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
  apply (rem_4754 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
  apply (rem_4760 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
  apply (rem_4832 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4835 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 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_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4753 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4836 : forall X1 X2:term, auto___type_6 (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_4837 : (forall X:term, auto___type_6 X -> auto_knows_current X)
    -> (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_6 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_4836 X1 X2 H);  intros.
  apply (rem_4835 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4838 : auto___type_6 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4839 : auto___type_6 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4840 : auto___type_6 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4841 : forall X1 X2 X3:term, auto___type_6 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4842 : forall X1 X2 X3 X4:term, auto___type_6 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4843 : forall X1 X2 X3 X4:term, auto___type_6 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4844 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1:term, auto___type_6 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. fix epsilon_m__type_6_pknows_current 1.
  intro X. case X.
  exact (rem_4290 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  exact (rem_4287 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1 X2;  exact (rem_4837 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2).
  intros X1 X2;  exact (rem_4834 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2).
  exact (rem_4437 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1 X2;  exact (rem_4451 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2).
  exact (rem_4434 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1. intro H. elim (rem_705 X1 H).
  intros X1;  exact (rem_4459 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
  intros X1 X2 X3. intro H. elim (rem_4841 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_4455 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 X3).
   intro H. elim (rem_4839  H).
   intro H. elim (rem_4840  H).
  intros X1;  exact (rem_4428 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
  exact (rem_4431 epsilon_m__type_6_pknows_current epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_4842 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4843 X1 X2 X3 X4 H).
   intro H. elim (rem_4838  H).
Defined.

Remark rem_4845 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_36 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___type_6 X1 -> auto_knows_current X1). tauto. exact (rem_4844 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1).
Defined.

Remark rem_4846 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X2:term, auto___def_36 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. exact (rem_4185).
Defined.

Remark rem_4847 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_36 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2.
  cut (auto___def_36 X2 -> auto_knows_current X2). tauto. exact (rem_4846 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X2).
Defined.

Remark rem_4848 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_36 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4845 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4847 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4849 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_6 X1 -> auto___def_36 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4848 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current A1 A2. tauto.
Defined.

Remark rem_4850 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> (forall X:term, auto___def_33 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_33 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_713 X1 X2 H);  intros.
  apply (rem_4849 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4851 : auto___def_33 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4852 : auto___def_33 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4853 : auto___def_33 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4854 : auto___def_33 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4856 : auto___def_33 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4857 : auto___def_33 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4859 : forall X1:term, auto___def_33 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4860 : forall X1 X2 X3:term, auto___def_33 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4861 : auto___def_33 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4862 : forall X1:term, auto___def_33 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4863 : forall X1 X2 X3:term, auto___def_33 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4865 : forall X1 X2 X3 X4:term, auto___def_33 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4866 : forall X1 X2 X3 X4:term, auto___def_33 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4867 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X2:term, auto___def_33 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current. fix epsilon_m__def_33_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_4854  H).
   intro H. elim (rem_4851  H).
  intros X1 X2;  exact (rem_4850 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current epsilon_m__def_33_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_4864 X1 X2 H).
   intro H. elim (rem_4857  H).
  intros X1 X2. intro H. elim (rem_4858 X1 X2 H).
   intro H. elim (rem_1926  H).
  intros X1. intro H. elim (rem_4859 X1 H).
  intros X1. intro H. elim (rem_4862 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4863 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4860 X1 X2 X3 H).
   intro H. elim (rem_4853  H).
   intro H. elim (rem_4861  H).
  intros X1. intro H. elim (rem_4855 X1 H).
   intro H. elim (rem_4856  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4865 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4866 X1 X2 X3 X4 H).
   intro H. elim (rem_4852  H).
Defined.

Remark rem_4868 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_32 X1 -> auto___def_33 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current. intros X1 X2.
  cut (auto___def_33 X2 -> auto_knows_current X2). tauto. exact (rem_4867 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current X2).
Defined.

Remark rem_4869 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_32 X1 -> auto___def_33 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4283 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4868 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4870 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_32 X1 -> auto___def_33 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4869 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current A1 A2. tauto.
Defined.

Remark rem_4871 : (forall X:term, auto___def_31 X -> auto_knows_current X)
    -> (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_31 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_715 X1 X2 H);  intros.
  apply (rem_4870 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4872 : auto___def_31 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4873 : auto___def_31 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4874 : auto___def_31 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4875 : auto___def_31 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4877 : auto___def_31 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4878 : auto___def_31 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4879 : auto___def_31 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4881 : forall X1:term, auto___def_31 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4882 : forall X1 X2 X3:term, auto___def_31 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4883 : auto___def_31 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4884 : forall X1:term, auto___def_31 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4885 : forall X1 X2 X3:term, auto___def_31 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4887 : forall X1 X2 X3 X4:term, auto___def_31 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4888 : forall X1 X2 X3 X4:term, auto___def_31 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4889 : (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X2:term, auto___def_31 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  intros epsilon_m__def_29_pknows_current. fix epsilon_m__def_31_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_4875  H).
   intro H. elim (rem_4872  H).
  intros X1 X2;  exact (rem_4871 epsilon_m__def_31_pknows_current epsilon_m__def_29_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_4886 X1 X2 H).
   intro H. elim (rem_4879  H).
  intros X1 X2. intro H. elim (rem_4880 X1 X2 H).
   intro H. elim (rem_4878  H).
  intros X1. intro H. elim (rem_4881 X1 H).
  intros X1. intro H. elim (rem_4884 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4885 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4882 X1 X2 X3 H).
   intro H. elim (rem_4874  H).
   intro H. elim (rem_4883  H).
  intros X1. intro H. elim (rem_4876 X1 H).
   intro H. elim (rem_4877  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4887 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4888 X1 X2 X3 X4 H).
   intro H. elim (rem_4873  H).
Defined.

Remark rem_4890 : (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_31 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_29_pknows_current. intros X1 X2.
  cut (auto___def_31 X2 -> auto_knows_current X2). tauto. exact (rem_4889 epsilon_m__def_29_pknows_current X2).
Defined.

Remark rem_4891 : (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_31 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_29_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4281 epsilon_m__def_29_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4890 epsilon_m__def_29_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4892 : (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_5 X1 -> auto___def_31 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_29_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4891 epsilon_m__def_29_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_29_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_29_pknows_current A1 A2. tauto.
Defined.

Remark rem_4893 : (forall X:term, auto___def_29 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_29_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_721 X1 X2 H);  intros.
  apply (rem_4892 epsilon_m__def_29_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4894 : auto___def_29 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4895 : auto___def_29 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4896 : auto___def_29 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4897 : auto___def_29 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4899 : auto___def_29 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4900 : auto___def_29 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4901 : auto___def_29 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4903 : forall X1:term, auto___def_29 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4904 : forall X1 X2 X3:term, auto___def_29 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4905 : auto___def_29 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4906 : forall X1:term, auto___def_29 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4907 : forall X1 X2 X3:term, auto___def_29 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_4909 : forall X1 X2 X3 X4:term, auto___def_29 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4910 : forall X1 X2 X3 X4:term, auto___def_29 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_4911 : forall X2:term, auto___def_29 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_29_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_4897  H).
   intro H. elim (rem_4894  H).
  intros X1 X2;  exact (rem_4893 epsilon_m__def_29_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_4908 X1 X2 H).
   intro H. elim (rem_4901  H).
  intros X1 X2. intro H. elim (rem_4902 X1 X2 H).
   intro H. elim (rem_4900  H).
  intros X1. intro H. elim (rem_4903 X1 H).
  intros X1. intro H. elim (rem_4906 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4907 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4904 X1 X2 X3 H).
   intro H. elim (rem_4896  H).
   intro H. elim (rem_4905  H).
  intros X1. intro H. elim (rem_4898 X1 H).
   intro H. elim (rem_4899  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4909 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4910 X1 X2 X3 X4 H).
   intro H. elim (rem_4895  H).
Qed.

Remark rem_4912 : forall X1 X2:term, auto___def_29 X2 -> auto___def_30 (key pub X1) -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_29 X2 -> auto_knows_current X2). tauto. exact (rem_4911 X2).
Qed.

Remark rem_4913 : forall X1 X2:term, auto___def_29 X2 -> auto___def_30 (key pub X1) -> (auto___type_9 X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_9 X1). 2:apply (rem_4279 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4912 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_4914 : forall X1 X2:term, auto___def_29 X2 -> auto___def_30 (key pub X1) -> auto___def_56 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_4913 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_56_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4915 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current (key pub X1) -> auto___type_9 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_9_1. Qed.

Remark rem_4916 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current (key pub 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_653 X2).
Qed.

Remark rem_4917 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current (key pub X1) -> (auto___type_9 X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_9 X1). 2:apply (rem_4915 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4916 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_4918 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current (key pub X1) -> auto___def_56 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_4917 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_56_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_4919 : forall X1 X2:term, auto___def_70 X2 -> auto___def_71 (key pub X1) -> auto___type_9 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_9_1. Qed.

Remark rem_4920 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current.  tauto.
Defined.

Remark rem_4921 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current.  case (rem_4920 epsilon_m__type_11_pknows_current). clear  epsilon_m__type_11_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_11_pknows_current. tauto.
Defined.

Remark rem_4922 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> auto___type_11 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intro H. intros.
  elim (rem_2351 H);  intros.
  apply (rem_4921 epsilon_m__type_11_pknows_current);  tauto.
Defined.

Remark rem_4923 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current.  case (rem_4920 epsilon_m__type_11_pknows_current). clear  epsilon_m__type_11_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_11_pknows_current. tauto.
Defined.

Remark rem_4924 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> auto___type_11 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intro H. intros.
  elim (rem_2354 H);  intros.
  apply (rem_4923 epsilon_m__type_11_pknows_current);  tauto.
Defined.

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

Remark rem_4926 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_4925 epsilon_m__type_11_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_4927 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1. intros A1.
  case (rem_4926 epsilon_m__type_11_pknows_current X1 A1). clear  epsilon_m__type_11_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_11_pknows_current A1. tauto.
Defined.

Remark rem_4928 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto___type_11 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1. intro H. intros.
  elim (rem_2359 X1 H);  intros.
  apply (rem_4927 epsilon_m__type_11_pknows_current X1);  tauto.
Defined.

Remark rem_4929 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current.  case (rem_4920 epsilon_m__type_11_pknows_current). clear  epsilon_m__type_11_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_11_pknows_current. tauto.
Defined.

Remark rem_4930 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> auto___type_11 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intro H. intros.
  elim (rem_2362 H);  intros.
  apply (rem_4929 epsilon_m__type_11_pknows_current);  tauto.
Defined.

Remark rem_4931 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current.  case (rem_4920 epsilon_m__type_11_pknows_current). clear  epsilon_m__type_11_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_11_pknows_current. tauto.
Defined.

Remark rem_4932 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> auto___type_11 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intro H. intros.
  elim (rem_2365 H);  intros.
  apply (rem_4931 epsilon_m__type_11_pknows_current);  tauto.
Defined.

Remark rem_4933 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current.  case (rem_4920 epsilon_m__type_11_pknows_current). clear  epsilon_m__type_11_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_11_pknows_current. tauto.
Defined.

Remark rem_4934 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> auto___type_11 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intro H. intros.
  elim (rem_2368 H);  intros.
  apply (rem_4933 epsilon_m__type_11_pknows_current);  tauto.
Defined.

Remark rem_4935 : (forall X:term, auto___type_11 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_4936 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_4935 epsilon_m__type_11_pknows_current X1).
Defined.

Remark rem_4937 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4938 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_4937 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_4939 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_4936 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_4938 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4940 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4939 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_4941 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4942 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_4941 epsilon_m__type_11_pknows_current X1).
Defined.

Remark rem_4943 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4944 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_4943 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_4945 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_4942 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_4944 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4946 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4945 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_4947 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto___def_54 X1 -> auto___def_54 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4948 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_4947 epsilon_m__type_11_pknows_current X1).
Defined.

Remark rem_4949 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X2:term, auto___def_55 X2 -> auto___def_55 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4950 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_4949 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_4951 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_4948 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_4950 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4952 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4951 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_4953 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_11 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_2388 X1 X2 H);  intros.
  apply (rem_4940 epsilon_m__type_11_pknows_current X1 X2);  tauto.
  apply (rem_4946 epsilon_m__type_11_pknows_current X1 X2);  tauto.
  apply (rem_4952 epsilon_m__type_11_pknows_current X1 X2);  tauto.
Defined.

Remark rem_4954 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4955 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_4954 epsilon_m__type_11_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_4956 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1. intros A1.
  case (rem_4955 epsilon_m__type_11_pknows_current X1 A1). clear  epsilon_m__type_11_pknows_current A1. intros. apply trans_knows_current_noncea_current_1;  tauto.
 clear  epsilon_m__type_11_pknows_current A1. tauto.
Defined.

Remark rem_4957 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto___type_11 (noncea_current X1) -> auto_knows_current (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1. intro H. intros.
  elim (rem_2393 X1 H);  intros.
  apply (rem_4956 epsilon_m__type_11_pknows_current X1);  tauto.
Defined.

Remark rem_4958 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2 X3.  case (rem_4920 epsilon_m__type_11_pknows_current). clear  epsilon_m__type_11_pknows_current. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_11_pknows_current. tauto.
Defined.

Remark rem_4959 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_11 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2396 X1 X2 X3 H);  intros.
  apply (rem_4958 epsilon_m__type_11_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_4960 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1.  case (rem_4920 epsilon_m__type_11_pknows_current). clear  epsilon_m__type_11_pknows_current. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_11_pknows_current. tauto.
Defined.

Remark rem_4961 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto___type_11 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1. intro H. intros.
  elim (rem_2399 X1 H);  intros.
  apply (rem_4960 epsilon_m__type_11_pknows_current X1);  tauto.
Defined.

Remark rem_4962 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_4925 epsilon_m__type_11_pknows_current X1).
Defined.

Remark rem_4963 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4964 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_4963 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_4965 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4966 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_4965 epsilon_m__type_11_pknows_current X3).
Defined.

Remark rem_4967 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_4962 epsilon_m__type_11_pknows_current X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_4964 epsilon_m__type_11_pknows_current X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_4966 epsilon_m__type_11_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4968 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4967 epsilon_m__type_11_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_11_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_4969 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_11 (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2408 X1 X2 X3 H);  intros.
  apply (rem_4968 epsilon_m__type_11_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_4970 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto___def_78 X1 -> auto___def_78 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4971 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_4970 epsilon_m__type_11_pknows_current X1).
Defined.

Remark rem_4972 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X2:term, auto___def_79 X2 -> auto___def_79 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4973 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_4972 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_4974 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_4971 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_4973 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4975 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4974 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_4976 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4977 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_4976 epsilon_m__type_11_pknows_current X1).
Defined.

Remark rem_4978 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4979 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_4978 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_4980 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_4977 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_4979 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4981 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4980 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_4982 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4983 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_4982 epsilon_m__type_11_pknows_current X1).
Defined.

Remark rem_4984 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4985 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_4984 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_4986 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_4983 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_4985 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4987 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4986 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_4988 : (forall X:term, auto___type_11 X -> auto_knows_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_11_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_4925 epsilon_m__type_11_pknows_current X1).
Defined.

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

Remark rem_4990 : (forall X:term, auto___type_11 X -> auto_knows_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_11_pknows_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_4989 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_4991 : (forall X:term, auto___type_11 X -> auto_knows_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_11_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_4988 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_4990 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4992 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4991 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_4993 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto___def_70 X1 -> auto___def_70 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4994 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_4993 epsilon_m__type_11_pknows_current X1).
Defined.

Remark rem_4995 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X2:term, auto___def_71 X2 -> auto___def_71 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4996 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_4995 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_4997 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_4994 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_4996 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4998 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4997 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_4999 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1:term, auto___def_89 X1 -> auto___def_89 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5000 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_4999 epsilon_m__type_11_pknows_current X1).
Defined.

Remark rem_5001 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X2:term, auto___def_90 X2 -> auto___def_90 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5002 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_5001 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_5003 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_5000 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_5002 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5004 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5003 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_5005 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_4925 epsilon_m__type_11_pknows_current X1).
Defined.

Remark rem_5006 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X2:term, auto___def_81 X2 -> auto___def_81 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5007 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_5006 epsilon_m__type_11_pknows_current X2).
Defined.

Remark rem_5008 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5005 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_5007 epsilon_m__type_11_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5009 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5008 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_crypt_7;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_5010 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_11 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_2450 X1 X2 H);  intros.
  apply (rem_4975 epsilon_m__type_11_pknows_current X1 X2);  tauto.
  apply (rem_4981 epsilon_m__type_11_pknows_current X1 X2);  tauto.
  apply (rem_4987 epsilon_m__type_11_pknows_current X1 X2);  tauto.
  apply (rem_4992 epsilon_m__type_11_pknows_current X1 X2);  tauto.
  apply (rem_4998 epsilon_m__type_11_pknows_current X1 X2);  tauto.
  apply (rem_5004 epsilon_m__type_11_pknows_current X1 X2);  tauto.
  apply (rem_5009 epsilon_m__type_11_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5011 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_4991 epsilon_m__type_11_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_11_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_11_pknows_current A1 A2. tauto.
Defined.

Remark rem_5012 : (forall X:term, auto___type_11 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_11 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_11_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_2453 X1 X2 H);  intros.
  apply (rem_5011 epsilon_m__type_11_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5013 : forall X1:term, auto___type_11 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_11_pknows_current 1.
  intro X. case X.
  exact (rem_4924 epsilon_m__type_11_pknows_current ).
  exact (rem_4922 epsilon_m__type_11_pknows_current ).
  intros X1 X2;  exact (rem_5012 epsilon_m__type_11_pknows_current X1 X2).
  intros X1 X2;  exact (rem_5010 epsilon_m__type_11_pknows_current X1 X2).
  exact (rem_4934 epsilon_m__type_11_pknows_current ).
  intros X1 X2;  exact (rem_4953 epsilon_m__type_11_pknows_current X1 X2).
  exact (rem_4932 epsilon_m__type_11_pknows_current ).
  intros X1;  exact (rem_4957 epsilon_m__type_11_pknows_current X1).
  intros X1;  exact (rem_4961 epsilon_m__type_11_pknows_current X1).
  intros X1 X2 X3;  exact (rem_4969 epsilon_m__type_11_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_4959 epsilon_m__type_11_pknows_current X1 X2 X3).
   intro H. elim (rem_2456  H).
   intro H. elim (rem_2457  H).
  intros X1;  exact (rem_4928 epsilon_m__type_11_pknows_current X1).
  exact (rem_4930 epsilon_m__type_11_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_2458 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_2459 X1 X2 X3 X4 H).
   intro H. elim (rem_2455  H).
Qed.

Remark rem_5014 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1:term, auto___type_11 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_70_pknows_current. exact (rem_5013).
Defined.

Remark rem_5015 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_72 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_70_pknows_current. intros X1 X2.
  cut (auto___type_11 X1 -> auto_knows_current X1). tauto. exact (rem_5014 epsilon_m__def_70_pknows_current X1).
Defined.

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

Remark rem_5017 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current.  case (rem_5016 epsilon_m__type_12_pknows_current). clear  epsilon_m__type_12_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_12_pknows_current. tauto.
Defined.

Remark rem_5018 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> auto___type_12 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intro H. intros.
  elim (rem_483 H);  intros.
  apply (rem_5017 epsilon_m__type_12_pknows_current);  tauto.
Defined.

Remark rem_5019 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current.  case (rem_5016 epsilon_m__type_12_pknows_current). clear  epsilon_m__type_12_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_12_pknows_current. tauto.
Defined.

Remark rem_5020 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> auto___type_12 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intro H. intros.
  elim (rem_486 H);  intros.
  apply (rem_5019 epsilon_m__type_12_pknows_current);  tauto.
Defined.

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

Remark rem_5022 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_5021 epsilon_m__type_12_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_5023 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1. intros A1.
  case (rem_5022 epsilon_m__type_12_pknows_current X1 A1). clear  epsilon_m__type_12_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_12_pknows_current A1. tauto.
Defined.

Remark rem_5024 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1:term, auto___type_12 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1. intro H. intros.
  elim (rem_491 X1 H);  intros.
  apply (rem_5023 epsilon_m__type_12_pknows_current X1);  tauto.
Defined.

Remark rem_5025 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current.  case (rem_5016 epsilon_m__type_12_pknows_current). clear  epsilon_m__type_12_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_12_pknows_current. tauto.
Defined.

Remark rem_5026 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> auto___type_12 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intro H. intros.
  elim (rem_494 H);  intros.
  apply (rem_5025 epsilon_m__type_12_pknows_current);  tauto.
Defined.

Remark rem_5027 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current.  case (rem_5016 epsilon_m__type_12_pknows_current). clear  epsilon_m__type_12_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_12_pknows_current. tauto.
Defined.

Remark rem_5028 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> auto___type_12 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intro H. intros.
  elim (rem_497 H);  intros.
  apply (rem_5027 epsilon_m__type_12_pknows_current);  tauto.
Defined.

Remark rem_5029 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current.  case (rem_5016 epsilon_m__type_12_pknows_current). clear  epsilon_m__type_12_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_12_pknows_current. tauto.
Defined.

Remark rem_5030 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> auto___type_12 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intro H. intros.
  elim (rem_500 H);  intros.
  apply (rem_5029 epsilon_m__type_12_pknows_current);  tauto.
Defined.

Remark rem_5031 : (forall X:term, auto___type_12 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_5032 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_5031 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5034 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_5033 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5035 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_5032 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_5034 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5036 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5035 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_5038 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_5037 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5040 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_5039 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5041 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_5038 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_5040 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5042 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5041 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_5044 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_5043 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5046 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_5045 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5047 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_5044 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_5046 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5048 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5047 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

Remark rem_5049 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_12 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_520 X1 X2 H);  intros.
  apply (rem_5036 epsilon_m__type_12_pknows_current X1 X2);  tauto.
  apply (rem_5042 epsilon_m__type_12_pknows_current X1 X2);  tauto.
  apply (rem_5048 epsilon_m__type_12_pknows_current X1 X2);  tauto.
Defined.

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

Remark rem_5051 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_5050 epsilon_m__type_12_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_5052 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1. intros A1.
  case (rem_5051 epsilon_m__type_12_pknows_current X1 A1). clear  epsilon_m__type_12_pknows_current A1. intros. apply trans_knows_current_noncea_current_1;  tauto.
 clear  epsilon_m__type_12_pknows_current A1. tauto.
Defined.

Remark rem_5053 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1:term, auto___type_12 (noncea_current X1) -> auto_knows_current (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1. intro H. intros.
  elim (rem_525 X1 H);  intros.
  apply (rem_5052 epsilon_m__type_12_pknows_current X1);  tauto.
Defined.

Remark rem_5054 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2 X3.  case (rem_5016 epsilon_m__type_12_pknows_current). clear  epsilon_m__type_12_pknows_current. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_12_pknows_current. tauto.
Defined.

Remark rem_5055 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_12 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_528 X1 X2 X3 H);  intros.
  apply (rem_5054 epsilon_m__type_12_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_5056 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1.  case (rem_5016 epsilon_m__type_12_pknows_current). clear  epsilon_m__type_12_pknows_current. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_12_pknows_current. tauto.
Defined.

Remark rem_5057 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1:term, auto___type_12 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1. intro H. intros.
  elim (rem_531 X1 H);  intros.
  apply (rem_5056 epsilon_m__type_12_pknows_current X1);  tauto.
Defined.

Remark rem_5058 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_5021 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5060 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_5059 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5061 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5062 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_5061 epsilon_m__type_12_pknows_current X3).
Defined.

Remark rem_5063 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_5058 epsilon_m__type_12_pknows_current X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_5060 epsilon_m__type_12_pknows_current X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_5062 epsilon_m__type_12_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5064 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5063 epsilon_m__type_12_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_12_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_5065 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_12 (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_540 X1 X2 X3 H);  intros.
  apply (rem_5064 epsilon_m__type_12_pknows_current X1 X2 X3);  tauto.
Defined.

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

Remark rem_5067 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_5066 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5069 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_5068 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5070 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_5067 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_5069 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5071 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5070 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_5073 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_5072 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5075 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_5074 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5076 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_5073 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_5075 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5077 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5076 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_5079 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_5078 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5081 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_5080 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5082 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_5079 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_5081 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5083 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5082 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

Remark rem_5084 : (forall X:term, auto___type_12 X -> auto_knows_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_12_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_5021 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5086 : (forall X:term, auto___type_12 X -> auto_knows_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_12_pknows_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_5085 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5087 : (forall X:term, auto___type_12 X -> auto_knows_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_12_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5084 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5086 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5088 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5087 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_5090 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_5089 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5092 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_5091 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5093 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_5090 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_5092 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5094 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5093 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_5096 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_5095 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5098 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_5097 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5099 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_5096 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_5098 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5100 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5099 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

Remark rem_5101 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_5021 epsilon_m__type_12_pknows_current X1).
Defined.

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

Remark rem_5103 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_5102 epsilon_m__type_12_pknows_current X2).
Defined.

Remark rem_5104 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5101 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_5103 epsilon_m__type_12_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5105 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5104 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_crypt_7;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

Remark rem_5106 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_12 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_582 X1 X2 H);  intros.
  apply (rem_5071 epsilon_m__type_12_pknows_current X1 X2);  tauto.
  apply (rem_5077 epsilon_m__type_12_pknows_current X1 X2);  tauto.
  apply (rem_5083 epsilon_m__type_12_pknows_current X1 X2);  tauto.
  apply (rem_5088 epsilon_m__type_12_pknows_current X1 X2);  tauto.
  apply (rem_5094 epsilon_m__type_12_pknows_current X1 X2);  tauto.
  apply (rem_5100 epsilon_m__type_12_pknows_current X1 X2);  tauto.
  apply (rem_5105 epsilon_m__type_12_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5107 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5087 epsilon_m__type_12_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_12_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_12_pknows_current A1 A2. tauto.
Defined.

Remark rem_5108 : (forall X:term, auto___type_12 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_12 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_12_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_585 X1 X2 H);  intros.
  apply (rem_5107 epsilon_m__type_12_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5109 : forall X1:term, auto___type_12 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_12_pknows_current 1.
  intro X. case X.
  exact (rem_5020 epsilon_m__type_12_pknows_current ).
  exact (rem_5018 epsilon_m__type_12_pknows_current ).
  intros X1 X2;  exact (rem_5108 epsilon_m__type_12_pknows_current X1 X2).
  intros X1 X2;  exact (rem_5106 epsilon_m__type_12_pknows_current X1 X2).
  exact (rem_5030 epsilon_m__type_12_pknows_current ).
  intros X1 X2;  exact (rem_5049 epsilon_m__type_12_pknows_current X1 X2).
  exact (rem_5028 epsilon_m__type_12_pknows_current ).
  intros X1;  exact (rem_5053 epsilon_m__type_12_pknows_current X1).
  intros X1;  exact (rem_5057 epsilon_m__type_12_pknows_current X1).
  intros X1 X2 X3;  exact (rem_5065 epsilon_m__type_12_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5055 epsilon_m__type_12_pknows_current X1 X2 X3).
   intro H. elim (rem_588  H).
   intro H. elim (rem_589  H).
  intros X1;  exact (rem_5024 epsilon_m__type_12_pknows_current X1).
  exact (rem_5026 epsilon_m__type_12_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_590 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_591 X1 X2 X3 X4 H).
   intro H. elim (rem_587  H).
Qed.

Remark rem_5110 : (forall X:term, auto___def_72 X -> auto_knows_current X)
    -> forall X1:term, auto___type_12 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_72_pknows_current. exact (rem_5109).
Defined.

Remark rem_5111 : (forall X:term, auto___def_72 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_73 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_72_pknows_current. intros X1 X2.
  cut (auto___type_12 X1 -> auto_knows_current X1). tauto. exact (rem_5110 epsilon_m__def_72_pknows_current X1).
Defined.

Remark rem_5112 : (forall X:term, auto___def_73 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_73_pknows_current.  tauto.
Defined.

Remark rem_5113 : (forall X:term, auto___def_73 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_73_pknows_current.  case (rem_5112 epsilon_m__def_73_pknows_current). clear  epsilon_m__def_73_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__def_73_pknows_current. tauto.
Defined.

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

Remark rem_5115 : (forall X:term, auto___def_73 X -> auto_knows_current X)
    -> auto___def_73 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_73_pknows_current. intro H. intros.
  elim (rem_5114 H);  intros.
  apply (rem_5113 epsilon_m__def_73_pknows_current);  tauto.
Defined.

Remark rem_5116 : auto___def_73 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5117 : auto___def_73 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5118 : auto___def_73 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5119 : auto___def_73 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5121 : auto___def_73 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5122 : auto___def_73 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5124 : forall X1:term, auto___def_73 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5125 : forall X1 X2 X3:term, auto___def_73 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5126 : auto___def_73 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5127 : forall X1:term, auto___def_73 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5128 : forall X1 X2 X3:term, auto___def_73 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5130 : forall X1 X2 X3 X4:term, auto___def_73 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5131 : forall X1 X2 X3 X4:term, auto___def_73 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5132 : forall X2:term, auto___def_73 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_73_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_5119  H).
   intro H. elim (rem_5116  H).
  intros X1 X2. intro H. elim (rem_740 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5129 X1 X2 H).
   intro H. elim (rem_5122  H).
  intros X1 X2. intro H. elim (rem_5123 X1 X2 H).
  exact (rem_5115 epsilon_m__def_73_pknows_current ).
  intros X1. intro H. elim (rem_5124 X1 H).
  intros X1. intro H. elim (rem_5127 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5128 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5125 X1 X2 X3 H).
   intro H. elim (rem_5118  H).
   intro H. elim (rem_5126  H).
  intros X1. intro H. elim (rem_5120 X1 H).
   intro H. elim (rem_5121  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5130 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5131 X1 X2 X3 X4 H).
   intro H. elim (rem_5117  H).
Qed.

Remark rem_5133 : (forall X:term, auto___def_72 X -> auto_knows_current X)
    -> forall X2:term, auto___def_73 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_72_pknows_current. exact (rem_5132).
Defined.

Remark rem_5134 : (forall X:term, auto___def_72 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_73 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_72_pknows_current. intros X1 X2.
  cut (auto___def_73 X2 -> auto_knows_current X2). tauto. exact (rem_5133 epsilon_m__def_72_pknows_current X2).
Defined.

Remark rem_5135 : (forall X:term, auto___def_72 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_73 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_72_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5111 epsilon_m__def_72_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5134 epsilon_m__def_72_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5136 : (forall X:term, auto___def_72 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_12 X1 -> auto___def_73 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_72_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5135 epsilon_m__def_72_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_72_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_72_pknows_current A1 A2. tauto.
Defined.

Remark rem_5137 : (forall X:term, auto___def_72 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_72 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_72_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_743 X1 X2 H);  intros.
  apply (rem_5136 epsilon_m__def_72_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5138 : auto___def_72 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5139 : auto___def_72 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5140 : auto___def_72 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5141 : auto___def_72 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5143 : auto___def_72 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5144 : auto___def_72 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5145 : auto___def_72 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5147 : forall X1:term, auto___def_72 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5148 : forall X1 X2 X3:term, auto___def_72 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5149 : auto___def_72 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5150 : forall X1:term, auto___def_72 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5151 : forall X1 X2 X3:term, auto___def_72 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5153 : forall X1 X2 X3 X4:term, auto___def_72 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5154 : forall X1 X2 X3 X4:term, auto___def_72 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5155 : forall X2:term, auto___def_72 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_72_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_5141  H).
   intro H. elim (rem_5138  H).
  intros X1 X2;  exact (rem_5137 epsilon_m__def_72_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_5152 X1 X2 H).
   intro H. elim (rem_5145  H).
  intros X1 X2. intro H. elim (rem_5146 X1 X2 H).
   intro H. elim (rem_5144  H).
  intros X1. intro H. elim (rem_5147 X1 H).
  intros X1. intro H. elim (rem_5150 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5151 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5148 X1 X2 X3 H).
   intro H. elim (rem_5140  H).
   intro H. elim (rem_5149  H).
  intros X1. intro H. elim (rem_5142 X1 H).
   intro H. elim (rem_5143  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5153 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5154 X1 X2 X3 X4 H).
   intro H. elim (rem_5139  H).
Qed.

Remark rem_5156 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X2:term, auto___def_72 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_70_pknows_current. exact (rem_5155).
Defined.

Remark rem_5157 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_72 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_70_pknows_current. intros X1 X2.
  cut (auto___def_72 X2 -> auto_knows_current X2). tauto. exact (rem_5156 epsilon_m__def_70_pknows_current X2).
Defined.

Remark rem_5158 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_72 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_70_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5015 epsilon_m__def_70_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5157 epsilon_m__def_70_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5159 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_11 X1 -> auto___def_72 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_70_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5158 epsilon_m__def_70_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_70_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_70_pknows_current A1 A2. tauto.
Defined.

Remark rem_5160 : (forall X:term, auto___def_70 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_70_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_752 X1 X2 H);  intros.
  apply (rem_5159 epsilon_m__def_70_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5161 : auto___def_70 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5162 : auto___def_70 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5163 : auto___def_70 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5164 : auto___def_70 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5166 : auto___def_70 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5167 : auto___def_70 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5168 : auto___def_70 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5170 : forall X1:term, auto___def_70 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5171 : forall X1 X2 X3:term, auto___def_70 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5172 : auto___def_70 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5173 : forall X1:term, auto___def_70 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5174 : forall X1 X2 X3:term, auto___def_70 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5176 : forall X1 X2 X3 X4:term, auto___def_70 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5177 : forall X1 X2 X3 X4:term, auto___def_70 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5178 : forall X2:term, auto___def_70 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_70_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_5164  H).
   intro H. elim (rem_5161  H).
  intros X1 X2;  exact (rem_5160 epsilon_m__def_70_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_5175 X1 X2 H).
   intro H. elim (rem_5168  H).
  intros X1 X2. intro H. elim (rem_5169 X1 X2 H).
   intro H. elim (rem_5167  H).
  intros X1. intro H. elim (rem_5170 X1 H).
  intros X1. intro H. elim (rem_5173 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5174 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5171 X1 X2 X3 H).
   intro H. elim (rem_5163  H).
   intro H. elim (rem_5172  H).
  intros X1. intro H. elim (rem_5165 X1 H).
   intro H. elim (rem_5166  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5176 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5177 X1 X2 X3 X4 H).
   intro H. elim (rem_5162  H).
Qed.

Remark rem_5179 : forall X1 X2:term, auto___def_70 X2 -> auto___def_71 (key pub X1) -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_70 X2 -> auto_knows_current X2). tauto. exact (rem_5178 X2).
Qed.

Remark rem_5180 : forall X1 X2:term, auto___def_70 X2 -> auto___def_71 (key pub X1) -> (auto___type_9 X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_9 X1). 2:apply (rem_4919 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5179 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5181 : forall X1 X2:term, auto___def_70 X2 -> auto___def_71 (key pub X1) -> auto___def_56 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5180 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_56_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5182 : forall X1 X2:term, auto___def_83 pub -> auto___def_89 X2 -> auto___def_94 X1 -> auto___def_56 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_83 pub -> False). tauto.
  exact (rem_3326).
Qed.

Remark rem_5183 : forall X1 X2:term, auto___def_83 pub -> auto___def_94 X1 -> auto___def_89 X2 -> auto___def_56 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_83 pub -> auto___def_89 X2 -> auto___def_94 X1 -> auto___def_56 X1 X2). tauto. exact (rem_5182 X1 X2).
Qed.

Remark rem_5184 : forall X1 X2:term, auto___def_89 X2 -> auto___def_90 (key pub X1) -> auto___def_56 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_470 pub X1 H);  intros.
  apply (rem_5183 X1 X2);  tauto.
Qed.

Remark rem_5185 : forall X1 X2:term, auto___def_81 (key pub X1) -> auto_knows_current X2 -> auto___type_9 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___type_9_1. Qed.

Remark rem_5186 : forall X1 X2:term, auto___def_81 (key pub 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_653 X2).
Qed.

Remark rem_5187 : forall X1 X2:term, auto___def_81 (key pub X1) -> auto_knows_current X2 -> (auto___type_9 X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_9 X1). 2:apply (rem_5185 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5186 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5188 : forall X1 X2:term, auto___def_81 (key pub X1) -> auto_knows_current X2 -> auto___def_56 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5187 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_56_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5189 : forall X1 X2:term, auto_knows_current X2 -> auto___def_81 (key pub X1) -> auto___def_56 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_81 (key pub X1) -> auto_knows_current X2 -> auto___def_56 X1 X2). tauto. exact (rem_5188 X1 X2).
Qed.

Remark rem_5190 : forall X1 X2:term, auto_knows_current (crypt X2 (key pub X1)) -> auto___def_56 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_109 X2 (key pub X1) H);  intros.
  apply (rem_3329 X1 X2);  tauto.
  apply (rem_4278 X1 X2);  tauto.
  apply (rem_4914 X1 X2);  tauto.
  apply (rem_4918 X1 X2);  tauto.
  apply (rem_5181 X1 X2);  tauto.
  apply (rem_5184 X1 X2);  tauto.
  apply (rem_5189 X1 X2);  tauto.
Qed.

Remark rem_5191 : forall X1 X2:term, auto___def_70 X1 -> auto___def_71 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_456 X1).
Qed.

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

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

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

Remark rem_5195 : forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_68 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5194 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_68_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5196 : forall X1 X2:term, auto___def_71 X2 -> auto___def_70 X1 -> auto___def_68 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_71 X2 -> auto___def_68 (crypt X1 X2)). tauto. exact (rem_5195 X1 X2).
Qed.

Remark rem_5197 : auto___def_20 sym. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_20_sym_1;  tauto.
 tauto.
Qed.

Remark rem_5198 : auto___def_19 nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_19_nil_1;  tauto.
 tauto.
Qed.

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

Remark rem_5200 : forall X1 X2:term, auto___def_85 X2 -> auto___def_88 X1 -> auto___def_88 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_88 X1 -> auto___def_88 X1). tauto. exact (rem_5199 X1).
Qed.

Remark rem_5201 : forall X1 X2:term, auto___def_85 X2 -> auto___def_88 X1 -> auto___def_85 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_85 X2 -> auto___def_85 X2). tauto. exact (rem_2789 X2).
Qed.

Remark rem_5202 : forall X1 X2:term, auto___def_85 X2 -> auto___def_88 X1 -> (auto___def_88 X1 /\ auto___def_85 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_88 X1). 2:apply (rem_5200 X1 X2);  assumption.
  cut (auto___def_85 X2). 2:apply (rem_5201 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5203 : forall X1 X2:term, auto___def_85 X2 -> auto___def_88 X1 -> auto___def_77 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5202 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_77_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

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

Remark rem_5205 : forall X1 X2:term, auto___def_97 X1 -> auto___def_98 X2 -> auto___def_97 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_97 X1 -> auto___def_97 X1). tauto. exact (rem_5204 X1).
Qed.

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

Remark rem_5207 : forall X1 X2:term, auto___def_97 X1 -> auto___def_98 X2 -> auto___def_98 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_98 X2 -> auto___def_98 X2). tauto. exact (rem_5206 X2).
Qed.

Remark rem_5208 : forall X1 X2:term, auto___def_97 X1 -> auto___def_98 X2 -> (auto___def_97 X1 /\ auto___def_98 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_97 X1). 2:apply (rem_5205 X1 X2);  assumption.
  cut (auto___def_98 X2). 2:apply (rem_5207 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5209 : forall X1 X2:term, auto___def_97 X1 -> auto___def_98 X2 -> auto___def_96 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5208 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_96_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5210 : forall X1 X2:term, auto___def_98 X2 -> auto___def_97 X1 -> auto___def_96 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_97 X1 -> auto___def_98 X2 -> auto___def_96 (cons X1 X2)). tauto. exact (rem_5209 X1 X2).
Qed.

Remark rem_5211 : forall X1 X2 X3 X4:term, auto___def_55 (session_old X1 X2 X3 X4). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4.  case (rem_124). intros. apply trans___def_55_session_old_1;  tauto.
 tauto.
Qed.

Remark rem_5212 : forall X1 X2:term, auto___def_83 X1 -> auto___def_94 X2 -> auto___def_83 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_83 X1 -> auto___def_83 X1). tauto. exact (rem_631 X1).
Qed.

Remark rem_5213 : forall X1 X2:term, auto___def_83 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_465 X2).
Qed.

Remark rem_5214 : forall X1 X2:term, auto___def_83 X1 -> auto___def_94 X2 -> (auto___def_83 X1 /\ auto___def_94 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_83 X1). 2:apply (rem_5212 X1 X2);  assumption.
  cut (auto___def_94 X2). 2:apply (rem_5213 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5215 : forall X1 X2:term, auto___def_83 X1 -> auto___def_94 X2 -> auto___def_90 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5214 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_90_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5216 : forall X1 X2:term, auto___def_94 X2 -> auto___def_83 X1 -> auto___def_90 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_83 X1 -> auto___def_94 X2 -> auto___def_90 (key X1 X2)). tauto. exact (rem_5215 X1 X2).
Qed.

Remark rem_5217 : forall X1 X2 X3 X4 X5:term, auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X4 -> auto_agent X4 -> auto_knows_current X5 -> auto_knows_current X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_449 X1).
Qed.

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

Remark rem_5219 : forall X1 X2 X3 X4 X5:term, auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X4 -> auto_agent X4 -> auto_knows_current X5 -> auto_knows_current X1 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_5218 X2).
Qed.

Remark rem_5220 : forall X1 X2 X3 X4 X5:term, auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X4 -> auto_agent X4 -> auto_knows_current X5 -> auto_knows_current X1 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3 A4 A5 A6.
  cut (auto_knows_current X1). 2:apply (rem_5217 X1 X2 X3 X4 X5);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_5219 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_5221 : forall X1 X2 X3 X4 X5:term, auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X4 -> auto_agent X4 -> auto_knows_current X5 -> auto_knows_current X1 -> auto___def_97 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3 A4 A5 A6.
  case (rem_5220 X1 X2 X3 X4 X5 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans___def_97_crypt_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_5222 : forall X1 X2 X3 X4 X5:term, auto_agent X3 -> auto___type_16 X3 -> auto_knows_current X4 -> auto___type_14 X5 -> auto_knows_current X1 -> auto___def_81 X2 -> auto___def_97 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X5 X3.
  cut (auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X4 -> auto_agent X4 -> auto_knows_current X5 -> auto_knows_current X1 -> auto___def_97 (crypt X1 X2)). tauto. exact (rem_5221 X1 X2 X3 X4 X5).
Qed.

Remark rem_5223 : forall X1 X2 X3 X4 X5:term, auto___def_95 X3 X4 X5 X1 X2 -> auto___def_97 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_3323 X3 X4 X5 X1 X2 H);  intros.
  apply (rem_5222 X1 X2 X3 X4 X5);  tauto.
Qed.

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

Remark rem_5225 : forall X1 X2:term, auto___def_38 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_5224 X1).
Qed.

Remark rem_5226 : forall X1 X2:term, auto___def_38 X2 -> auto___type_7 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_3116 X2).
Qed.

Remark rem_5227 : forall X1 X2:term, auto___def_38 X2 -> auto___type_7 X1 -> (auto___type_7 X1 /\ auto___def_38 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_5225 X1 X2);  assumption.
  cut (auto___def_38 X2). 2:apply (rem_5226 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5228 : forall X1 X2:term, auto___def_38 X2 -> auto___type_7 X1 -> auto___def_37 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5227 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_37_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5229 : forall X1:term, auto_knows_current (key pub X1) -> auto___def_59 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___def_59_1. Qed.

Remark rem_5230 : (forall X:term, auto___def_52 X -> auto___def_2 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_52_p__def_2.  tauto.
Defined.

Remark rem_5231 : (forall X:term, auto___def_52 X -> auto___def_2 X)
    -> auto___def_2 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_52_p__def_2.  case (rem_5230 epsilon_m__def_52_p__def_2). clear  epsilon_m__def_52_p__def_2. intros. apply trans___def_2_i_1;  tauto.
 clear  epsilon_m__def_52_p__def_2. tauto.
Defined.

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

Remark rem_5233 : (forall X:term, auto___def_52 X -> auto___def_2 X)
    -> auto___def_52 i -> auto___def_2 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_52_p__def_2. intro H. intros.
  elim (rem_5232 H);  intros.
  apply (rem_5231 epsilon_m__def_52_p__def_2);  tauto.
Defined.

Remark rem_5234 : auto___def_52 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5235 : auto___def_52 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5236 : auto___def_52 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5237 : auto___def_52 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5239 : auto___def_52 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5240 : auto___def_52 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5242 : forall X1:term, auto___def_52 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5243 : forall X1 X2 X3:term, auto___def_52 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5244 : auto___def_52 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5245 : forall X1:term, auto___def_52 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5246 : forall X1 X2 X3:term, auto___def_52 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5248 : forall X1 X2 X3 X4:term, auto___def_52 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5249 : forall X1 X2 X3 X4:term, auto___def_52 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5250 : forall X1:term, auto___def_52 X1 -> auto___def_2 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_52_p__def_2 1.
  intro X. case X.
   intro H. elim (rem_5237  H).
   intro H. elim (rem_5234  H).
  intros X1 X2. intro H. elim (rem_723 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5247 X1 X2 H).
  exact (rem_5233 epsilon_m__def_52_p__def_2 ).
  intros X1 X2. intro H. elim (rem_5241 X1 X2 H).
   intro H. elim (rem_5240  H).
  intros X1. intro H. elim (rem_5242 X1 H).
  intros X1. intro H. elim (rem_5245 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5246 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5243 X1 X2 X3 H).
   intro H. elim (rem_5236  H).
   intro H. elim (rem_5244  H).
  intros X1. intro H. elim (rem_5238 X1 H).
   intro H. elim (rem_5239  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5248 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5249 X1 X2 X3 X4 H).
   intro H. elim (rem_5235  H).
Qed.

Remark rem_5251 : forall X1:term, auto___def_51 prv -> auto___def_52 X1 -> auto___def_2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1.
  cut (auto___def_52 X1 -> auto___def_2 X1). tauto. exact (rem_5250 X1).
Qed.

Remark rem_5252 : forall X1:term, auto___def_50 prv -> auto___def_2 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_50 prv -> False). tauto.
  exact (rem_2180).
Qed.

Remark rem_5253 : forall X1:term, auto___def_50 prv -> auto___type_9 X1 -> auto___def_2 X1. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1. intros. apply (rem_5252 X1);  assumption.
Qed.

Remark rem_5254 : forall X1:term, auto_knows_old (key prv X1) -> auto___def_2 X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_293 prv X1 H);  intros.
  apply (rem_5251 X1);  tauto.
  apply (rem_5253 X1);  tauto.
Qed.

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

Remark rem_5256 : forall X1 X2:term, auto___def_48 X1 -> auto___def_49 X2 -> auto___def_48 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_48 X1 -> auto___def_48 X1). tauto. exact (rem_5255 X1).
Qed.

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

Remark rem_5258 : forall X1 X2:term, auto___def_48 X1 -> auto___def_49 X2 -> auto___def_49 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_49 X2 -> auto___def_49 X2). tauto. exact (rem_5257 X2).
Qed.

Remark rem_5259 : forall X1 X2:term, auto___def_48 X1 -> auto___def_49 X2 -> (auto___def_48 X1 /\ auto___def_49 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_48 X1). 2:apply (rem_5256 X1 X2);  assumption.
  cut (auto___def_49 X2). 2:apply (rem_5258 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5260 : forall X1 X2:term, auto___def_48 X1 -> auto___def_49 X2 -> auto___def_47 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5259 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_47_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5261 : forall X1 X2:term, auto___def_49 X2 -> auto___def_48 X1 -> auto___def_47 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_48 X1 -> auto___def_49 X2 -> auto___def_47 (cons X1 X2)). tauto. exact (rem_5260 X1 X2).
Qed.

Remark rem_5262 : auto___def_9 nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_9_nil_1;  tauto.
 tauto.
Qed.

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

Remark rem_5264 : forall X1 X2 X3 X4:term, auto___def_81 X2 -> auto___def_85 (cons (nonceb_current X1 X2 X4) nil) -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto___type_15 X3 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_5263 (nonceb_current X1 X2 X4) nil H);  intros.
Qed.

Remark rem_5265 : forall X1 X2 X3 X4:term, auto___type_15 X3 -> auto___def_85 (cons (nonceb_current X1 X2 X4) nil) -> auto___def_81 X2 -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_81 X2 -> auto___def_85 (cons (nonceb_current X1 X2 X4) nil) -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto___type_15 X3 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5264 X1 X2 X3 X4).
Qed.

Remark rem_5266 : forall X1 X2 X3 X4:term, auto___def_81 X2 -> auto___def_82 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_681 X3 (cons (nonceb_current X1 X2 X4) nil) H);  intros.
  apply (rem_5265 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5267 : forall X1 X2 X3 X4:term, auto___def_80 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_683 X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) H);  intros.
  apply (rem_5266 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5268 : forall X1 X2 X3 X4:term, auto___def_80 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_83 sym -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_80 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5267 X1 X2 X3 X4).
Qed.

Remark rem_5269 : forall X1 X2 X3 X4:term, auto___def_83 sym -> auto___def_86 (cons X2 (cons server nil)) -> auto___def_80 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_14 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_80 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_83 sym -> auto___def_86 (cons X2 (cons server nil)) -> auto___type_14 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5268 X1 X2 X3 X4).
Qed.

Remark rem_5270 : forall X1 X2 X3 X4:term, auto___def_79 (key sym (cons X2 (cons server nil))) -> auto___def_80 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_14 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_438 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_5269 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5271 : forall X1 X2 X3 X4:term, auto___type_14 X1 -> auto___def_80 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_79 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_79 (key sym (cons X2 (cons server nil))) -> auto___def_80 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_14 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5270 X1 X2 X3 X4).
Qed.

Remark rem_5272 : forall X1 X2 X3 X4:term, auto___def_78 (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto___def_79 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_689 X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) H);  intros.
  apply (rem_5271 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5273 : forall X1 X2 X3 X4:term, auto___def_32 X3 -> auto___type_4 (nonceb_current X1 X2 X4) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1240 X1 X2 X4 H);  intros.
Qed.

Remark rem_5274 : forall X1 X2 X3 X4:term, auto___def_32 X3 -> auto___def_38 (cons server nil) -> auto___type_4 (nonceb_current X1 X2 X4) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_32 X3 -> auto___type_4 (nonceb_current X1 X2 X4) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5273 X1 X2 X3 X4).
Qed.

Remark rem_5275 : forall X1 X2 X3 X4:term, auto___type_5 X2 -> auto___def_38 (cons server nil) -> auto___def_32 X3 -> auto___type_4 (nonceb_current X1 X2 X4) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_32 X3 -> auto___def_38 (cons server nil) -> auto___type_4 (nonceb_current X1 X2 X4) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5274 X1 X2 X3 X4).
Qed.

Remark rem_5276 : forall X1 X2 X3 X4:term, auto___def_32 X3 -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_4 (nonceb_current X1 X2 X4) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1916 X2 (cons server nil) H);  intros.
  apply (rem_5275 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5277 : forall X1 X2 X3 X4:term, auto___def_32 X3 -> auto___def_36 nil -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_4 (nonceb_current X1 X2 X4) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_32 X3 -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_4 (nonceb_current X1 X2 X4) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5276 X1 X2 X3 X4).
Qed.

Remark rem_5278 : forall X1 X2 X3 X4:term, auto___type_4 (nonceb_current X1 X2 X4) -> auto___def_36 nil -> auto___def_32 X3 -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_32 X3 -> auto___def_36 nil -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_4 (nonceb_current X1 X2 X4) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5277 X1 X2 X3 X4).
Qed.

Remark rem_5279 : forall X1 X2 X3 X4:term, auto___def_32 X3 -> auto___def_44 (cons (nonceb_current X1 X2 X4) nil) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_4190 (nonceb_current X1 X2 X4) nil H);  intros.
  apply (rem_5278 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5280 : forall X1 X2 X3 X4:term, auto___def_43 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_694 X3 (cons (nonceb_current X1 X2 X4) nil) H);  intros.
  apply (rem_5279 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5281 : forall X1 X2 X3 X4:term, auto___type_5 X2 -> auto___def_43 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_43 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_5 X2 -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5280 X1 X2 X3 X4).
Qed.

Remark rem_5282 : forall X1 X2 X3 X4:term, auto___def_42 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_697 X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) H);  intros.
  apply (rem_5281 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5283 : forall X1 X2 X3 X4:term, auto___def_34 sym -> auto___def_42 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_42 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5282 X1 X2 X3 X4).
Qed.

Remark rem_5284 : forall X1 X2 X3 X4:term, auto___def_34 sym -> auto___def_45 (cons X2 (cons server nil)) -> auto___def_42 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_34 sym -> auto___def_42 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_45 (cons X2 (cons server nil)) -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5283 X1 X2 X3 X4).
Qed.

Remark rem_5285 : forall X1 X2 X3 X4:term, auto___def_41 (key sym (cons X2 (cons server nil))) -> auto___def_42 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_284 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_5284 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5286 : forall X1 X2 X3 X4:term, auto___type_7 X1 -> auto___def_42 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_41 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_41 (key sym (cons X2 (cons server nil))) -> auto___def_42 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_7 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5285 X1 X2 X3 X4).
Qed.

Remark rem_5287 : forall X1 X2 X3 X4:term, auto___def_40 (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto___def_41 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_703 X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) H);  intros.
  apply (rem_5286 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5288 : forall X1 X2 X3 X4:term, auto___def_32 X2 -> auto___def_36 (cons (nonceb_current X1 X2 X4) nil) -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto___type_6 X3 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_4182 (nonceb_current X1 X2 X4) nil H);  intros.
Qed.

Remark rem_5289 : forall X1 X2 X3 X4:term, auto___type_6 X3 -> auto___def_36 (cons (nonceb_current X1 X2 X4) nil) -> auto___def_32 X2 -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_32 X2 -> auto___def_36 (cons (nonceb_current X1 X2 X4) nil) -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto___type_6 X3 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5288 X1 X2 X3 X4).
Qed.

Remark rem_5290 : forall X1 X2 X3 X4:term, auto___def_32 X2 -> auto___def_33 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_713 X3 (cons (nonceb_current X1 X2 X4) nil) H);  intros.
  apply (rem_5289 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5291 : forall X1 X2 X3 X4:term, auto___def_31 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_715 X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) H);  intros.
  apply (rem_5290 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5292 : forall X1 X2 X3 X4:term, auto___def_31 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_34 sym -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_31 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5291 X1 X2 X3 X4).
Qed.

Remark rem_5293 : forall X1 X2 X3 X4:term, auto___def_34 sym -> auto___def_37 (cons X2 (cons server nil)) -> auto___def_31 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_5 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_31 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_34 sym -> auto___def_37 (cons X2 (cons server nil)) -> auto___type_5 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5292 X1 X2 X3 X4).
Qed.

Remark rem_5294 : forall X1 X2 X3 X4:term, auto___def_30 (key sym (cons X2 (cons server nil))) -> auto___def_31 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_5 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_302 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_5293 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5295 : forall X1 X2 X3 X4:term, auto___type_5 X1 -> auto___def_31 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_30 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_30 (key sym (cons X2 (cons server nil))) -> auto___def_31 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_5 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5294 X1 X2 X3 X4).
Qed.

Remark rem_5296 : forall X1 X2 X3 X4:term, auto___def_29 (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto___def_30 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_721 X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) H);  intros.
  apply (rem_5295 X1 X2 X3 X4);  tauto.
Qed.

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

Remark rem_5298 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> auto___def_79 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intro H. intros.
  elim (rem_5297 H);  intros.
Defined.

Remark rem_5299 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> auto_knows_current bob -> auto___def_79 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intro H. intros.
  elim (rem_10 H);  intros.
  apply (rem_5298 epsilon_mknows_current_m__def_79);  tauto.
Defined.

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

Remark rem_5301 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> auto___def_79 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intro H. intros.
  elim (rem_5300 H);  intros.
Defined.

Remark rem_5302 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> auto_knows_current alice -> auto___def_79 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intro H. intros.
  elim (rem_13 H);  intros.
  apply (rem_5301 epsilon_mknows_current_m__def_79);  tauto.
Defined.

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

Remark rem_5304 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_79 (s X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1. intro H. intros.
  elim (rem_5303 X1 H);  intros.
Defined.

Remark rem_5305 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto___def_79 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1. intro H. intros.
  elim (rem_18 X1 H);  intros.
  apply (rem_5304 epsilon_mknows_current_m__def_79 X1);  tauto.
Defined.

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

Remark rem_5307 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> auto___def_79 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intro H. intros.
  elim (rem_5306 H);  intros.
Defined.

Remark rem_5308 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> auto_knows_current server -> auto___def_79 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intro H. intros.
  elim (rem_21 H);  intros.
  apply (rem_5307 epsilon_mknows_current_m__def_79);  tauto.
Defined.

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

Remark rem_5310 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> auto___def_79 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intro H. intros.
  elim (rem_5309 H);  intros.
Defined.

Remark rem_5311 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> auto_knows_current nil -> auto___def_79 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intro H. intros.
  elim (rem_24 H);  intros.
  apply (rem_5310 epsilon_mknows_current_m__def_79);  tauto.
Defined.

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

Remark rem_5313 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> auto___def_79 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intro H. intros.
  elim (rem_5312 H);  intros.
Defined.

Remark rem_5314 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> auto_knows_current i -> auto___def_79 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intro H. intros.
  elim (rem_27 H);  intros.
  apply (rem_5313 epsilon_mknows_current_m__def_79);  tauto.
Defined.

Remark rem_5315 : auto___def_83 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5316 : (forall X:term, auto___def_51 X -> auto___def_83 X -> False)
    -> auto___def_83 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_51_m__def_83. intro H. intros.
  elim (rem_5315 H);  intros.
Defined.

Remark rem_5317 : auto___def_51 prv -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5318 : (forall X:term, auto___def_51 X -> auto___def_83 X -> False)
    -> auto___def_51 prv -> auto___def_83 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_51_m__def_83. intro H. intros.
  elim (rem_5317 H);  intros.
  apply (rem_5316 epsilon_m__def_51_m__def_83);  tauto.
Defined.

Remark rem_5319 : auto___def_51 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5320 : auto___def_51 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5322 : auto___def_51 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5323 : auto___def_51 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5324 : auto___def_51 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5326 : forall X1:term, auto___def_51 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5327 : forall X1 X2 X3:term, auto___def_51 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5328 : auto___def_51 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5329 : forall X1:term, auto___def_51 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5330 : forall X1 X2 X3:term, auto___def_51 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_5333 : forall X1 X2 X3 X4:term, auto___def_51 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5334 : forall X1 X2 X3 X4:term, auto___def_51 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5335 : forall X1:term, auto___def_51 X1 -> auto___def_83 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_51_m__def_83 1.
  intro X. case X.
   intro H. elim (rem_5320  H).
   intro H. elim (rem_5319  H).
  intros X1 X2. intro H. elim (rem_5332 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5331 X1 X2 H).
   intro H. elim (rem_5324  H).
  intros X1 X2. intro H. elim (rem_5325 X1 X2 H).
   intro H. elim (rem_5323  H).
  intros X1. intro H. elim (rem_5326 X1 H).
  intros X1. intro H. elim (rem_5329 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5330 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5327 X1 X2 X3 H).
  exact (rem_5318 epsilon_m__def_51_m__def_83 ).
   intro H. elim (rem_5328  H).
  intros X1. intro H. elim (rem_5321 X1 H).
   intro H. elim (rem_5322  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5333 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5334 X1 X2 X3 X4 H).
   intro H. elim (rem_286  H).
Qed.

Remark rem_5336 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_51 X1 -> auto___def_83 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_79. exact (rem_5335).
Defined.

Remark rem_5337 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_52 X2 -> auto___def_51 X1 -> auto___def_83 X1 -> auto___def_86 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_83 X1 -> False). clear  epsilon_mknows_current_m__def_79. tauto.
  exact (rem_5336 epsilon_mknows_current_m__def_79 X1).
Defined.

Remark rem_5338 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (key X1 X2) -> auto___def_51 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_438 X1 X2 H);  intros.
  apply (rem_5337 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5339 : (forall X:term, auto___def_83 X -> auto___def_50 X -> False)
    -> auto___def_50 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_83_m__def_50. intro H. intros.
  elim (rem_289 H);  intros.
Defined.

Remark rem_5340 : auto___def_83 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5341 : (forall X:term, auto___def_83 X -> auto___def_50 X -> False)
    -> auto___def_83 sym -> auto___def_50 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_83_m__def_50. intro H. intros.
  elim (rem_5340 H);  intros.
  apply (rem_5339 epsilon_m__def_83_m__def_50);  tauto.
Defined.

Remark rem_5342 : auto___def_83 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5343 : auto___def_83 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5345 : auto___def_83 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5346 : auto___def_83 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5347 : auto___def_83 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5349 : forall X1:term, auto___def_83 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5350 : forall X1 X2 X3:term, auto___def_83 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5351 : forall X1:term, auto___def_83 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5352 : forall X1 X2 X3:term, auto___def_83 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_5355 : forall X1 X2 X3 X4:term, auto___def_83 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5356 : forall X1 X2 X3 X4:term, auto___def_83 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5357 : forall X1:term, auto___def_83 X1 -> auto___def_50 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_83_m__def_50 1.
  intro X. case X.
   intro H. elim (rem_5343  H).
   intro H. elim (rem_5342  H).
  intros X1 X2. intro H. elim (rem_5354 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5353 X1 X2 H).
   intro H. elim (rem_5347  H).
  intros X1 X2. intro H. elim (rem_5348 X1 X2 H).
   intro H. elim (rem_5346  H).
  intros X1. intro H. elim (rem_5349 X1 H).
  intros X1. intro H. elim (rem_5351 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5352 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5350 X1 X2 X3 H).
   intro H. elim (rem_5315  H).
   intro H. elim (rem_3325  H).
  intros X1. intro H. elim (rem_5344 X1 H).
   intro H. elim (rem_5345  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5355 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5356 X1 X2 X3 X4 H).
  exact (rem_5341 epsilon_m__def_83_m__def_50 ).
Qed.

Remark rem_5358 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_83 X1 -> auto___def_50 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_79. exact (rem_5357).
Defined.

Remark rem_5359 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___type_9 X2 -> auto___def_83 X1 -> auto___def_50 X1 -> auto___def_86 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2.
  cut (auto___def_83 X1 -> auto___def_50 X1 -> False). clear  epsilon_mknows_current_m__def_79. tauto.
  exact (rem_5358 epsilon_mknows_current_m__def_79 X1).
Defined.

Remark rem_5360 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (key X1 X2) -> auto___def_50 X1 -> auto___type_9 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_438 X1 X2 H);  intros.
  apply (rem_5359 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5361 : (forall X:term, auto___def_86 X -> auto___def_55 X -> False)
    -> forall X1 X2:term, auto___def_55 (cons X1 X2) -> auto___type_16 X1 -> auto___def_87 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_86_m__def_55. intros X1 X2. intro H. intros.
  elim (rem_728 X1 X2 H);  intros.
Defined.

Remark rem_5362 : (forall X:term, auto___def_86 X -> auto___def_55 X -> False)
    -> forall X1 X2:term, auto___def_86 (cons X1 X2) -> auto___def_55 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_86_m__def_55. intros X1 X2. intro H. intros.
  elim (rem_677 X1 X2 H);  intros.
  apply (rem_5361 epsilon_m__def_86_m__def_55 X1 X2);  tauto.
Defined.

Remark rem_5363 : auto___def_86 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5364 : auto___def_86 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5365 : auto___def_86 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5366 : auto___def_86 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5368 : auto___def_86 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5369 : auto___def_86 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5370 : auto___def_86 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5372 : forall X1:term, auto___def_86 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5373 : forall X1 X2 X3:term, auto___def_86 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5374 : auto___def_86 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5375 : forall X1:term, auto___def_86 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5376 : forall X1 X2 X3:term, auto___def_86 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5378 : forall X1 X2 X3 X4:term, auto___def_86 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5379 : forall X1 X2 X3 X4:term, auto___def_86 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5380 : forall X2:term, auto___def_86 X2 -> auto___def_55 X2 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_86_m__def_55 1.
  intro X. case X.
   intro H. elim (rem_5366  H).
   intro H. elim (rem_5363  H).
  intros X1 X2;  exact (rem_5362 epsilon_m__def_86_m__def_55 X1 X2).
  intros X1 X2. intro H. elim (rem_5377 X1 X2 H).
   intro H. elim (rem_5370  H).
  intros X1 X2. intro H. elim (rem_5371 X1 X2 H).
   intro H. elim (rem_5369  H).
  intros X1. intro H. elim (rem_5372 X1 H).
  intros X1. intro H. elim (rem_5375 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5376 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5373 X1 X2 X3 H).
   intro H. elim (rem_5365  H).
   intro H. elim (rem_5374  H).
  intros X1. intro H. elim (rem_5367 X1 H).
   intro H. elim (rem_5368  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5378 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5379 X1 X2 X3 X4 H).
   intro H. elim (rem_5364  H).
Qed.

Remark rem_5381 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X2:term, auto___def_86 X2 -> auto___def_55 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_79. exact (rem_5380).
Defined.

Remark rem_5382 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_55 X2 -> auto___def_54 X1 -> auto___def_83 X1 -> auto___def_86 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2.
  cut (auto___def_86 X2 -> auto___def_55 X2 -> False). clear  epsilon_mknows_current_m__def_79. tauto.
  exact (rem_5381 epsilon_mknows_current_m__def_79 X2).
Defined.

Remark rem_5383 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (key X1 X2) -> auto___def_54 X1 -> auto___def_55 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_438 X1 X2 H);  intros.
  apply (rem_5382 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5384 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___def_79 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_47 X1 X2 H);  intros.
  apply (rem_5338 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
  apply (rem_5360 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
  apply (rem_5383 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
Defined.

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

Remark rem_5386 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_79 (noncea_current X1) -> auto_agent X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1. intro H. intros.
  elim (rem_5385 X1 H);  intros.
Defined.

Remark rem_5387 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto_knows_current (noncea_current X1) -> auto___def_79 (noncea_current X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1. intro H. intros.
  elim (rem_52 X1 H);  intros.
  apply (rem_5386 epsilon_mknows_current_m__def_79 X1);  tauto.
Defined.

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

Remark rem_5389 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2 X3:term, auto___def_79 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2 X3. intro H. intros.
  elim (rem_5388 X1 X2 X3 H);  intros.
Defined.

Remark rem_5390 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3) -> auto___def_79 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2 X3. intro H. intros.
  elim (rem_55 X1 X2 X3 H);  intros.
  apply (rem_5389 epsilon_mknows_current_m__def_79 X1 X2 X3);  tauto.
Defined.

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

Remark rem_5392 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto___def_79 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1. intro H. intros.
  elim (rem_5391 X1 H);  intros.
Defined.

Remark rem_5393 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1:term, auto_knows_current (noncea_old X1) -> auto___def_79 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1. intro H. intros.
  elim (rem_58 X1 H);  intros.
  apply (rem_5392 epsilon_mknows_current_m__def_79 X1);  tauto.
Defined.

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

Remark rem_5395 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2 X3:term, auto___def_79 (nonceb_current X1 X2 X3) -> auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2 X3. intro H. intros.
  elim (rem_5394 X1 X2 X3 H);  intros.
Defined.

Remark rem_5396 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto___def_79 (nonceb_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2 X3. intro H. intros.
  elim (rem_67 X1 X2 X3 H);  intros.
  apply (rem_5395 epsilon_mknows_current_m__def_79 X1 X2 X3);  tauto.
Defined.

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

Remark rem_5398 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_78 X1 -> auto___def_79 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_5397 X1 X2 H);  intros.
Defined.

Remark rem_5399 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_40 X1 -> auto___def_41 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_5397 X1 X2 H);  intros.
Defined.

Remark rem_5400 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_29 X1 -> auto___def_30 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_5397 X1 X2 H);  intros.
Defined.

Remark rem_5401 : (forall X:term, auto_knows_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_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_5397 X1 X2 H);  intros.
Defined.

Remark rem_5402 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_70 X1 -> auto___def_71 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_5397 X1 X2 H);  intros.
Defined.

Remark rem_5403 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto___def_89 X1 -> auto___def_90 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_5397 X1 X2 H);  intros.
Defined.

Remark rem_5404 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (crypt X1 X2) -> auto_knows_current X1 -> auto___def_81 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_5397 X1 X2 H);  intros.
Defined.

Remark rem_5405 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_79 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_109 X1 X2 H);  intros.
  apply (rem_5398 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
  apply (rem_5399 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
  apply (rem_5400 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
  apply (rem_5401 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
  apply (rem_5402 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
  apply (rem_5403 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
  apply (rem_5404 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
Defined.

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

Remark rem_5407 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto___def_79 (cons X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_5406 X1 X2 H);  intros.
Defined.

Remark rem_5408 : (forall X:term, auto_knows_current X -> auto___def_79 X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___def_79 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_79. intros X1 X2. intro H. intros.
  elim (rem_112 X1 X2 H);  intros.
  apply (rem_5407 epsilon_mknows_current_m__def_79 X1 X2);  tauto.
Defined.

Remark rem_5409 : forall X1:term, auto_knows_current X1 -> auto___def_79 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_current_m__def_79 1.
  intro X. case X.
  exact (rem_5302 epsilon_mknows_current_m__def_79 ).
  exact (rem_5299 epsilon_mknows_current_m__def_79 ).
  intros X1 X2;  exact (rem_5408 epsilon_mknows_current_m__def_79 X1 X2).
  intros X1 X2;  exact (rem_5405 epsilon_mknows_current_m__def_79 X1 X2).
  exact (rem_5314 epsilon_mknows_current_m__def_79 ).
  intros X1 X2;  exact (rem_5384 epsilon_mknows_current_m__def_79 X1 X2).
  exact (rem_5311 epsilon_mknows_current_m__def_79 ).
  intros X1;  exact (rem_5387 epsilon_mknows_current_m__def_79 X1).
  intros X1;  exact (rem_5393 epsilon_mknows_current_m__def_79 X1).
  intros X1 X2 X3;  exact (rem_5396 epsilon_mknows_current_m__def_79 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5390 epsilon_mknows_current_m__def_79 X1 X2 X3).
   intro H. elim (rem_115  H).
   intro H. elim (rem_116  H).
  intros X1;  exact (rem_5305 epsilon_mknows_current_m__def_79 X1).
  exact (rem_5308 epsilon_mknows_current_m__def_79 ).
  intros X1 X2 X3 X4. intro H. elim (rem_117 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_118 X1 X2 X3 X4 H).
   intro H. elim (rem_114  H).
Qed.

Remark rem_5410 : forall X1 X2 X3 X4:term, auto___def_78 (nonceb_current X1 X2 X4) -> auto___def_79 X3 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5409 X3)). tauto.
Qed.

Remark rem_5411 : auto___def_41 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5412 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> auto___def_41 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intro H. intros.
  elim (rem_5411 H);  intros.
Defined.

Remark rem_5413 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> auto_knows_current bob -> auto___def_41 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intro H. intros.
  elim (rem_10 H);  intros.
  apply (rem_5412 epsilon_mknows_current_m__def_41);  tauto.
Defined.

Remark rem_5414 : auto___def_41 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5415 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> auto___def_41 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intro H. intros.
  elim (rem_5414 H);  intros.
Defined.

Remark rem_5416 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> auto_knows_current alice -> auto___def_41 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intro H. intros.
  elim (rem_13 H);  intros.
  apply (rem_5415 epsilon_mknows_current_m__def_41);  tauto.
Defined.

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

Remark rem_5418 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1:term, auto___def_41 (s X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1. intro H. intros.
  elim (rem_5417 X1 H);  intros.
Defined.

Remark rem_5419 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto___def_41 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1. intro H. intros.
  elim (rem_18 X1 H);  intros.
  apply (rem_5418 epsilon_mknows_current_m__def_41 X1);  tauto.
Defined.

Remark rem_5420 : auto___def_41 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5421 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> auto___def_41 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intro H. intros.
  elim (rem_5420 H);  intros.
Defined.

Remark rem_5422 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> auto_knows_current server -> auto___def_41 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intro H. intros.
  elim (rem_21 H);  intros.
  apply (rem_5421 epsilon_mknows_current_m__def_41);  tauto.
Defined.

Remark rem_5423 : auto___def_41 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5424 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> auto___def_41 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intro H. intros.
  elim (rem_5423 H);  intros.
Defined.

Remark rem_5425 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> auto_knows_current nil -> auto___def_41 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intro H. intros.
  elim (rem_24 H);  intros.
  apply (rem_5424 epsilon_mknows_current_m__def_41);  tauto.
Defined.

Remark rem_5426 : auto___def_41 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5427 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> auto___def_41 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intro H. intros.
  elim (rem_5426 H);  intros.
Defined.

Remark rem_5428 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> auto_knows_current i -> auto___def_41 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intro H. intros.
  elim (rem_27 H);  intros.
  apply (rem_5427 epsilon_mknows_current_m__def_41);  tauto.
Defined.

Remark rem_5429 : (forall X:term, auto___def_34 X -> auto___def_51 X -> False)
    -> auto___def_51 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_34_m__def_51. intro H. intros.
  elim (rem_286 H);  intros.
Defined.

Remark rem_5430 : (forall X:term, auto___def_34 X -> auto___def_51 X -> False)
    -> auto___def_34 sym -> auto___def_51 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_34_m__def_51. intro H. intros.
  elim (rem_1161 H);  intros.
  apply (rem_5429 epsilon_m__def_34_m__def_51);  tauto.
Defined.

Remark rem_5431 : forall X1:term, auto___def_34 X1 -> auto___def_51 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_34_m__def_51 1.
  intro X. case X.
   intro H. elim (rem_1165  H).
   intro H. elim (rem_1163  H).
  intros X1 X2. intro H. elim (rem_1177 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1176 X1 X2 H).
   intro H. elim (rem_1169  H).
  intros X1 X2. intro H. elim (rem_1170 X1 X2 H).
   intro H. elim (rem_1168  H).
  intros X1. intro H. elim (rem_1171 X1 H).
  intros X1. intro H. elim (rem_1174 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1175 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1172 X1 X2 X3 H).
   intro H. elim (rem_1164  H).
   intro H. elim (rem_1173  H).
  intros X1. intro H. elim (rem_1166 X1 H).
   intro H. elim (rem_1167  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1178 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1179 X1 X2 X3 X4 H).
  exact (rem_5430 epsilon_m__def_34_m__def_51 ).
Qed.

Remark rem_5432 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1:term, auto___def_34 X1 -> auto___def_51 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_41. exact (rem_5431).
Defined.

Remark rem_5433 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_52 X2 -> auto___def_51 X1 -> auto___def_34 X1 -> auto___def_45 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_51 X1 -> False). clear  epsilon_mknows_current_m__def_41. tauto.
  exact (rem_5432 epsilon_mknows_current_m__def_41 X1).
Defined.

Remark rem_5434 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (key X1 X2) -> auto___def_51 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_284 X1 X2 H);  intros.
  apply (rem_5433 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
Defined.

Remark rem_5435 : (forall X:term, auto___def_34 X -> auto___def_50 X -> False)
    -> auto___def_50 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_34_m__def_50. intro H. intros.
  elim (rem_289 H);  intros.
Defined.

Remark rem_5436 : (forall X:term, auto___def_34 X -> auto___def_50 X -> False)
    -> auto___def_34 sym -> auto___def_50 sym -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_34_m__def_50. intro H. intros.
  elim (rem_1161 H);  intros.
  apply (rem_5435 epsilon_m__def_34_m__def_50);  tauto.
Defined.

Remark rem_5437 : forall X1:term, auto___def_34 X1 -> auto___def_50 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_34_m__def_50 1.
  intro X. case X.
   intro H. elim (rem_1165  H).
   intro H. elim (rem_1163  H).
  intros X1 X2. intro H. elim (rem_1177 X1 X2 H).
  intros X1 X2. intro H. elim (rem_1176 X1 X2 H).
   intro H. elim (rem_1169  H).
  intros X1 X2. intro H. elim (rem_1170 X1 X2 H).
   intro H. elim (rem_1168  H).
  intros X1. intro H. elim (rem_1171 X1 H).
  intros X1. intro H. elim (rem_1174 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1175 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1172 X1 X2 X3 H).
   intro H. elim (rem_1164  H).
   intro H. elim (rem_1173  H).
  intros X1. intro H. elim (rem_1166 X1 H).
   intro H. elim (rem_1167  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1178 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1179 X1 X2 X3 X4 H).
  exact (rem_5436 epsilon_m__def_34_m__def_50 ).
Qed.

Remark rem_5438 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1:term, auto___def_34 X1 -> auto___def_50 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_41. exact (rem_5437).
Defined.

Remark rem_5439 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___type_9 X2 -> auto___def_34 X1 -> auto___def_50 X1 -> auto___def_45 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_50 X1 -> False). clear  epsilon_mknows_current_m__def_41. tauto.
  exact (rem_5438 epsilon_mknows_current_m__def_41 X1).
Defined.

Remark rem_5440 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (key X1 X2) -> auto___def_50 X1 -> auto___type_9 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_284 X1 X2 H);  intros.
  apply (rem_5439 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
Defined.

Remark rem_5441 : (forall X:term, auto___def_45 X -> auto___def_55 X -> False)
    -> forall X1 X2:term, auto___def_55 (cons X1 X2) -> auto___type_5 X1 -> auto___def_38 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_45_m__def_55. intros X1 X2. intro H. intros.
  elim (rem_728 X1 X2 H);  intros.
Defined.

Remark rem_5442 : (forall X:term, auto___def_45 X -> auto___def_55 X -> False)
    -> forall X1 X2:term, auto___def_45 (cons X1 X2) -> auto___def_55 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_45_m__def_55. intros X1 X2. intro H. intros.
  elim (rem_1916 X1 X2 H);  intros.
  apply (rem_5441 epsilon_m__def_45_m__def_55 X1 X2);  tauto.
Defined.

Remark rem_5443 : auto___def_45 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5444 : auto___def_45 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5445 : auto___def_45 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5446 : auto___def_45 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5448 : auto___def_45 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5449 : auto___def_45 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5450 : auto___def_45 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5452 : forall X1:term, auto___def_45 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5453 : forall X1 X2 X3:term, auto___def_45 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5454 : auto___def_45 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5455 : forall X1:term, auto___def_45 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5456 : forall X1 X2 X3:term, auto___def_45 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5458 : forall X1 X2 X3 X4:term, auto___def_45 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5459 : forall X1 X2 X3 X4:term, auto___def_45 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5460 : forall X2:term, auto___def_45 X2 -> auto___def_55 X2 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_45_m__def_55 1.
  intro X. case X.
   intro H. elim (rem_5446  H).
   intro H. elim (rem_5443  H).
  intros X1 X2;  exact (rem_5442 epsilon_m__def_45_m__def_55 X1 X2).
  intros X1 X2. intro H. elim (rem_5457 X1 X2 H).
   intro H. elim (rem_5450  H).
  intros X1 X2. intro H. elim (rem_5451 X1 X2 H).
   intro H. elim (rem_5449  H).
  intros X1. intro H. elim (rem_5452 X1 H).
  intros X1. intro H. elim (rem_5455 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5456 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5453 X1 X2 X3 H).
   intro H. elim (rem_5445  H).
   intro H. elim (rem_5454  H).
  intros X1. intro H. elim (rem_5447 X1 H).
   intro H. elim (rem_5448  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5458 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5459 X1 X2 X3 X4 H).
   intro H. elim (rem_5444  H).
Qed.

Remark rem_5461 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X2:term, auto___def_45 X2 -> auto___def_55 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_41. exact (rem_5460).
Defined.

Remark rem_5462 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_55 X2 -> auto___def_54 X1 -> auto___def_34 X1 -> auto___def_45 X2 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2.
  cut (auto___def_45 X2 -> auto___def_55 X2 -> False). clear  epsilon_mknows_current_m__def_41. tauto.
  exact (rem_5461 epsilon_mknows_current_m__def_41 X2).
Defined.

Remark rem_5463 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (key X1 X2) -> auto___def_54 X1 -> auto___def_55 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_284 X1 X2 H);  intros.
  apply (rem_5462 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
Defined.

Remark rem_5464 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___def_41 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_47 X1 X2 H);  intros.
  apply (rem_5434 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
  apply (rem_5440 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
  apply (rem_5463 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
Defined.

Remark rem_5465 : forall X1:term, auto___def_41 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5466 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1:term, auto___def_41 (noncea_current X1) -> auto_agent X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1. intro H. intros.
  elim (rem_5465 X1 H);  intros.
Defined.

Remark rem_5467 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1:term, auto_knows_current (noncea_current X1) -> auto___def_41 (noncea_current X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1. intro H. intros.
  elim (rem_52 X1 H);  intros.
  apply (rem_5466 epsilon_mknows_current_m__def_41 X1);  tauto.
Defined.

Remark rem_5468 : forall X1 X2 X3:term, auto___def_41 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5469 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2 X3:term, auto___def_41 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2 X3. intro H. intros.
  elim (rem_5468 X1 X2 X3 H);  intros.
Defined.

Remark rem_5470 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3) -> auto___def_41 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2 X3. intro H. intros.
  elim (rem_55 X1 X2 X3 H);  intros.
  apply (rem_5469 epsilon_mknows_current_m__def_41 X1 X2 X3);  tauto.
Defined.

Remark rem_5471 : forall X1:term, auto___def_41 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5472 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1:term, auto___def_41 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1. intro H. intros.
  elim (rem_5471 X1 H);  intros.
Defined.

Remark rem_5473 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1:term, auto_knows_current (noncea_old X1) -> auto___def_41 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1. intro H. intros.
  elim (rem_58 X1 H);  intros.
  apply (rem_5472 epsilon_mknows_current_m__def_41 X1);  tauto.
Defined.

Remark rem_5474 : forall X1 X2 X3:term, auto___def_41 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5475 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2 X3:term, auto___def_41 (nonceb_current X1 X2 X3) -> auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2 X3. intro H. intros.
  elim (rem_5474 X1 X2 X3 H);  intros.
Defined.

Remark rem_5476 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto___def_41 (nonceb_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2 X3. intro H. intros.
  elim (rem_67 X1 X2 X3 H);  intros.
  apply (rem_5475 epsilon_mknows_current_m__def_41 X1 X2 X3);  tauto.
Defined.

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

Remark rem_5478 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (crypt X1 X2) -> auto___def_78 X1 -> auto___def_79 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_5477 X1 X2 H);  intros.
Defined.

Remark rem_5479 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (crypt X1 X2) -> auto___def_40 X1 -> auto___def_41 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_5477 X1 X2 H);  intros.
Defined.

Remark rem_5480 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (crypt X1 X2) -> auto___def_29 X1 -> auto___def_30 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_5477 X1 X2 H);  intros.
Defined.

Remark rem_5481 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_5477 X1 X2 H);  intros.
Defined.

Remark rem_5482 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (crypt X1 X2) -> auto___def_70 X1 -> auto___def_71 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_5477 X1 X2 H);  intros.
Defined.

Remark rem_5483 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (crypt X1 X2) -> auto___def_89 X1 -> auto___def_90 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_5477 X1 X2 H);  intros.
Defined.

Remark rem_5484 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (crypt X1 X2) -> auto_knows_current X1 -> auto___def_81 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_5477 X1 X2 H);  intros.
Defined.

Remark rem_5485 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_41 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_109 X1 X2 H);  intros.
  apply (rem_5478 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
  apply (rem_5479 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
  apply (rem_5480 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
  apply (rem_5481 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
  apply (rem_5482 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
  apply (rem_5483 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
  apply (rem_5484 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
Defined.

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

Remark rem_5487 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto___def_41 (cons X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_5486 X1 X2 H);  intros.
Defined.

Remark rem_5488 : (forall X:term, auto_knows_current X -> auto___def_41 X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___def_41 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_41. intros X1 X2. intro H. intros.
  elim (rem_112 X1 X2 H);  intros.
  apply (rem_5487 epsilon_mknows_current_m__def_41 X1 X2);  tauto.
Defined.

Remark rem_5489 : forall X1:term, auto_knows_current X1 -> auto___def_41 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_current_m__def_41 1.
  intro X. case X.
  exact (rem_5416 epsilon_mknows_current_m__def_41 ).
  exact (rem_5413 epsilon_mknows_current_m__def_41 ).
  intros X1 X2;  exact (rem_5488 epsilon_mknows_current_m__def_41 X1 X2).
  intros X1 X2;  exact (rem_5485 epsilon_mknows_current_m__def_41 X1 X2).
  exact (rem_5428 epsilon_mknows_current_m__def_41 ).
  intros X1 X2;  exact (rem_5464 epsilon_mknows_current_m__def_41 X1 X2).
  exact (rem_5425 epsilon_mknows_current_m__def_41 ).
  intros X1;  exact (rem_5467 epsilon_mknows_current_m__def_41 X1).
  intros X1;  exact (rem_5473 epsilon_mknows_current_m__def_41 X1).
  intros X1 X2 X3;  exact (rem_5476 epsilon_mknows_current_m__def_41 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5470 epsilon_mknows_current_m__def_41 X1 X2 X3).
   intro H. elim (rem_115  H).
   intro H. elim (rem_116  H).
  intros X1;  exact (rem_5419 epsilon_mknows_current_m__def_41 X1).
  exact (rem_5422 epsilon_mknows_current_m__def_41 ).
  intros X1 X2 X3 X4. intro H. elim (rem_117 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_118 X1 X2 X3 X4 H).
   intro H. elim (rem_114  H).
Qed.

Remark rem_5490 : forall X1 X2 X3 X4:term, auto___def_40 (nonceb_current X1 X2 X4) -> auto___def_41 X3 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5489 X3)). tauto.
Qed.

Remark rem_5491 : auto___def_30 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5492 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> auto___def_30 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intro H. intros.
  elim (rem_5491 H);  intros.
Defined.

Remark rem_5493 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> auto_knows_current bob -> auto___def_30 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intro H. intros.
  elim (rem_10 H);  intros.
  apply (rem_5492 epsilon_mknows_current_m__def_30);  tauto.
Defined.

Remark rem_5494 : auto___def_30 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5495 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> auto___def_30 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intro H. intros.
  elim (rem_5494 H);  intros.
Defined.

Remark rem_5496 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> auto_knows_current alice -> auto___def_30 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intro H. intros.
  elim (rem_13 H);  intros.
  apply (rem_5495 epsilon_mknows_current_m__def_30);  tauto.
Defined.

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

Remark rem_5498 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1:term, auto___def_30 (s X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1. intro H. intros.
  elim (rem_5497 X1 H);  intros.
Defined.

Remark rem_5499 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto___def_30 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1. intro H. intros.
  elim (rem_18 X1 H);  intros.
  apply (rem_5498 epsilon_mknows_current_m__def_30 X1);  tauto.
Defined.

Remark rem_5500 : auto___def_30 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5501 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> auto___def_30 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intro H. intros.
  elim (rem_5500 H);  intros.
Defined.

Remark rem_5502 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> auto_knows_current server -> auto___def_30 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intro H. intros.
  elim (rem_21 H);  intros.
  apply (rem_5501 epsilon_mknows_current_m__def_30);  tauto.
Defined.

Remark rem_5503 : auto___def_30 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5504 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> auto___def_30 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intro H. intros.
  elim (rem_5503 H);  intros.
Defined.

Remark rem_5505 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> auto_knows_current nil -> auto___def_30 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intro H. intros.
  elim (rem_24 H);  intros.
  apply (rem_5504 epsilon_mknows_current_m__def_30);  tauto.
Defined.

Remark rem_5506 : auto___def_30 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5507 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> auto___def_30 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intro H. intros.
  elim (rem_5506 H);  intros.
Defined.

Remark rem_5508 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> auto_knows_current i -> auto___def_30 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intro H. intros.
  elim (rem_27 H);  intros.
  apply (rem_5507 epsilon_mknows_current_m__def_30);  tauto.
Defined.

Remark rem_5509 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1:term, auto___def_34 X1 -> auto___def_51 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_30. exact (rem_5431).
Defined.

Remark rem_5510 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_52 X2 -> auto___def_51 X1 -> auto___def_37 X2 -> auto___def_34 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_51 X1 -> False). clear  epsilon_mknows_current_m__def_30. tauto.
  exact (rem_5509 epsilon_mknows_current_m__def_30 X1).
Defined.

Remark rem_5511 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (key X1 X2) -> auto___def_51 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_302 X1 X2 H);  intros.
  apply (rem_5510 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
Defined.

Remark rem_5512 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1:term, auto___def_34 X1 -> auto___def_50 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_30. exact (rem_5437).
Defined.

Remark rem_5513 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___type_9 X2 -> auto___def_37 X2 -> auto___def_34 X1 -> auto___def_50 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_50 X1 -> False). clear  epsilon_mknows_current_m__def_30. tauto.
  exact (rem_5512 epsilon_mknows_current_m__def_30 X1).
Defined.

Remark rem_5514 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (key X1 X2) -> auto___def_50 X1 -> auto___type_9 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_302 X1 X2 H);  intros.
  apply (rem_5513 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
Defined.

Remark rem_5515 : (forall X:term, auto___def_37 X -> auto___def_55 X -> False)
    -> forall X1 X2:term, auto___def_55 (cons X1 X2) -> auto___type_7 X1 -> auto___def_38 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_37_m__def_55. intros X1 X2. intro H. intros.
  elim (rem_728 X1 X2 H);  intros.
Defined.

Remark rem_5516 : (forall X:term, auto___def_37 X -> auto___def_55 X -> False)
    -> forall X1 X2:term, auto___def_37 (cons X1 X2) -> auto___def_55 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_37_m__def_55. intros X1 X2. intro H. intros.
  elim (rem_709 X1 X2 H);  intros.
  apply (rem_5515 epsilon_m__def_37_m__def_55 X1 X2);  tauto.
Defined.

Remark rem_5517 : auto___def_37 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5518 : auto___def_37 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5519 : auto___def_37 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5520 : auto___def_37 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5522 : auto___def_37 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5523 : auto___def_37 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5524 : auto___def_37 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5526 : forall X1:term, auto___def_37 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5527 : forall X1 X2 X3:term, auto___def_37 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5528 : auto___def_37 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5529 : forall X1:term, auto___def_37 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5530 : forall X1 X2 X3:term, auto___def_37 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5532 : forall X1 X2 X3 X4:term, auto___def_37 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5533 : forall X1 X2 X3 X4:term, auto___def_37 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5534 : forall X2:term, auto___def_37 X2 -> auto___def_55 X2 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_37_m__def_55 1.
  intro X. case X.
   intro H. elim (rem_5520  H).
   intro H. elim (rem_5517  H).
  intros X1 X2;  exact (rem_5516 epsilon_m__def_37_m__def_55 X1 X2).
  intros X1 X2. intro H. elim (rem_5531 X1 X2 H).
   intro H. elim (rem_5524  H).
  intros X1 X2. intro H. elim (rem_5525 X1 X2 H).
   intro H. elim (rem_5523  H).
  intros X1. intro H. elim (rem_5526 X1 H).
  intros X1. intro H. elim (rem_5529 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5530 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5527 X1 X2 X3 H).
   intro H. elim (rem_5519  H).
   intro H. elim (rem_5528  H).
  intros X1. intro H. elim (rem_5521 X1 H).
   intro H. elim (rem_5522  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5532 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5533 X1 X2 X3 X4 H).
   intro H. elim (rem_5518  H).
Qed.

Remark rem_5535 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X2:term, auto___def_37 X2 -> auto___def_55 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_30. exact (rem_5534).
Defined.

Remark rem_5536 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_55 X2 -> auto___def_54 X1 -> auto___def_37 X2 -> auto___def_34 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2.
  cut (auto___def_37 X2 -> auto___def_55 X2 -> False). clear  epsilon_mknows_current_m__def_30. tauto.
  exact (rem_5535 epsilon_mknows_current_m__def_30 X2).
Defined.

Remark rem_5537 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (key X1 X2) -> auto___def_54 X1 -> auto___def_55 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_302 X1 X2 H);  intros.
  apply (rem_5536 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
Defined.

Remark rem_5538 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___def_30 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_47 X1 X2 H);  intros.
  apply (rem_5511 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
  apply (rem_5514 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
  apply (rem_5537 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
Defined.

Remark rem_5539 : forall X1:term, auto___def_30 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5540 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1:term, auto___def_30 (noncea_current X1) -> auto_agent X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1. intro H. intros.
  elim (rem_5539 X1 H);  intros.
Defined.

Remark rem_5541 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1:term, auto_knows_current (noncea_current X1) -> auto___def_30 (noncea_current X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1. intro H. intros.
  elim (rem_52 X1 H);  intros.
  apply (rem_5540 epsilon_mknows_current_m__def_30 X1);  tauto.
Defined.

Remark rem_5542 : forall X1 X2 X3:term, auto___def_30 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5543 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2 X3:term, auto___def_30 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2 X3. intro H. intros.
  elim (rem_5542 X1 X2 X3 H);  intros.
Defined.

Remark rem_5544 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3) -> auto___def_30 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2 X3. intro H. intros.
  elim (rem_55 X1 X2 X3 H);  intros.
  apply (rem_5543 epsilon_mknows_current_m__def_30 X1 X2 X3);  tauto.
Defined.

Remark rem_5545 : forall X1:term, auto___def_30 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5546 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1:term, auto___def_30 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1. intro H. intros.
  elim (rem_5545 X1 H);  intros.
Defined.

Remark rem_5547 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1:term, auto_knows_current (noncea_old X1) -> auto___def_30 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1. intro H. intros.
  elim (rem_58 X1 H);  intros.
  apply (rem_5546 epsilon_mknows_current_m__def_30 X1);  tauto.
Defined.

Remark rem_5548 : forall X1 X2 X3:term, auto___def_30 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5549 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2 X3:term, auto___def_30 (nonceb_current X1 X2 X3) -> auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2 X3. intro H. intros.
  elim (rem_5548 X1 X2 X3 H);  intros.
Defined.

Remark rem_5550 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto___def_30 (nonceb_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2 X3. intro H. intros.
  elim (rem_67 X1 X2 X3 H);  intros.
  apply (rem_5549 epsilon_mknows_current_m__def_30 X1 X2 X3);  tauto.
Defined.

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

Remark rem_5552 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (crypt X1 X2) -> auto___def_78 X1 -> auto___def_79 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_5551 X1 X2 H);  intros.
Defined.

Remark rem_5553 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (crypt X1 X2) -> auto___def_40 X1 -> auto___def_41 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_5551 X1 X2 H);  intros.
Defined.

Remark rem_5554 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (crypt X1 X2) -> auto___def_29 X1 -> auto___def_30 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_5551 X1 X2 H);  intros.
Defined.

Remark rem_5555 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_5551 X1 X2 H);  intros.
Defined.

Remark rem_5556 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (crypt X1 X2) -> auto___def_70 X1 -> auto___def_71 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_5551 X1 X2 H);  intros.
Defined.

Remark rem_5557 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (crypt X1 X2) -> auto___def_89 X1 -> auto___def_90 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_5551 X1 X2 H);  intros.
Defined.

Remark rem_5558 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (crypt X1 X2) -> auto_knows_current X1 -> auto___def_81 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_5551 X1 X2 H);  intros.
Defined.

Remark rem_5559 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_30 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_109 X1 X2 H);  intros.
  apply (rem_5552 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
  apply (rem_5553 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
  apply (rem_5554 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
  apply (rem_5555 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
  apply (rem_5556 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
  apply (rem_5557 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
  apply (rem_5558 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
Defined.

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

Remark rem_5561 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto___def_30 (cons X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_5560 X1 X2 H);  intros.
Defined.

Remark rem_5562 : (forall X:term, auto_knows_current X -> auto___def_30 X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___def_30 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_30. intros X1 X2. intro H. intros.
  elim (rem_112 X1 X2 H);  intros.
  apply (rem_5561 epsilon_mknows_current_m__def_30 X1 X2);  tauto.
Defined.

Remark rem_5563 : forall X1:term, auto_knows_current X1 -> auto___def_30 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_current_m__def_30 1.
  intro X. case X.
  exact (rem_5496 epsilon_mknows_current_m__def_30 ).
  exact (rem_5493 epsilon_mknows_current_m__def_30 ).
  intros X1 X2;  exact (rem_5562 epsilon_mknows_current_m__def_30 X1 X2).
  intros X1 X2;  exact (rem_5559 epsilon_mknows_current_m__def_30 X1 X2).
  exact (rem_5508 epsilon_mknows_current_m__def_30 ).
  intros X1 X2;  exact (rem_5538 epsilon_mknows_current_m__def_30 X1 X2).
  exact (rem_5505 epsilon_mknows_current_m__def_30 ).
  intros X1;  exact (rem_5541 epsilon_mknows_current_m__def_30 X1).
  intros X1;  exact (rem_5547 epsilon_mknows_current_m__def_30 X1).
  intros X1 X2 X3;  exact (rem_5550 epsilon_mknows_current_m__def_30 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5544 epsilon_mknows_current_m__def_30 X1 X2 X3).
   intro H. elim (rem_115  H).
   intro H. elim (rem_116  H).
  intros X1;  exact (rem_5499 epsilon_mknows_current_m__def_30 X1).
  exact (rem_5502 epsilon_mknows_current_m__def_30 ).
  intros X1 X2 X3 X4. intro H. elim (rem_117 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_118 X1 X2 X3 X4 H).
   intro H. elim (rem_114  H).
Qed.

Remark rem_5564 : forall X1 X2 X3 X4:term, auto___def_29 (nonceb_current X1 X2 X4) -> auto___def_30 X3 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5563 X3)). tauto.
Qed.

Remark rem_5565 : forall X1 X2 X3 X4:term, auto___def_52 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_723 X2 (cons server nil) H);  intros.
Qed.

Remark rem_5566 : forall X1 X2 X3 X4:term, auto___def_51 sym -> auto___def_52 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_52 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5565 X1 X2 X3 X4).
Qed.

Remark rem_5567 : forall X1 X2 X3 X4:term, auto___def_50 sym -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_50 sym -> False). tauto.
  exact (rem_290).
Qed.

Remark rem_5568 : forall X1 X2 X3 X4:term, auto___def_50 sym -> auto___type_9 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2 X3 X4. intros. apply (rem_5567 X1 X2 X3 X4);  assumption.
Qed.

Remark rem_5569 : forall X1 X2 X3 X4:term, auto___def_55 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_728 X2 (cons server nil) H);  intros.
Qed.

Remark rem_5570 : forall X1 X2 X3 X4:term, auto___def_54 sym -> auto___def_55 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_55 (cons X2 (cons server nil)) -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5569 X1 X2 X3 X4).
Qed.

Remark rem_5571 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_47 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_5566 X1 X2 X3 X4);  tauto.
  apply (rem_5568 X1 X2 X3 X4);  tauto.
  apply (rem_5570 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5572 : forall X1 X2 X3 X4:term, auto_knows_current (nonceb_current X1 X2 X4) -> auto_knows_current X3 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5571 X1 X2 X3 X4).
Qed.

Remark rem_5573 : auto___def_71 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5574 : (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_5573 H);  intros.
Defined.

Remark rem_5575 : (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_10 H);  intros.
  apply (rem_5574 epsilon_mknows_current_m__def_71);  tauto.
Defined.

Remark rem_5576 : auto___def_71 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5577 : (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_5576 H);  intros.
Defined.

Remark rem_5578 : (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_13 H);  intros.
  apply (rem_5577 epsilon_mknows_current_m__def_71);  tauto.
Defined.

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

Remark rem_5580 : (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_5579 X1 H);  intros.
Defined.

Remark rem_5581 : (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_18 X1 H);  intros.
  apply (rem_5580 epsilon_mknows_current_m__def_71 X1);  tauto.
Defined.

Remark rem_5582 : auto___def_71 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5583 : (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_5582 H);  intros.
Defined.

Remark rem_5584 : (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_21 H);  intros.
  apply (rem_5583 epsilon_mknows_current_m__def_71);  tauto.
Defined.

Remark rem_5585 : auto___def_71 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5586 : (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_5585 H);  intros.
Defined.

Remark rem_5587 : (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_24 H);  intros.
  apply (rem_5586 epsilon_mknows_current_m__def_71);  tauto.
Defined.

Remark rem_5588 : auto___def_71 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5589 : (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_5588 H);  intros.
Defined.

Remark rem_5590 : (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_27 H);  intros.
  apply (rem_5589 epsilon_mknows_current_m__def_71);  tauto.
Defined.

Remark rem_5591 : (forall X:term, auto___def_51 X -> auto___def_20 X -> False)
    -> auto___def_20 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_51_m__def_20. intro H. intros.
  elim (rem_2164 H);  intros.
Defined.

Remark rem_5592 : (forall X:term, auto___def_51 X -> auto___def_20 X -> False)
    -> auto___def_51 prv -> auto___def_20 prv -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_51_m__def_20. intro H. intros.
  elim (rem_5317 H);  intros.
  apply (rem_5591 epsilon_m__def_51_m__def_20);  tauto.
Defined.

Remark rem_5593 : forall X1:term, auto___def_51 X1 -> auto___def_20 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_51_m__def_20 1.
  intro X. case X.
   intro H. elim (rem_5320  H).
   intro H. elim (rem_5319  H).
  intros X1 X2. intro H. elim (rem_5332 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5331 X1 X2 H).
   intro H. elim (rem_5324  H).
  intros X1 X2. intro H. elim (rem_5325 X1 X2 H).
   intro H. elim (rem_5323  H).
  intros X1. intro H. elim (rem_5326 X1 H).
  intros X1. intro H. elim (rem_5329 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5330 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5327 X1 X2 X3 H).
  exact (rem_5592 epsilon_m__def_51_m__def_20 ).
   intro H. elim (rem_5328  H).
  intros X1. intro H. elim (rem_5321 X1 H).
   intro H. elim (rem_5322  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5333 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5334 X1 X2 X3 X4 H).
   intro H. elim (rem_286  H).
Qed.

Remark rem_5594 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_51 X1 -> auto___def_20 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_71. exact (rem_5593).
Defined.

Remark rem_5595 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_21 X2 -> auto___def_52 X2 -> auto___def_20 X1 -> auto___def_51 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_20 X1 -> False). clear  epsilon_mknows_current_m__def_71. tauto.
  exact (rem_5594 epsilon_mknows_current_m__def_71 X1).
Defined.

Remark rem_5596 : (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___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_461 X1 X2 H);  intros.
  apply (rem_5595 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5597 : auto___def_20 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5598 : (forall X:term, auto___def_50 X -> auto___def_20 X -> False)
    -> auto___def_20 pub -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_50_m__def_20. intro H. intros.
  elim (rem_5597 H);  intros.
Defined.

Remark rem_5599 : auto___def_50 pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5600 : (forall X:term, auto___def_50 X -> auto___def_20 X -> False)
    -> auto___def_50 pub -> auto___def_20 pub -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_50_m__def_20. intro H. intros.
  elim (rem_5599 H);  intros.
  apply (rem_5598 epsilon_m__def_50_m__def_20);  tauto.
Defined.

Remark rem_5601 : auto___def_50 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5602 : auto___def_50 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5604 : auto___def_50 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5605 : auto___def_50 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5606 : auto___def_50 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5608 : forall X1:term, auto___def_50 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5609 : forall X1 X2 X3:term, auto___def_50 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5610 : forall X1:term, auto___def_50 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5611 : forall X1 X2 X3:term, auto___def_50 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_5614 : forall X1 X2 X3 X4:term, auto___def_50 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5615 : forall X1 X2 X3 X4:term, auto___def_50 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5616 : forall X1:term, auto___def_50 X1 -> auto___def_20 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_50_m__def_20 1.
  intro X. case X.
   intro H. elim (rem_5602  H).
   intro H. elim (rem_5601  H).
  intros X1 X2. intro H. elim (rem_5613 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5612 X1 X2 H).
   intro H. elim (rem_5606  H).
  intros X1 X2. intro H. elim (rem_5607 X1 X2 H).
   intro H. elim (rem_5605  H).
  intros X1. intro H. elim (rem_5608 X1 H).
  intros X1. intro H. elim (rem_5610 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5611 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5609 X1 X2 X3 H).
   intro H. elim (rem_2179  H).
  exact (rem_5600 epsilon_m__def_50_m__def_20 ).
  intros X1. intro H. elim (rem_5603 X1 H).
   intro H. elim (rem_5604  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5614 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5615 X1 X2 X3 X4 H).
   intro H. elim (rem_289  H).
Qed.

Remark rem_5617 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_50 X1 -> auto___def_20 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_71. exact (rem_5616).
Defined.

Remark rem_5618 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_21 X2 -> auto___def_20 X1 -> auto___type_9 X2 -> auto___def_50 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_20 X1 -> False). clear  epsilon_mknows_current_m__def_71. tauto.
  exact (rem_5617 epsilon_mknows_current_m__def_71 X1).
Defined.

Remark rem_5619 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (key X1 X2) -> auto___def_50 X1 -> auto___type_9 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_461 X1 X2 H);  intros.
  apply (rem_5618 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5620 : (forall X:term, auto___def_21 X -> auto___def_55 X -> False)
    -> forall X1 X2:term, auto___def_55 (cons X1 X2) -> auto_agent X1 -> auto___def_22 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_21_m__def_55. intros X1 X2. intro H. intros.
  elim (rem_728 X1 X2 H);  intros.
Defined.

Remark rem_5621 : (forall X:term, auto___def_21 X -> auto___def_55 X -> False)
    -> forall X1 X2:term, auto___def_21 (cons X1 X2) -> auto___def_55 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_21_m__def_55. intros X1 X2. intro H. intros.
  elim (rem_747 X1 X2 H);  intros.
  apply (rem_5620 epsilon_m__def_21_m__def_55 X1 X2);  tauto.
Defined.

Remark rem_5622 : auto___def_21 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5623 : auto___def_21 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5624 : auto___def_21 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5625 : auto___def_21 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5627 : auto___def_21 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5628 : auto___def_21 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5629 : auto___def_21 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5631 : forall X1:term, auto___def_21 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5632 : forall X1 X2 X3:term, auto___def_21 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5633 : auto___def_21 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5634 : forall X1:term, auto___def_21 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5635 : forall X1 X2 X3:term, auto___def_21 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5637 : forall X1 X2 X3 X4:term, auto___def_21 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5638 : forall X1 X2 X3 X4:term, auto___def_21 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5639 : forall X2:term, auto___def_21 X2 -> auto___def_55 X2 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_21_m__def_55 1.
  intro X. case X.
   intro H. elim (rem_5625  H).
   intro H. elim (rem_5622  H).
  intros X1 X2;  exact (rem_5621 epsilon_m__def_21_m__def_55 X1 X2).
  intros X1 X2. intro H. elim (rem_5636 X1 X2 H).
   intro H. elim (rem_5629  H).
  intros X1 X2. intro H. elim (rem_5630 X1 X2 H).
   intro H. elim (rem_5628  H).
  intros X1. intro H. elim (rem_5631 X1 H).
  intros X1. intro H. elim (rem_5634 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5635 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5632 X1 X2 X3 H).
   intro H. elim (rem_5624  H).
   intro H. elim (rem_5633  H).
  intros X1. intro H. elim (rem_5626 X1 H).
   intro H. elim (rem_5627  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5637 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5638 X1 X2 X3 X4 H).
   intro H. elim (rem_5623  H).
Qed.

Remark rem_5640 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X2:term, auto___def_21 X2 -> auto___def_55 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_71. exact (rem_5639).
Defined.

Remark rem_5641 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_55 X2 -> auto___def_21 X2 -> auto___def_20 X1 -> auto___def_54 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2.
  cut (auto___def_21 X2 -> auto___def_55 X2 -> False). clear  epsilon_mknows_current_m__def_71. tauto.
  exact (rem_5640 epsilon_mknows_current_m__def_71 X2).
Defined.

Remark rem_5642 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (key X1 X2) -> auto___def_54 X1 -> auto___def_55 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_461 X1 X2 H);  intros.
  apply (rem_5641 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5643 : (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_47 X1 X2 H);  intros.
  apply (rem_5596 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_5619 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_5642 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5644 : forall X1:term, auto___def_71 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5645 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_71 (noncea_current X1) -> auto_agent X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1. intro H. intros.
  elim (rem_5644 X1 H);  intros.
Defined.

Remark rem_5646 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto_knows_current (noncea_current X1) -> auto___def_71 (noncea_current X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1. intro H. intros.
  elim (rem_52 X1 H);  intros.
  apply (rem_5645 epsilon_mknows_current_m__def_71 X1);  tauto.
Defined.

Remark rem_5647 : forall X1 X2 X3:term, auto___def_71 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5648 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2 X3:term, auto___def_71 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2 X3. intro H. intros.
  elim (rem_5647 X1 X2 X3 H);  intros.
Defined.

Remark rem_5649 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3) -> auto___def_71 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2 X3. intro H. intros.
  elim (rem_55 X1 X2 X3 H);  intros.
  apply (rem_5648 epsilon_mknows_current_m__def_71 X1 X2 X3);  tauto.
Defined.

Remark rem_5650 : forall X1:term, auto___def_71 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5651 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto___def_71 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1. intro H. intros.
  elim (rem_5650 X1 H);  intros.
Defined.

Remark rem_5652 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1:term, auto_knows_current (noncea_old X1) -> auto___def_71 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1. intro H. intros.
  elim (rem_58 X1 H);  intros.
  apply (rem_5651 epsilon_mknows_current_m__def_71 X1);  tauto.
Defined.

Remark rem_5653 : forall X1 X2 X3:term, auto___def_71 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5654 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2 X3:term, auto___def_71 (nonceb_current X1 X2 X3) -> auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2 X3. intro H. intros.
  elim (rem_5653 X1 X2 X3 H);  intros.
Defined.

Remark rem_5655 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto___def_71 (nonceb_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2 X3. intro H. intros.
  elim (rem_67 X1 X2 X3 H);  intros.
  apply (rem_5654 epsilon_mknows_current_m__def_71 X1 X2 X3);  tauto.
Defined.

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

Remark rem_5657 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_78 X1 -> auto___def_79 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_5656 X1 X2 H);  intros.
Defined.

Remark rem_5658 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_40 X1 -> auto___def_41 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_5656 X1 X2 H);  intros.
Defined.

Remark rem_5659 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_29 X1 -> auto___def_30 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_5656 X1 X2 H);  intros.
Defined.

Remark rem_5660 : (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_5656 X1 X2 H);  intros.
Defined.

Remark rem_5661 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_70 X1 -> auto___def_71 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_5656 X1 X2 H);  intros.
Defined.

Remark rem_5662 : (forall X:term, auto_knows_current X -> auto___def_71 X -> False)
    -> forall X1 X2:term, auto___def_71 (crypt X1 X2) -> auto___def_89 X1 -> auto___def_90 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_5656 X1 X2 H);  intros.
Defined.

Remark rem_5663 : (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___def_81 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_71. intros X1 X2. intro H. intros.
  elim (rem_5656 X1 X2 H);  intros.
Defined.

Remark rem_5664 : (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_109 X1 X2 H);  intros.
  apply (rem_5657 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_5658 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_5659 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_5660 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_5661 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_5662 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
  apply (rem_5663 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

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

Remark rem_5666 : (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_5665 X1 X2 H);  intros.
Defined.

Remark rem_5667 : (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_112 X1 X2 H);  intros.
  apply (rem_5666 epsilon_mknows_current_m__def_71 X1 X2);  tauto.
Defined.

Remark rem_5668 : 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_5578 epsilon_mknows_current_m__def_71 ).
  exact (rem_5575 epsilon_mknows_current_m__def_71 ).
  intros X1 X2;  exact (rem_5667 epsilon_mknows_current_m__def_71 X1 X2).
  intros X1 X2;  exact (rem_5664 epsilon_mknows_current_m__def_71 X1 X2).
  exact (rem_5590 epsilon_mknows_current_m__def_71 ).
  intros X1 X2;  exact (rem_5643 epsilon_mknows_current_m__def_71 X1 X2).
  exact (rem_5587 epsilon_mknows_current_m__def_71 ).
  intros X1;  exact (rem_5646 epsilon_mknows_current_m__def_71 X1).
  intros X1;  exact (rem_5652 epsilon_mknows_current_m__def_71 X1).
  intros X1 X2 X3;  exact (rem_5655 epsilon_mknows_current_m__def_71 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5649 epsilon_mknows_current_m__def_71 X1 X2 X3).
   intro H. elim (rem_115  H).
   intro H. elim (rem_116  H).
  intros X1;  exact (rem_5581 epsilon_mknows_current_m__def_71 X1).
  exact (rem_5584 epsilon_mknows_current_m__def_71 ).
  intros X1 X2 X3 X4. intro H. elim (rem_117 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_118 X1 X2 X3 X4 H).
   intro H. elim (rem_114  H).
Qed.

Remark rem_5669 : forall X1 X2 X3 X4:term, auto___def_70 (nonceb_current X1 X2 X4) -> auto___def_71 X3 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5668 X3)). tauto.
Qed.

Remark rem_5670 : auto___def_90 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5671 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> auto___def_90 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intro H. intros.
  elim (rem_5670 H);  intros.
Defined.

Remark rem_5672 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> auto_knows_current bob -> auto___def_90 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intro H. intros.
  elim (rem_10 H);  intros.
  apply (rem_5671 epsilon_mknows_current_m__def_90);  tauto.
Defined.

Remark rem_5673 : auto___def_90 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5674 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> auto___def_90 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intro H. intros.
  elim (rem_5673 H);  intros.
Defined.

Remark rem_5675 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> auto_knows_current alice -> auto___def_90 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intro H. intros.
  elim (rem_13 H);  intros.
  apply (rem_5674 epsilon_mknows_current_m__def_90);  tauto.
Defined.

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

Remark rem_5677 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1:term, auto___def_90 (s X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1. intro H. intros.
  elim (rem_5676 X1 H);  intros.
Defined.

Remark rem_5678 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto___def_90 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1. intro H. intros.
  elim (rem_18 X1 H);  intros.
  apply (rem_5677 epsilon_mknows_current_m__def_90 X1);  tauto.
Defined.

Remark rem_5679 : auto___def_90 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5680 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> auto___def_90 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intro H. intros.
  elim (rem_5679 H);  intros.
Defined.

Remark rem_5681 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> auto_knows_current server -> auto___def_90 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intro H. intros.
  elim (rem_21 H);  intros.
  apply (rem_5680 epsilon_mknows_current_m__def_90);  tauto.
Defined.

Remark rem_5682 : auto___def_90 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5683 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> auto___def_90 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intro H. intros.
  elim (rem_5682 H);  intros.
Defined.

Remark rem_5684 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> auto_knows_current nil -> auto___def_90 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intro H. intros.
  elim (rem_24 H);  intros.
  apply (rem_5683 epsilon_mknows_current_m__def_90);  tauto.
Defined.

Remark rem_5685 : auto___def_90 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5686 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> auto___def_90 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intro H. intros.
  elim (rem_5685 H);  intros.
Defined.

Remark rem_5687 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> auto_knows_current i -> auto___def_90 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intro H. intros.
  elim (rem_27 H);  intros.
  apply (rem_5686 epsilon_mknows_current_m__def_90);  tauto.
Defined.

Remark rem_5688 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1:term, auto___def_51 X1 -> auto___def_83 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_90. exact (rem_5335).
Defined.

Remark rem_5689 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_52 X2 -> auto___def_51 X1 -> auto___def_94 X2 -> auto___def_83 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_83 X1 -> False). clear  epsilon_mknows_current_m__def_90. tauto.
  exact (rem_5688 epsilon_mknows_current_m__def_90 X1).
Defined.

Remark rem_5690 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (key X1 X2) -> auto___def_51 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_470 X1 X2 H);  intros.
  apply (rem_5689 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
Defined.

Remark rem_5691 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1:term, auto___def_83 X1 -> auto___def_50 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_90. exact (rem_5357).
Defined.

Remark rem_5692 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_94 X2 -> auto___type_9 X2 -> auto___def_83 X1 -> auto___def_50 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2.
  cut (auto___def_83 X1 -> auto___def_50 X1 -> False). clear  epsilon_mknows_current_m__def_90. tauto.
  exact (rem_5691 epsilon_mknows_current_m__def_90 X1).
Defined.

Remark rem_5693 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (key X1 X2) -> auto___def_50 X1 -> auto___type_9 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_470 X1 X2 H);  intros.
  apply (rem_5692 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
Defined.

Remark rem_5694 : (forall X:term, auto___def_94 X -> auto___def_55 X -> False)
    -> forall X1 X2:term, auto___def_55 (cons X1 X2) -> auto___type_14 X1 -> auto___def_87 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_94_m__def_55. intros X1 X2. intro H. intros.
  elim (rem_728 X1 X2 H);  intros.
Defined.

Remark rem_5695 : (forall X:term, auto___def_94 X -> auto___def_55 X -> False)
    -> forall X1 X2:term, auto___def_94 (cons X1 X2) -> auto___def_55 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_94_m__def_55. intros X1 X2. intro H. intros.
  elim (rem_2143 X1 X2 H);  intros.
  apply (rem_5694 epsilon_m__def_94_m__def_55 X1 X2);  tauto.
Defined.

Remark rem_5696 : auto___def_94 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5697 : auto___def_94 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5698 : auto___def_94 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5699 : auto___def_94 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5701 : auto___def_94 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5702 : auto___def_94 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5703 : auto___def_94 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5705 : forall X1:term, auto___def_94 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5706 : forall X1 X2 X3:term, auto___def_94 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5707 : auto___def_94 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5708 : forall X1:term, auto___def_94 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5709 : forall X1 X2 X3:term, auto___def_94 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5711 : forall X1 X2 X3 X4:term, auto___def_94 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5712 : forall X1 X2 X3 X4:term, auto___def_94 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5713 : forall X2:term, auto___def_94 X2 -> auto___def_55 X2 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_94_m__def_55 1.
  intro X. case X.
   intro H. elim (rem_5699  H).
   intro H. elim (rem_5696  H).
  intros X1 X2;  exact (rem_5695 epsilon_m__def_94_m__def_55 X1 X2).
  intros X1 X2. intro H. elim (rem_5710 X1 X2 H).
   intro H. elim (rem_5703  H).
  intros X1 X2. intro H. elim (rem_5704 X1 X2 H).
   intro H. elim (rem_5702  H).
  intros X1. intro H. elim (rem_5705 X1 H).
  intros X1. intro H. elim (rem_5708 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5709 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5706 X1 X2 X3 H).
   intro H. elim (rem_5698  H).
   intro H. elim (rem_5707  H).
  intros X1. intro H. elim (rem_5700 X1 H).
   intro H. elim (rem_5701  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5711 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5712 X1 X2 X3 X4 H).
   intro H. elim (rem_5697  H).
Qed.

Remark rem_5714 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X2:term, auto___def_94 X2 -> auto___def_55 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_90. exact (rem_5713).
Defined.

Remark rem_5715 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_55 X2 -> auto___def_54 X1 -> auto___def_94 X2 -> auto___def_83 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2.
  cut (auto___def_94 X2 -> auto___def_55 X2 -> False). clear  epsilon_mknows_current_m__def_90. tauto.
  exact (rem_5714 epsilon_mknows_current_m__def_90 X2).
Defined.

Remark rem_5716 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (key X1 X2) -> auto___def_54 X1 -> auto___def_55 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_470 X1 X2 H);  intros.
  apply (rem_5715 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
Defined.

Remark rem_5717 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___def_90 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_47 X1 X2 H);  intros.
  apply (rem_5690 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
  apply (rem_5693 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
  apply (rem_5716 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
Defined.

Remark rem_5718 : forall X1:term, auto___def_90 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5719 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1:term, auto___def_90 (noncea_current X1) -> auto_agent X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1. intro H. intros.
  elim (rem_5718 X1 H);  intros.
Defined.

Remark rem_5720 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1:term, auto_knows_current (noncea_current X1) -> auto___def_90 (noncea_current X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1. intro H. intros.
  elim (rem_52 X1 H);  intros.
  apply (rem_5719 epsilon_mknows_current_m__def_90 X1);  tauto.
Defined.

Remark rem_5721 : forall X1 X2 X3:term, auto___def_90 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5722 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2 X3:term, auto___def_90 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2 X3. intro H. intros.
  elim (rem_5721 X1 X2 X3 H);  intros.
Defined.

Remark rem_5723 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3) -> auto___def_90 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2 X3. intro H. intros.
  elim (rem_55 X1 X2 X3 H);  intros.
  apply (rem_5722 epsilon_mknows_current_m__def_90 X1 X2 X3);  tauto.
Defined.

Remark rem_5724 : forall X1:term, auto___def_90 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5725 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1:term, auto___def_90 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1. intro H. intros.
  elim (rem_5724 X1 H);  intros.
Defined.

Remark rem_5726 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1:term, auto_knows_current (noncea_old X1) -> auto___def_90 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1. intro H. intros.
  elim (rem_58 X1 H);  intros.
  apply (rem_5725 epsilon_mknows_current_m__def_90 X1);  tauto.
Defined.

Remark rem_5727 : forall X1 X2 X3:term, auto___def_90 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5728 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2 X3:term, auto___def_90 (nonceb_current X1 X2 X3) -> auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2 X3. intro H. intros.
  elim (rem_5727 X1 X2 X3 H);  intros.
Defined.

Remark rem_5729 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto___def_90 (nonceb_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2 X3. intro H. intros.
  elim (rem_67 X1 X2 X3 H);  intros.
  apply (rem_5728 epsilon_mknows_current_m__def_90 X1 X2 X3);  tauto.
Defined.

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

Remark rem_5731 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (crypt X1 X2) -> auto___def_78 X1 -> auto___def_79 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_5730 X1 X2 H);  intros.
Defined.

Remark rem_5732 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (crypt X1 X2) -> auto___def_40 X1 -> auto___def_41 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_5730 X1 X2 H);  intros.
Defined.

Remark rem_5733 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (crypt X1 X2) -> auto___def_29 X1 -> auto___def_30 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_5730 X1 X2 H);  intros.
Defined.

Remark rem_5734 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (crypt X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_5730 X1 X2 H);  intros.
Defined.

Remark rem_5735 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (crypt X1 X2) -> auto___def_70 X1 -> auto___def_71 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_5730 X1 X2 H);  intros.
Defined.

Remark rem_5736 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (crypt X1 X2) -> auto___def_89 X1 -> auto___def_90 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_5730 X1 X2 H);  intros.
Defined.

Remark rem_5737 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (crypt X1 X2) -> auto_knows_current X1 -> auto___def_81 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_5730 X1 X2 H);  intros.
Defined.

Remark rem_5738 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_90 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_109 X1 X2 H);  intros.
  apply (rem_5731 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
  apply (rem_5732 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
  apply (rem_5733 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
  apply (rem_5734 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
  apply (rem_5735 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
  apply (rem_5736 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
  apply (rem_5737 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
Defined.

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

Remark rem_5740 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto___def_90 (cons X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_5739 X1 X2 H);  intros.
Defined.

Remark rem_5741 : (forall X:term, auto_knows_current X -> auto___def_90 X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___def_90 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_90. intros X1 X2. intro H. intros.
  elim (rem_112 X1 X2 H);  intros.
  apply (rem_5740 epsilon_mknows_current_m__def_90 X1 X2);  tauto.
Defined.

Remark rem_5742 : forall X1:term, auto_knows_current X1 -> auto___def_90 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_current_m__def_90 1.
  intro X. case X.
  exact (rem_5675 epsilon_mknows_current_m__def_90 ).
  exact (rem_5672 epsilon_mknows_current_m__def_90 ).
  intros X1 X2;  exact (rem_5741 epsilon_mknows_current_m__def_90 X1 X2).
  intros X1 X2;  exact (rem_5738 epsilon_mknows_current_m__def_90 X1 X2).
  exact (rem_5687 epsilon_mknows_current_m__def_90 ).
  intros X1 X2;  exact (rem_5717 epsilon_mknows_current_m__def_90 X1 X2).
  exact (rem_5684 epsilon_mknows_current_m__def_90 ).
  intros X1;  exact (rem_5720 epsilon_mknows_current_m__def_90 X1).
  intros X1;  exact (rem_5726 epsilon_mknows_current_m__def_90 X1).
  intros X1 X2 X3;  exact (rem_5729 epsilon_mknows_current_m__def_90 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5723 epsilon_mknows_current_m__def_90 X1 X2 X3).
   intro H. elim (rem_115  H).
   intro H. elim (rem_116  H).
  intros X1;  exact (rem_5678 epsilon_mknows_current_m__def_90 X1).
  exact (rem_5681 epsilon_mknows_current_m__def_90 ).
  intros X1 X2 X3 X4. intro H. elim (rem_117 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_118 X1 X2 X3 X4 H).
   intro H. elim (rem_114  H).
Qed.

Remark rem_5743 : forall X1 X2 X3 X4:term, auto___def_89 (nonceb_current X1 X2 X4) -> auto___def_90 X3 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5742 X3)). tauto.
Qed.

Remark rem_5744 : auto___def_81 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5745 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> auto___def_81 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intro H. intros.
  elim (rem_5744 H);  intros.
Defined.

Remark rem_5746 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> auto_knows_current bob -> auto___def_81 bob -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intro H. intros.
  elim (rem_10 H);  intros.
  apply (rem_5745 epsilon_mknows_current_m__def_81);  tauto.
Defined.

Remark rem_5747 : auto___def_81 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5748 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> auto___def_81 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intro H. intros.
  elim (rem_5747 H);  intros.
Defined.

Remark rem_5749 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> auto_knows_current alice -> auto___def_81 alice -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intro H. intros.
  elim (rem_13 H);  intros.
  apply (rem_5748 epsilon_mknows_current_m__def_81);  tauto.
Defined.

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

Remark rem_5751 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1:term, auto___def_81 (s X1) -> auto_knows_current X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1. intro H. intros.
  elim (rem_5750 X1 H);  intros.
Defined.

Remark rem_5752 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto___def_81 (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1. intro H. intros.
  elim (rem_18 X1 H);  intros.
  apply (rem_5751 epsilon_mknows_current_m__def_81 X1);  tauto.
Defined.

Remark rem_5753 : auto___def_81 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5754 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> auto___def_81 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intro H. intros.
  elim (rem_5753 H);  intros.
Defined.

Remark rem_5755 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> auto_knows_current server -> auto___def_81 server -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intro H. intros.
  elim (rem_21 H);  intros.
  apply (rem_5754 epsilon_mknows_current_m__def_81);  tauto.
Defined.

Remark rem_5756 : auto___def_81 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5757 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> auto___def_81 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intro H. intros.
  elim (rem_5756 H);  intros.
Defined.

Remark rem_5758 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> auto_knows_current nil -> auto___def_81 nil -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intro H. intros.
  elim (rem_24 H);  intros.
  apply (rem_5757 epsilon_mknows_current_m__def_81);  tauto.
Defined.

Remark rem_5759 : auto___def_81 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5760 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> auto___def_81 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intro H. intros.
  elim (rem_5759 H);  intros.
Defined.

Remark rem_5761 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> auto_knows_current i -> auto___def_81 i -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intro H. intros.
  elim (rem_27 H);  intros.
  apply (rem_5760 epsilon_mknows_current_m__def_81);  tauto.
Defined.

Remark rem_5762 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1:term, auto___def_51 X1 -> auto___def_83 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_81. exact (rem_5335).
Defined.

Remark rem_5763 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_52 X2 -> auto___def_84 X2 -> auto___def_51 X1 -> auto___def_83 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_83 X1 -> False). clear  epsilon_mknows_current_m__def_81. tauto.
  exact (rem_5762 epsilon_mknows_current_m__def_81 X1).
Defined.

Remark rem_5764 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (key X1 X2) -> auto___def_51 X1 -> auto___def_52 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_477 X1 X2 H);  intros.
  apply (rem_5763 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5765 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1:term, auto___def_83 X1 -> auto___def_50 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_81. exact (rem_5357).
Defined.

Remark rem_5766 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_84 X2 -> auto___type_9 X2 -> auto___def_83 X1 -> auto___def_50 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2.
  cut (auto___def_83 X1 -> auto___def_50 X1 -> False). clear  epsilon_mknows_current_m__def_81. tauto.
  exact (rem_5765 epsilon_mknows_current_m__def_81 X1).
Defined.

Remark rem_5767 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (key X1 X2) -> auto___def_50 X1 -> auto___type_9 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_477 X1 X2 H);  intros.
  apply (rem_5766 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5768 : (forall X:term, auto___def_84 X -> auto___def_55 X -> False)
    -> forall X1 X2 X3 X4:term, auto___def_55 (session_current X1 X2 X3 X4) -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current X2 -> auto___type_12 X3 -> auto_knows_current X4 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_m__def_55. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_3111 X1 X2 X3 X4 H);  intros.
Defined.

Remark rem_5769 : forall X1 X2 X3 X4:term, auto___def_84 (session_current X1 X2 X3 X4) -> or_1
    (auto___type_11 X1 /\ auto_agent X2 /\ auto_knows_current X2 /\ auto___type_12 X3 /\ auto_knows_current X4)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5770 : (forall X:term, auto___def_84 X -> auto___def_55 X -> False)
    -> forall X1 X2 X3 X4:term, auto___def_84 (session_current X1 X2 X3 X4) -> auto___def_55 (session_current X1 X2 X3 X4) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_84_m__def_55. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_5769 X1 X2 X3 X4 H);  intros.
  apply (rem_5768 epsilon_m__def_84_m__def_55 X1 X2 X3 X4);  tauto.
Defined.

Remark rem_5771 : auto___def_84 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5772 : auto___def_84 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5773 : auto___def_84 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5774 : auto___def_84 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5776 : auto___def_84 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5777 : auto___def_84 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5778 : auto___def_84 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5780 : forall X1:term, auto___def_84 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5781 : forall X1 X2 X3:term, auto___def_84 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5782 : auto___def_84 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5783 : forall X1:term, auto___def_84 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5784 : forall X1 X2 X3:term, auto___def_84 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5786 : forall X1 X2 X3 X4:term, auto___def_84 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5787 : forall X2:term, auto___def_84 X2 -> auto___def_55 X2 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_84_m__def_55 1.
  intro X. case X.
   intro H. elim (rem_5774  H).
   intro H. elim (rem_5771  H).
  intros X1 X2. intro H. elim (rem_768 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5785 X1 X2 H).
   intro H. elim (rem_5778  H).
  intros X1 X2. intro H. elim (rem_5779 X1 X2 H).
   intro H. elim (rem_5777  H).
  intros X1. intro H. elim (rem_5780 X1 H).
  intros X1. intro H. elim (rem_5783 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5784 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5781 X1 X2 X3 H).
   intro H. elim (rem_5773  H).
   intro H. elim (rem_5782  H).
  intros X1. intro H. elim (rem_5775 X1 H).
   intro H. elim (rem_5776  H).
  intros X1 X2 X3 X4;  exact (rem_5770 epsilon_m__def_84_m__def_55 X1 X2 X3 X4).
  intros X1 X2 X3 X4. intro H. elim (rem_5786 X1 X2 X3 X4 H).
   intro H. elim (rem_5772  H).
Qed.

Remark rem_5788 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X2:term, auto___def_84 X2 -> auto___def_55 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_mknows_current_m__def_81. exact (rem_5787).
Defined.

Remark rem_5789 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_55 X2 -> auto___def_84 X2 -> auto___def_54 X1 -> auto___def_83 X1 -> False. (* Split. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2.
  cut (auto___def_84 X2 -> auto___def_55 X2 -> False). clear  epsilon_mknows_current_m__def_81. tauto.
  exact (rem_5788 epsilon_mknows_current_m__def_81 X2).
Defined.

Remark rem_5790 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (key X1 X2) -> auto___def_54 X1 -> auto___def_55 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_477 X1 X2 H);  intros.
  apply (rem_5789 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5791 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto___def_81 (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_47 X1 X2 H);  intros.
  apply (rem_5764 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
  apply (rem_5767 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
  apply (rem_5790 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5792 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1:term, auto___def_81 (noncea_current X1) -> auto_agent X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1. intro H. intros.
  elim (rem_754 X1 H);  intros.
Defined.

Remark rem_5793 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1:term, auto_knows_current (noncea_current X1) -> auto___def_81 (noncea_current X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1. intro H. intros.
  elim (rem_52 X1 H);  intros.
  apply (rem_5792 epsilon_mknows_current_m__def_81 X1);  tauto.
Defined.

Remark rem_5794 : forall X1 X2 X3:term, auto___def_81 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5795 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2 X3:term, auto___def_81 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2 X3. intro H. intros.
  elim (rem_5794 X1 X2 X3 H);  intros.
Defined.

Remark rem_5796 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3) -> auto___def_81 (nonceb_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2 X3. intro H. intros.
  elim (rem_55 X1 X2 X3 H);  intros.
  apply (rem_5795 epsilon_mknows_current_m__def_81 X1 X2 X3);  tauto.
Defined.

Remark rem_5797 : forall X1:term, auto___def_81 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5798 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1:term, auto___def_81 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1. intro H. intros.
  elim (rem_5797 X1 H);  intros.
Defined.

Remark rem_5799 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1:term, auto_knows_current (noncea_old X1) -> auto___def_81 (noncea_old X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1. intro H. intros.
  elim (rem_58 X1 H);  intros.
  apply (rem_5798 epsilon_mknows_current_m__def_81 X1);  tauto.
Defined.

Remark rem_5800 : forall X1 X2 X3:term, auto___def_81 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_5801 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2 X3:term, auto___def_81 (nonceb_current X1 X2 X3) -> auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2 X3. intro H. intros.
  elim (rem_5800 X1 X2 X3 H);  intros.
Defined.

Remark rem_5802 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto___def_81 (nonceb_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2 X3. intro H. intros.
  elim (rem_67 X1 X2 X3 H);  intros.
  apply (rem_5801 epsilon_mknows_current_m__def_81 X1 X2 X3);  tauto.
Defined.

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

Remark rem_5804 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_78 X1 -> auto___def_79 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5803 X1 X2 H);  intros.
Defined.

Remark rem_5805 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_40 X1 -> auto___def_41 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5803 X1 X2 H);  intros.
Defined.

Remark rem_5806 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_29 X1 -> auto___def_30 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5803 X1 X2 H);  intros.
Defined.

Remark rem_5807 : (forall X:term, auto_knows_current 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_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5803 X1 X2 H);  intros.
Defined.

Remark rem_5808 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_70 X1 -> auto___def_71 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5803 X1 X2 H);  intros.
Defined.

Remark rem_5809 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto___def_89 X1 -> auto___def_90 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5803 X1 X2 H);  intros.
Defined.

Remark rem_5810 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (crypt X1 X2) -> auto_knows_current X1 -> auto___def_81 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5803 X1 X2 H);  intros.
Defined.

Remark rem_5811 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto___def_81 (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_109 X1 X2 H);  intros.
  apply (rem_5804 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
  apply (rem_5805 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
  apply (rem_5806 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
  apply (rem_5807 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
  apply (rem_5808 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
  apply (rem_5809 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
  apply (rem_5810 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
Defined.

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

Remark rem_5813 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto___def_81 (cons X1 X2) -> auto_knows_current X1 -> auto_knows_current X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_5812 X1 X2 H);  intros.
Defined.

Remark rem_5814 : (forall X:term, auto_knows_current X -> auto___def_81 X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto___def_81 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_current_m__def_81. intros X1 X2. intro H. intros.
  elim (rem_112 X1 X2 H);  intros.
  apply (rem_5813 epsilon_mknows_current_m__def_81 X1 X2);  tauto.
Defined.

Remark rem_5815 : forall X1:term, auto_knows_current X1 -> auto___def_81 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_mknows_current_m__def_81 1.
  intro X. case X.
  exact (rem_5749 epsilon_mknows_current_m__def_81 ).
  exact (rem_5746 epsilon_mknows_current_m__def_81 ).
  intros X1 X2;  exact (rem_5814 epsilon_mknows_current_m__def_81 X1 X2).
  intros X1 X2;  exact (rem_5811 epsilon_mknows_current_m__def_81 X1 X2).
  exact (rem_5761 epsilon_mknows_current_m__def_81 ).
  intros X1 X2;  exact (rem_5791 epsilon_mknows_current_m__def_81 X1 X2).
  exact (rem_5758 epsilon_mknows_current_m__def_81 ).
  intros X1;  exact (rem_5793 epsilon_mknows_current_m__def_81 X1).
  intros X1;  exact (rem_5799 epsilon_mknows_current_m__def_81 X1).
  intros X1 X2 X3;  exact (rem_5802 epsilon_mknows_current_m__def_81 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5796 epsilon_mknows_current_m__def_81 X1 X2 X3).
   intro H. elim (rem_115  H).
   intro H. elim (rem_116  H).
  intros X1;  exact (rem_5752 epsilon_mknows_current_m__def_81 X1).
  exact (rem_5755 epsilon_mknows_current_m__def_81 ).
  intros X1 X2 X3 X4. intro H. elim (rem_117 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_118 X1 X2 X3 X4 H).
   intro H. elim (rem_114  H).
Qed.

Remark rem_5816 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_5815 X3)). tauto.
Qed.

Remark rem_5817 : forall X1 X2 X3 X4:term, auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_81 X3 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_81 X3 -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5816 X1 X2 X3 X4).
Qed.

Remark rem_5818 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_109 (nonceb_current X1 X2 X4) X3 H);  intros.
  apply (rem_5410 X1 X2 X3 X4);  tauto.
  apply (rem_5490 X1 X2 X3 X4);  tauto.
  apply (rem_5564 X1 X2 X3 X4);  tauto.
  apply (rem_5572 X1 X2 X3 X4);  tauto.
  apply (rem_5669 X1 X2 X3 X4);  tauto.
  apply (rem_5743 X1 X2 X3 X4);  tauto.
  apply (rem_5817 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5819 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current nil -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5818 X1 X2 X3 X4).
Qed.

Remark rem_5820 : forall X1 X2 X3 X4:term, auto_knows_current (nonceb_current X1 X2 X4) -> auto_knows_current nil -> auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current nil -> auto_knows_current (nonceb_current X1 X2 X4) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5819 X1 X2 X3 X4).
Qed.

Remark rem_5821 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (cons (nonceb_current X1 X2 X4) nil) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2 H3. intro H. intros.
  elim (rem_112 (nonceb_current X1 X2 X4) nil H);  intros.
  apply (rem_5820 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5822 : forall X1 X2 X3 X4:term, auto_knows_current X3 -> auto_knows_current (cons (nonceb_current X1 X2 X4) nil) -> auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X3 -> auto_knows_current X1 -> auto_knows_current (cons (nonceb_current X1 X2 X4) nil) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5821 X1 X2 X3 X4).
Qed.

Remark rem_5823 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_112 X3 (cons (nonceb_current X1 X2 X4) nil) H);  intros.
  apply (rem_5822 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5824 : forall X1 X2 X3 X4:term, auto_knows_current X2 -> auto_knows_current (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current X2 -> auto_knows_current X1 -> auto_knows_current (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5823 X1 X2 X3 X4).
Qed.

Remark rem_5825 : forall X1 X2 X3 X4:term, auto_knows_current X1 -> auto_knows_current (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_112 X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) H);  intros.
  apply (rem_5824 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5826 : forall X1 X2 X3 X4:term, auto_knows_current (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_112 X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) H);  intros.
  apply (rem_5825 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5827 : forall X1 X2 X3 X4:term, auto_knows_current (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current (key sym (cons X2 (cons server nil))) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5826 X1 X2 X3 X4).
Qed.

Remark rem_5828 : forall X1 X2 X3 X4:term, auto___def_73 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___type_11 X1 -> auto___type_12 X2 -> auto_agent X2 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_740 X3 (cons (nonceb_current X1 X2 X4) nil) H);  intros.
Qed.

Remark rem_5829 : forall X1 X2 X3 X4:term, auto___type_12 X2 -> auto___def_73 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_73 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___type_11 X1 -> auto___type_12 X2 -> auto_agent X2 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5828 X1 X2 X3 X4).
Qed.

Remark rem_5830 : forall X1 X2 X3 X4:term, auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_743 X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) H);  intros.
  apply (rem_5829 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5831 : forall X1 X2 X3 X4:term, auto___def_22 (cons server nil) -> auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5830 X1 X2 X3 X4).
Qed.

Remark rem_5832 : forall X1 X2 X3 X4:term, auto_agent X2 -> auto___def_22 (cons server nil) -> auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_11 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_22 (cons server nil) -> auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_11 X1 -> auto_agent X2 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5831 X1 X2 X3 X4).
Qed.

Remark rem_5833 : forall X1 X2 X3 X4:term, auto___def_21 (cons X2 (cons server nil)) -> auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_11 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_747 X2 (cons server nil) H);  intros.
  apply (rem_5832 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5834 : forall X1 X2 X3 X4:term, auto___def_20 sym -> auto___def_21 (cons X2 (cons server nil)) -> auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_11 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_21 (cons X2 (cons server nil)) -> auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_11 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5833 X1 X2 X3 X4).
Qed.

Remark rem_5835 : forall X1 X2 X3 X4:term, auto___def_71 (key sym (cons X2 (cons server nil))) -> auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_11 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_461 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_5834 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5836 : forall X1 X2 X3 X4:term, auto___type_11 X1 -> auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_71 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_71 (key sym (cons X2 (cons server nil))) -> auto___def_72 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_11 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5835 X1 X2 X3 X4).
Qed.

Remark rem_5837 : forall X1 X2 X3 X4:term, auto___def_70 (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto___def_71 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_752 X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) H);  intros.
  apply (rem_5836 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5838 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current.  tauto.
Defined.

Remark rem_5839 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current.  case (rem_5838 epsilon_m__type_16_pknows_current). clear  epsilon_m__type_16_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_16_pknows_current. tauto.
Defined.

Remark rem_5840 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> auto___type_16 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intro H. intros.
  elim (rem_1977 H);  intros.
  apply (rem_5839 epsilon_m__type_16_pknows_current);  tauto.
Defined.

Remark rem_5841 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current.  case (rem_5838 epsilon_m__type_16_pknows_current). clear  epsilon_m__type_16_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_16_pknows_current. tauto.
Defined.

Remark rem_5842 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> auto___type_16 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intro H. intros.
  elim (rem_1980 H);  intros.
  apply (rem_5841 epsilon_m__type_16_pknows_current);  tauto.
Defined.

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

Remark rem_5844 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_5843 epsilon_m__type_16_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_5845 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1. intros A1.
  case (rem_5844 epsilon_m__type_16_pknows_current X1 A1). clear  epsilon_m__type_16_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_16_pknows_current A1. tauto.
Defined.

Remark rem_5846 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto___type_16 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1. intro H. intros.
  elim (rem_1985 X1 H);  intros.
  apply (rem_5845 epsilon_m__type_16_pknows_current X1);  tauto.
Defined.

Remark rem_5847 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current.  case (rem_5838 epsilon_m__type_16_pknows_current). clear  epsilon_m__type_16_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_16_pknows_current. tauto.
Defined.

Remark rem_5848 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> auto___type_16 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intro H. intros.
  elim (rem_1988 H);  intros.
  apply (rem_5847 epsilon_m__type_16_pknows_current);  tauto.
Defined.

Remark rem_5849 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current.  case (rem_5838 epsilon_m__type_16_pknows_current). clear  epsilon_m__type_16_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_16_pknows_current. tauto.
Defined.

Remark rem_5850 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> auto___type_16 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intro H. intros.
  elim (rem_1991 H);  intros.
  apply (rem_5849 epsilon_m__type_16_pknows_current);  tauto.
Defined.

Remark rem_5851 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current.  case (rem_5838 epsilon_m__type_16_pknows_current). clear  epsilon_m__type_16_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_16_pknows_current. tauto.
Defined.

Remark rem_5852 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> auto___type_16 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intro H. intros.
  elim (rem_1994 H);  intros.
  apply (rem_5851 epsilon_m__type_16_pknows_current);  tauto.
Defined.

Remark rem_5853 : (forall X:term, auto___type_16 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_5854 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_5853 epsilon_m__type_16_pknows_current X1).
Defined.

Remark rem_5855 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5856 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_5855 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5857 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_5854 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_5856 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5858 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5857 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5859 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5860 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_5859 epsilon_m__type_16_pknows_current X1).
Defined.

Remark rem_5861 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5862 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_5861 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5863 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_5860 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_5862 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5864 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5863 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5865 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto___def_54 X1 -> auto___def_54 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5866 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_5865 epsilon_m__type_16_pknows_current X1).
Defined.

Remark rem_5867 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X2:term, auto___def_55 X2 -> auto___def_55 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5868 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_5867 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5869 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_5866 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_5868 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5870 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5869 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5871 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_16 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_2014 X1 X2 H);  intros.
  apply (rem_5858 epsilon_m__type_16_pknows_current X1 X2);  tauto.
  apply (rem_5864 epsilon_m__type_16_pknows_current X1 X2);  tauto.
  apply (rem_5870 epsilon_m__type_16_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5872 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5873 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_5872 epsilon_m__type_16_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_5874 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1. intros A1.
  case (rem_5873 epsilon_m__type_16_pknows_current X1 A1). clear  epsilon_m__type_16_pknows_current A1. intros. apply trans_knows_current_noncea_current_1;  tauto.
 clear  epsilon_m__type_16_pknows_current A1. tauto.
Defined.

Remark rem_5875 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto___type_16 (noncea_current X1) -> auto_knows_current (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1. intro H. intros.
  elim (rem_2019 X1 H);  intros.
  apply (rem_5874 epsilon_m__type_16_pknows_current X1);  tauto.
Defined.

Remark rem_5876 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2 X3.  case (rem_5838 epsilon_m__type_16_pknows_current). clear  epsilon_m__type_16_pknows_current. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_16_pknows_current. tauto.
Defined.

Remark rem_5877 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_16 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2022 X1 X2 X3 H);  intros.
  apply (rem_5876 epsilon_m__type_16_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_5878 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1.  case (rem_5838 epsilon_m__type_16_pknows_current). clear  epsilon_m__type_16_pknows_current. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_16_pknows_current. tauto.
Defined.

Remark rem_5879 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto___type_16 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1. intro H. intros.
  elim (rem_2025 X1 H);  intros.
  apply (rem_5878 epsilon_m__type_16_pknows_current X1);  tauto.
Defined.

Remark rem_5880 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_5843 epsilon_m__type_16_pknows_current X1).
Defined.

Remark rem_5881 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5882 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_5881 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5883 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5884 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_5883 epsilon_m__type_16_pknows_current X3).
Defined.

Remark rem_5885 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_5880 epsilon_m__type_16_pknows_current X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_5882 epsilon_m__type_16_pknows_current X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_5884 epsilon_m__type_16_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5886 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5885 epsilon_m__type_16_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_16_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_5887 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_16 (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2034 X1 X2 X3 H);  intros.
  apply (rem_5886 epsilon_m__type_16_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_5888 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto___def_78 X1 -> auto___def_78 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5889 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_5888 epsilon_m__type_16_pknows_current X1).
Defined.

Remark rem_5890 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X2:term, auto___def_79 X2 -> auto___def_79 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5891 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_5890 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5892 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_5889 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_5891 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5893 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5892 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5894 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5895 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_5894 epsilon_m__type_16_pknows_current X1).
Defined.

Remark rem_5896 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5897 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_5896 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5898 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_5895 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_5897 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5899 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5898 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5900 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5901 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_5900 epsilon_m__type_16_pknows_current X1).
Defined.

Remark rem_5902 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5903 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_5902 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5904 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_5901 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_5903 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5905 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5904 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5906 : (forall X:term, auto___type_16 X -> auto_knows_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_16_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_5843 epsilon_m__type_16_pknows_current X1).
Defined.

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

Remark rem_5908 : (forall X:term, auto___type_16 X -> auto_knows_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_16_pknows_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_5907 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5909 : (forall X:term, auto___type_16 X -> auto_knows_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_16_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5906 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_5908 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5910 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5909 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5911 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto___def_70 X1 -> auto___def_70 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5912 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_5911 epsilon_m__type_16_pknows_current X1).
Defined.

Remark rem_5913 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X2:term, auto___def_71 X2 -> auto___def_71 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5914 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_5913 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5915 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_5912 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_5914 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5916 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5915 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5917 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1:term, auto___def_89 X1 -> auto___def_89 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5918 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_5917 epsilon_m__type_16_pknows_current X1).
Defined.

Remark rem_5919 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X2:term, auto___def_90 X2 -> auto___def_90 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5920 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_5919 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5921 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_5918 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_5920 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5922 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5921 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5923 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_5843 epsilon_m__type_16_pknows_current X1).
Defined.

Remark rem_5924 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X2:term, auto___def_81 X2 -> auto___def_81 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5925 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_5924 epsilon_m__type_16_pknows_current X2).
Defined.

Remark rem_5926 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_5923 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_5925 epsilon_m__type_16_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5927 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5926 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_crypt_7;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5928 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_16 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_2076 X1 X2 H);  intros.
  apply (rem_5893 epsilon_m__type_16_pknows_current X1 X2);  tauto.
  apply (rem_5899 epsilon_m__type_16_pknows_current X1 X2);  tauto.
  apply (rem_5905 epsilon_m__type_16_pknows_current X1 X2);  tauto.
  apply (rem_5910 epsilon_m__type_16_pknows_current X1 X2);  tauto.
  apply (rem_5916 epsilon_m__type_16_pknows_current X1 X2);  tauto.
  apply (rem_5922 epsilon_m__type_16_pknows_current X1 X2);  tauto.
  apply (rem_5927 epsilon_m__type_16_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5929 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_5909 epsilon_m__type_16_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_16_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_16_pknows_current A1 A2. tauto.
Defined.

Remark rem_5930 : (forall X:term, auto___type_16 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_16 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_16_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_2079 X1 X2 H);  intros.
  apply (rem_5929 epsilon_m__type_16_pknows_current X1 X2);  tauto.
Defined.

Remark rem_5931 : forall X1:term, auto___type_16 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_16_pknows_current 1.
  intro X. case X.
  exact (rem_5842 epsilon_m__type_16_pknows_current ).
  exact (rem_5840 epsilon_m__type_16_pknows_current ).
  intros X1 X2;  exact (rem_5930 epsilon_m__type_16_pknows_current X1 X2).
  intros X1 X2;  exact (rem_5928 epsilon_m__type_16_pknows_current X1 X2).
  exact (rem_5852 epsilon_m__type_16_pknows_current ).
  intros X1 X2;  exact (rem_5871 epsilon_m__type_16_pknows_current X1 X2).
  exact (rem_5850 epsilon_m__type_16_pknows_current ).
  intros X1;  exact (rem_5875 epsilon_m__type_16_pknows_current X1).
  intros X1;  exact (rem_5879 epsilon_m__type_16_pknows_current X1).
  intros X1 X2 X3;  exact (rem_5887 epsilon_m__type_16_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5877 epsilon_m__type_16_pknows_current X1 X2 X3).
   intro H. elim (rem_2082  H).
   intro H. elim (rem_2083  H).
  intros X1;  exact (rem_5846 epsilon_m__type_16_pknows_current X1).
  exact (rem_5848 epsilon_m__type_16_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_2084 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_2085 X1 X2 X3 X4 H).
   intro H. elim (rem_2081  H).
Qed.

Remark rem_5932 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___type_14 X2 -> auto___type_16 X1 -> auto_agent X2 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_16 X1 -> auto_knows_current X1). tauto. exact (rem_5931 X1).
Qed.

Remark rem_5933 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___type_14 X2 -> auto___type_16 X1 -> auto_agent X2 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_14 X2 -> auto_agent X2). tauto. exact (rem_2115 X2).
Qed.

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

Remark rem_5935 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___type_14 X2 -> auto___type_16 X1 -> auto_agent X2 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___type_14 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_14 X2 -> auto___type_14 X2). tauto. exact (rem_5934 X2).
Qed.

Remark rem_5936 : forall X3:term, auto___def_81 X3 -> auto___def_81 X3. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_5937 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___type_14 X2 -> auto___type_16 X1 -> auto_agent X2 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_81 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_81 X3 -> auto___def_81 X3). tauto. exact (rem_5936 X3).
Qed.

Remark rem_5938 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___type_14 X2 -> auto___type_16 X1 -> auto_agent X2 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current X4 -> auto_knows_current X4). tauto. exact (rem_666 X4).
Qed.

Remark rem_5939 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___type_14 X2 -> auto___type_16 X1 -> auto_agent X2 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> (auto_knows_current X1 /\ auto_agent X2 /\ auto___type_14 X2 /\ auto___def_81 X3 /\ auto_knows_current X4) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  cut (auto_knows_current X1). 2:apply (rem_5932 X1 X2 X3 X4);  assumption.
  cut (auto_agent X2). 2:apply (rem_5933 X1 X2 X3 X4);  assumption.
  cut (auto___type_14 X2). 2:apply (rem_5935 X1 X2 X3 X4);  assumption.
  cut (auto___def_81 X3). 2:apply (rem_5937 X1 X2 X3 X4);  assumption.
  cut (auto_knows_current X4). 2:apply (rem_5938 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5940 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___type_14 X2 -> auto___type_16 X1 -> auto_agent X2 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5 A6 A7.
  case (rem_5939 X1 X2 X3 X4 A1 A2 A3 A4 A5 A6 A7). clear  A1 A2 A3 A4 A5 A6 A7. intros. apply trans___def_99_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6 A7. tauto.
Qed.

Remark rem_5941 : forall X1 X2 X3 X4:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X4 -> auto___def_81 X3 -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_81 X3 -> auto___type_14 X2 -> auto___type_16 X1 -> auto_agent X2 -> auto_knows_current X4 -> auto_knows_current X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5940 X1 X2 X3 X4).
Qed.

Remark rem_5942 : forall X1 X2 X3:term, auto___type_13 (nonceb_current X1 X2 X3) -> or_1
    (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5943 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___type_13 (nonceb_current X1 X2 X4) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_5942 X1 X2 X4 H);  intros.
  apply (rem_5941 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5944 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___def_87 (cons server nil) -> auto___type_13 (nonceb_current X1 X2 X4) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_81 X3 -> auto___type_13 (nonceb_current X1 X2 X4) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5943 X1 X2 X3 X4).
Qed.

Remark rem_5945 : forall X1 X2 X3 X4:term, auto___type_14 X2 -> auto___def_87 (cons server nil) -> auto___def_81 X3 -> auto___type_13 (nonceb_current X1 X2 X4) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_81 X3 -> auto___def_87 (cons server nil) -> auto___type_13 (nonceb_current X1 X2 X4) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5944 X1 X2 X3 X4).
Qed.

Remark rem_5946 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_13 (nonceb_current X1 X2 X4) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2143 X2 (cons server nil) H);  intros.
  apply (rem_5945 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5947 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___def_85 nil -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_13 (nonceb_current X1 X2 X4) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_81 X3 -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_13 (nonceb_current X1 X2 X4) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5946 X1 X2 X3 X4).
Qed.

Remark rem_5948 : forall X1 X2 X3 X4:term, auto___type_13 (nonceb_current X1 X2 X4) -> auto___def_85 nil -> auto___def_81 X3 -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_81 X3 -> auto___def_85 nil -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_13 (nonceb_current X1 X2 X4) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5947 X1 X2 X3 X4).
Qed.

Remark rem_5949 : forall X1 X2:term, auto___def_93 (cons X1 X2) -> or_1
    (auto___type_13 X1 /\ auto___def_85 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5950 : forall X1 X2 X3 X4:term, auto___def_81 X3 -> auto___def_93 (cons (nonceb_current X1 X2 X4) nil) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_5949 (nonceb_current X1 X2 X4) nil H);  intros.
  apply (rem_5948 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5951 : forall X1 X2 X3 X4:term, auto___def_92 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_757 X3 (cons (nonceb_current X1 X2 X4) nil) H);  intros.
  apply (rem_5950 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5952 : forall X1 X2 X3 X4:term, auto___type_14 X2 -> auto___def_92 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_92 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_14 X2 -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5951 X1 X2 X3 X4).
Qed.

Remark rem_5953 : forall X1 X2 X3 X4:term, auto___def_91 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_760 X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)) H);  intros.
  apply (rem_5952 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5954 : forall X1 X2 X3 X4:term, auto___def_83 sym -> auto___def_91 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_91 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5953 X1 X2 X3 X4).
Qed.

Remark rem_5955 : forall X1 X2 X3 X4:term, auto___def_83 sym -> auto___def_94 (cons X2 (cons server nil)) -> auto___def_91 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_83 sym -> auto___def_91 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_94 (cons X2 (cons server nil)) -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5954 X1 X2 X3 X4).
Qed.

Remark rem_5956 : forall X1 X2 X3 X4:term, auto___def_90 (key sym (cons X2 (cons server nil))) -> auto___def_91 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_470 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_5955 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5957 : forall X1 X2 X3 X4:term, auto___type_16 X1 -> auto___def_91 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___def_90 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_90 (key sym (cons X2 (cons server nil))) -> auto___def_91 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) -> auto___type_16 X1 -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5956 X1 X2 X3 X4).
Qed.

Remark rem_5958 : forall X1 X2 X3 X4:term, auto___def_89 (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto___def_90 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_766 X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil))) H);  intros.
  apply (rem_5957 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5959 : forall X1 X2 X3 X4:term, auto___def_84 (cons X2 (cons server nil)) -> auto_knows_current (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_768 X2 (cons server nil) H);  intros.
Qed.

Remark rem_5960 : forall X1 X2 X3 X4:term, auto___def_83 sym -> auto___def_84 (cons X2 (cons server nil)) -> auto_knows_current (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_84 (cons X2 (cons server nil)) -> auto_knows_current (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5959 X1 X2 X3 X4).
Qed.

Remark rem_5961 : forall X1 X2 X3 X4:term, auto___def_81 (key sym (cons X2 (cons server nil))) -> auto_knows_current (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_477 sym (cons X2 (cons server nil)) H);  intros.
  apply (rem_5960 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5962 : forall X1 X2 X3 X4:term, auto_knows_current (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto___def_81 (key sym (cons X2 (cons server nil))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_81 (key sym (cons X2 (cons server nil))) -> auto_knows_current (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5961 X1 X2 X3 X4).
Qed.

Remark rem_5963 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_109 (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil))) H);  intros.
  apply (rem_5272 X1 X2 X3 X4);  tauto.
  apply (rem_5287 X1 X2 X3 X4);  tauto.
  apply (rem_5296 X1 X2 X3 X4);  tauto.
  apply (rem_5827 X1 X2 X3 X4);  tauto.
  apply (rem_5837 X1 X2 X3 X4);  tauto.
  apply (rem_5958 X1 X2 X3 X4);  tauto.
  apply (rem_5962 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5964 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current nil -> auto___def_99 X1 X2 X3 X4. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto_knows_current (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto___def_99 X1 X2 X3 X4). tauto.
  exact (rem_5963 X1 X2 X3 X4).
Qed.

Remark rem_5965 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current nil -> auto_knows_current (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) -> auto_knows_current (crypt (nonceb_current X1 X2 X4) X3) -> auto_knows_current nil -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5964 X1 X2 X3 X4).
Qed.

Remark rem_5966 : forall X1 X2 X3 X4:term, auto_knows_current (cons (crypt (nonceb_current X1 X2 X4) X3) nil) -> auto_knows_current (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_112 (crypt (nonceb_current X1 X2 X4) X3) nil H);  intros.
  apply (rem_5965 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5967 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) -> auto_knows_current (cons (crypt (nonceb_current X1 X2 X4) X3) nil) -> auto___def_99 X1 X2 X3 X4. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto_knows_current (cons (crypt (nonceb_current X1 X2 X4) X3) nil) -> auto_knows_current (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) -> auto___def_99 X1 X2 X3 X4). tauto. exact (rem_5966 X1 X2 X3 X4).
Qed.

Remark rem_5968 : forall X1 X2 X3 X4:term, auto_knows_current (cons (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) (cons (crypt (nonceb_current X1 X2 X4) X3) nil)) -> auto___def_99 X1 X2 X3 X4. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_112 (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_current X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) (cons (crypt (nonceb_current X1 X2 X4) X3) nil) H);  intros.
  apply (rem_5967 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5969 : forall X1:term, auto_knows_old (key pub X1) -> auto___def_4 X1. (* Subsumed by universal clause. *)
Proof. intros. apply trans___def_4_1. Qed.

Remark rem_5970 : forall X1 X2:term, auto___def_92 X2 -> auto___type_14 X1 -> auto___type_14 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_14 X1 -> auto___type_14 X1). tauto. exact (rem_3084 X1).
Qed.

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

Remark rem_5972 : forall X1 X2:term, auto___def_92 X2 -> auto___type_14 X1 -> auto___def_92 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_92 X2 -> auto___def_92 X2). tauto. exact (rem_5971 X2).
Qed.

Remark rem_5973 : forall X1 X2:term, auto___def_92 X2 -> auto___type_14 X1 -> (auto___type_14 X1 /\ auto___def_92 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_14 X1). 2:apply (rem_5970 X1 X2);  assumption.
  cut (auto___def_92 X2). 2:apply (rem_5972 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5974 : forall X1 X2:term, auto___def_92 X2 -> auto___type_14 X1 -> auto___def_91 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5973 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_91_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5975 : forall X1 X2:term, auto___def_91 X2 -> auto___type_16 X1 -> auto___type_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_16 X1 -> auto___type_16 X1). tauto. exact (rem_251 X1).
Qed.

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

Remark rem_5977 : forall X1 X2:term, auto___def_91 X2 -> auto___type_16 X1 -> auto___def_91 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_91 X2 -> auto___def_91 X2). tauto. exact (rem_5976 X2).
Qed.

Remark rem_5978 : forall X1 X2:term, auto___def_91 X2 -> auto___type_16 X1 -> (auto___type_16 X1 /\ auto___def_91 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_16 X1). 2:apply (rem_5975 X1 X2);  assumption.
  cut (auto___def_91 X2). 2:apply (rem_5977 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5979 : forall X1 X2:term, auto___def_91 X2 -> auto___type_16 X1 -> auto___def_89 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5978 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_89_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5980 : forall X1 X2:term, auto___def_80 X2 -> auto___type_14 X1 -> auto___type_14 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_14 X1 -> auto___type_14 X1). tauto. exact (rem_3084 X1).
Qed.

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

Remark rem_5982 : forall X1 X2:term, auto___def_80 X2 -> auto___type_14 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_5981 X2).
Qed.

Remark rem_5983 : forall X1 X2:term, auto___def_80 X2 -> auto___type_14 X1 -> (auto___type_14 X1 /\ auto___def_80 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_14 X1). 2:apply (rem_5980 X1 X2);  assumption.
  cut (auto___def_80 X2). 2:apply (rem_5982 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5984 : forall X1 X2:term, auto___def_80 X2 -> auto___type_14 X1 -> auto___def_78 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5983 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_78_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5985 : forall X1 X2:term, auto___def_22 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_660 X1).
Qed.

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

Remark rem_5987 : forall X1 X2:term, auto___def_22 X2 -> auto_agent X1 -> auto___def_22 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_22 X2 -> auto___def_22 X2). tauto. exact (rem_5986 X2).
Qed.

Remark rem_5988 : forall X1 X2:term, auto___def_22 X2 -> auto_agent X1 -> (auto_agent X1 /\ auto___def_22 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto_agent X1). 2:apply (rem_5985 X1 X2);  assumption.
  cut (auto___def_22 X2). 2:apply (rem_5987 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5989 : forall X1 X2:term, auto___def_22 X2 -> auto_agent X1 -> auto___def_21 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5988 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_21_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5990 : forall X1 X2:term, auto___def_20 X1 -> auto___def_21 X2 -> auto___def_17 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_2256 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_17_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5991 : forall X1 X2:term, auto___def_21 X2 -> auto___def_20 X1 -> auto___def_17 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_20 X1 -> auto___def_21 X2 -> auto___def_17 (key X1 X2)). tauto. exact (rem_5990 X1 X2).
Qed.

Remark rem_5992 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_295 X1).
Qed.

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

Remark rem_5994 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_5993 X2).
Qed.

Remark rem_5995 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_5992 X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_5994 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5996 : forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_27 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_5995 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_27_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5997 : forall X1 X2:term, auto___def_30 X2 -> auto___def_29 X1 -> auto___def_27 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_30 X2 -> auto___def_27 (crypt X1 X2)). tauto. exact (rem_5996 X1 X2).
Qed.

Remark rem_5998 : forall X1 X2:term, auto___def_83 X1 -> auto___def_86 X2 -> auto___def_83 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_83 X1 -> auto___def_83 X1). tauto. exact (rem_631 X1).
Qed.

Remark rem_5999 : forall X1 X2:term, auto___def_83 X1 -> auto___def_86 X2 -> auto___def_86 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_86 X2 -> auto___def_86 X2). tauto. exact (rem_433 X2).
Qed.

Remark rem_6000 : forall X1 X2:term, auto___def_83 X1 -> auto___def_86 X2 -> (auto___def_83 X1 /\ auto___def_86 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_83 X1). 2:apply (rem_5998 X1 X2);  assumption.
  cut (auto___def_86 X2). 2:apply (rem_5999 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6001 : forall X1 X2:term, auto___def_83 X1 -> auto___def_86 X2 -> auto___def_79 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6000 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_79_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6002 : forall X1 X2:term, auto___def_86 X2 -> auto___def_83 X1 -> auto___def_79 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_83 X1 -> auto___def_86 X2 -> auto___def_79 (key X1 X2)). tauto. exact (rem_6001 X1 X2).
Qed.

Remark rem_6003 : auto___def_83 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_5315 H);  intros.
Qed.

Remark rem_6004 : forall X1 X2:term, auto___def_78 X2 -> auto___def_83 prv -> auto___def_86 X1 -> auto___def_58 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_83 prv -> False). tauto.
  exact (rem_6003).
Qed.

Remark rem_6005 : forall X1 X2:term, auto___def_83 prv -> auto___def_86 X1 -> auto___def_78 X2 -> auto___def_58 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_78 X2 -> auto___def_83 prv -> auto___def_86 X1 -> auto___def_58 X1 X2). tauto. exact (rem_6004 X1 X2).
Qed.

Remark rem_6006 : forall X1 X2:term, auto___def_78 X2 -> auto___def_79 (key prv X1) -> auto___def_58 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_438 prv X1 H);  intros.
  apply (rem_6005 X1 X2);  tauto.
Qed.

Remark rem_6007 : forall X1 X2:term, auto___def_34 prv -> auto___def_40 X2 -> auto___def_45 X1 -> auto___def_58 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 prv -> False). tauto.
  exact (rem_2169).
Qed.

Remark rem_6008 : forall X1 X2:term, auto___def_34 prv -> auto___def_45 X1 -> auto___def_40 X2 -> auto___def_58 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_34 prv -> auto___def_40 X2 -> auto___def_45 X1 -> auto___def_58 X1 X2). tauto. exact (rem_6007 X1 X2).
Qed.

Remark rem_6009 : forall X1 X2:term, auto___def_40 X2 -> auto___def_41 (key prv X1) -> auto___def_58 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_284 prv X1 H);  intros.
  apply (rem_6008 X1 X2);  tauto.
Qed.

Remark rem_6010 : forall X1 X2:term, auto___def_29 X2 -> auto___def_34 prv -> auto___def_37 X1 -> auto___def_58 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 prv -> False). tauto.
  exact (rem_2169).
Qed.

Remark rem_6011 : forall X1 X2:term, auto___def_34 prv -> auto___def_37 X1 -> auto___def_29 X2 -> auto___def_58 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_29 X2 -> auto___def_34 prv -> auto___def_37 X1 -> auto___def_58 X1 X2). tauto. exact (rem_6010 X1 X2).
Qed.

Remark rem_6012 : forall X1 X2:term, auto___def_29 X2 -> auto___def_30 (key prv X1) -> auto___def_58 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_302 prv X1 H);  intros.
  apply (rem_6011 X1 X2);  tauto.
Qed.

Remark rem_6013 : forall X1 X2:term, auto___def_51 prv -> auto___def_52 X1 -> auto_knows_current X2 -> auto___def_52 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_52 X1 -> auto___def_52 X1). tauto. exact (rem_2173 X1).
Qed.

Remark rem_6014 : forall X1 X2:term, auto___def_51 prv -> auto___def_52 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_653 X2).
Qed.

Remark rem_6015 : forall X1 X2:term, auto___def_51 prv -> auto___def_52 X1 -> auto_knows_current X2 -> (auto___def_52 X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  cut (auto___def_52 X1). 2:apply (rem_6013 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6014 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6016 : forall X1 X2:term, auto___def_51 prv -> auto___def_52 X1 -> auto_knows_current X2 -> auto___def_58 X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3.
  case (rem_6015 X1 X2 A1 A2 A3). clear  A1 A2 A3. intros. apply trans___def_58_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6017 : forall X1 X2:term, auto___def_50 prv -> auto_knows_current X2 -> auto___def_58 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_50 prv -> False). tauto.
  exact (rem_2180).
Qed.

Remark rem_6018 : forall X1 X2:term, auto___def_50 prv -> auto___type_9 X1 -> auto_knows_current X2 -> auto___def_58 X1 X2. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2. intros. apply (rem_6017 X1 X2);  assumption.
Qed.

Remark rem_6019 : auto___def_54 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6020 : auto___def_54 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_6019 H);  intros.
Qed.

Remark rem_6021 : forall X1 X2:term, auto___def_54 prv -> auto___def_55 X1 -> auto_knows_current X2 -> auto___def_58 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_54 prv -> False). tauto.
  exact (rem_6020).
Qed.

Remark rem_6022 : forall X1 X2:term, auto_knows_current X2 -> auto_knows_current (key prv X1) -> auto___def_58 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_47 prv X1 H);  intros.
  apply (rem_6016 X1 X2);  tauto.
  apply (rem_6018 X1 X2);  tauto.
  apply (rem_6021 X1 X2);  tauto.
Qed.

Remark rem_6023 : forall X1 X2:term, auto___def_20 prv -> auto___def_21 X1 -> auto___def_70 X2 -> auto___def_58 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_20 prv -> False). tauto.
  exact (rem_2165).
Qed.

Remark rem_6024 : forall X1 X2:term, auto___def_70 X2 -> auto___def_71 (key prv X1) -> auto___def_58 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_461 prv X1 H);  intros.
  apply (rem_6023 X1 X2);  tauto.
Qed.

Remark rem_6025 : forall X1 X2:term, auto___def_83 prv -> auto___def_89 X2 -> auto___def_94 X1 -> auto___def_58 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_83 prv -> False). tauto.
  exact (rem_6003).
Qed.

Remark rem_6026 : forall X1 X2:term, auto___def_83 prv -> auto___def_94 X1 -> auto___def_89 X2 -> auto___def_58 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_83 prv -> auto___def_89 X2 -> auto___def_94 X1 -> auto___def_58 X1 X2). tauto. exact (rem_6025 X1 X2).
Qed.

Remark rem_6027 : forall X1 X2:term, auto___def_89 X2 -> auto___def_90 (key prv X1) -> auto___def_58 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1. intro H. intros.
  elim (rem_470 prv X1 H);  intros.
  apply (rem_6026 X1 X2);  tauto.
Qed.

Remark rem_6028 : forall X1 X2:term, auto___def_83 prv -> auto___def_84 X1 -> auto_knows_current X2 -> auto___def_58 X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_83 prv -> False). tauto.
  exact (rem_6003).
Qed.

Remark rem_6029 : forall X1 X2:term, auto___def_81 (key prv X1) -> auto_knows_current X2 -> auto___def_58 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_477 prv X1 H);  intros.
  apply (rem_6028 X1 X2);  tauto.
Qed.

Remark rem_6030 : forall X1 X2:term, auto_knows_current X2 -> auto___def_81 (key prv X1) -> auto___def_58 X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_81 (key prv X1) -> auto_knows_current X2 -> auto___def_58 X1 X2). tauto. exact (rem_6029 X1 X2).
Qed.

Remark rem_6031 : forall X1 X2:term, auto_knows_current (crypt X2 (key prv X1)) -> auto___def_58 X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_109 X2 (key prv X1) H);  intros.
  apply (rem_6006 X1 X2);  tauto.
  apply (rem_6009 X1 X2);  tauto.
  apply (rem_6012 X1 X2);  tauto.
  apply (rem_6022 X1 X2);  tauto.
  apply (rem_6024 X1 X2);  tauto.
  apply (rem_6027 X1 X2);  tauto.
  apply (rem_6030 X1 X2);  tauto.
Qed.

Remark rem_6032 : forall X1 X2:term, auto___def_34 X1 -> auto___def_37 X2 -> auto___def_34 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_34 X1). tauto. exact (rem_3078 X1).
Qed.

Remark rem_6033 : forall X1 X2:term, auto___def_34 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_297 X2).
Qed.

Remark rem_6034 : forall X1 X2:term, auto___def_34 X1 -> auto___def_37 X2 -> (auto___def_34 X1 /\ auto___def_37 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_34 X1). 2:apply (rem_6032 X1 X2);  assumption.
  cut (auto___def_37 X2). 2:apply (rem_6033 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6035 : forall X1 X2:term, auto___def_34 X1 -> auto___def_37 X2 -> auto___def_30 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6034 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_30_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6036 : forall X1 X2:term, auto___def_37 X2 -> auto___def_34 X1 -> auto___def_30 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_37 X2 -> auto___def_30 (key X1 X2)). tauto. exact (rem_6035 X1 X2).
Qed.

Remark rem_6037 : forall X1 X2 X3 X4 X5:term, auto___def_19 (cons (noncea_old X1) nil) -> auto___def_21 (cons X1 (cons server nil)) -> auto___type_2 X3 -> auto___type_3 X5 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_1351 (noncea_old X1) nil H);  intros.
Qed.

Remark rem_6038 : forall X1 X2 X3 X4 X5:term, auto___type_3 X5 -> auto___def_19 (cons (noncea_old X1) nil) -> auto___def_21 (cons X1 (cons server nil)) -> auto___type_2 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_19 (cons (noncea_old X1) nil) -> auto___def_21 (cons X1 (cons server nil)) -> auto___type_2 X3 -> auto___type_3 X5 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6037 X1 X2 X3 X4 X5).
Qed.

Remark rem_6039 : forall X1 X2 X3 X4 X5:term, auto___def_18 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_21 (cons X1 (cons server nil)) -> auto___type_2 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_1359 X5 (cons (noncea_old X1) nil) H);  intros.
  apply (rem_6038 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6040 : forall X1 X2 X3 X4 X5:term, auto___def_18 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_20 sym -> auto___def_21 (cons X1 (cons server nil)) -> auto___type_2 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_18 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_21 (cons X1 (cons server nil)) -> auto___type_2 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto.
  exact (rem_6039 X1 X2 X3 X4 X5).
Qed.

Remark rem_6041 : forall X1 X2 X3 X4 X5:term, auto___def_20 sym -> auto___def_21 (cons X1 (cons server nil)) -> auto___def_18 (cons X5 (cons (noncea_old X1) nil)) -> auto___type_2 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_18 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_20 sym -> auto___def_21 (cons X1 (cons server nil)) -> auto___type_2 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6040 X1 X2 X3 X4 X5).
Qed.

Remark rem_6042 : forall X1 X2 X3 X4 X5:term, auto___def_17 (key sym (cons X1 (cons server nil))) -> auto___def_18 (cons X5 (cons (noncea_old X1) nil)) -> auto___type_2 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_275 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6041 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6043 : forall X1 X2 X3 X4 X5:term, auto___type_2 X3 -> auto___def_18 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_17 (key sym (cons X1 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_17 (key sym (cons X1 (cons server nil))) -> auto___def_18 (cons X5 (cons (noncea_old X1) nil)) -> auto___type_2 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6042 X1 X2 X3 X4 X5).
Qed.

Remark rem_6044 : forall X1 X2 X3 X4 X5:term, auto___def_16 (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto___def_17 (key sym (cons X1 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_1382 X3 (cons X5 (cons (noncea_old X1) nil)) H);  intros.
  apply (rem_6043 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6045 : forall X1 X2 X3 X4 X5:term, auto___def_32 (noncea_old X1) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_5 X5 -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_1220 X1 H);  intros.
Qed.

Remark rem_6046 : forall X1 X2 X3 X4 X5:term, auto___def_32 (noncea_old X1) -> auto___def_44 nil -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_5 X5 -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_32 (noncea_old X1) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_5 X5 -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto.
  exact (rem_6045 X1 X2 X3 X4 X5).
Qed.

Remark rem_6047 : forall X1 X2 X3 X4 X5:term, auto___def_43 (cons (noncea_old X1) nil) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_5 X5 -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_694 (noncea_old X1) nil H);  intros.
  apply (rem_6046 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6048 : forall X1 X2 X3 X4 X5:term, auto___type_5 X5 -> auto___def_43 (cons (noncea_old X1) nil) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_43 (cons (noncea_old X1) nil) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_5 X5 -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6047 X1 X2 X3 X4 X5).
Qed.

Remark rem_6049 : forall X1 X2 X3 X4 X5:term, auto___def_42 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_697 X5 (cons (noncea_old X1) nil) H);  intros.
  apply (rem_6048 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6050 : forall X1 X2 X3 X4 X5:term, auto___def_34 sym -> auto___def_42 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_42 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto.
  exact (rem_6049 X1 X2 X3 X4 X5).
Qed.

Remark rem_6051 : forall X1 X2 X3 X4 X5:term, auto___def_34 sym -> auto___def_45 (cons X1 (cons server nil)) -> auto___def_42 (cons X5 (cons (noncea_old X1) nil)) -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_34 sym -> auto___def_42 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_45 (cons X1 (cons server nil)) -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6050 X1 X2 X3 X4 X5).
Qed.

Remark rem_6052 : forall X1 X2 X3 X4 X5:term, auto___def_41 (key sym (cons X1 (cons server nil))) -> auto___def_42 (cons X5 (cons (noncea_old X1) nil)) -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_284 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6051 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6053 : forall X1 X2 X3 X4 X5:term, auto___type_7 X3 -> auto___def_42 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_41 (key sym (cons X1 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_41 (key sym (cons X1 (cons server nil))) -> auto___def_42 (cons X5 (cons (noncea_old X1) nil)) -> auto___type_7 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6052 X1 X2 X3 X4 X5).
Qed.

Remark rem_6054 : forall X1 X2 X3 X4 X5:term, auto___def_40 (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto___def_41 (key sym (cons X1 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_703 X3 (cons X5 (cons (noncea_old X1) nil)) H);  intros.
  apply (rem_6053 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6055 : forall X1 X2 X3 X4 X5:term, auto___def_52 (cons X1 (cons server nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (noncea_old X1) -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_723 X1 (cons server nil) H);  intros.
Qed.

Remark rem_6056 : forall X1 X2 X3 X4 X5:term, auto___def_51 sym -> auto___def_52 (cons X1 (cons server nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (noncea_old X1) -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_52 (cons X1 (cons server nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (noncea_old X1) -> auto___def_46 X1 X2 X3 X4 X5). tauto.
  exact (rem_6055 X1 X2 X3 X4 X5).
Qed.

Remark rem_6057 : forall X1 X2 X3 X4 X5:term, auto___def_50 sym -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (noncea_old X1) -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_50 sym -> False). tauto.
  exact (rem_290).
Qed.

Remark rem_6058 : forall X1 X2 X3 X4 X5:term, auto___def_50 sym -> auto___type_9 (cons X1 (cons server nil)) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (noncea_old X1) -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2 X3 X4 X5. intros. apply (rem_6057 X1 X2 X3 X4 X5);  assumption.
Qed.

Remark rem_6059 : forall X1 X2 X3 X4 X5:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto_knows_old (noncea_old X1) -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2 H3 H4. intro H. intros.
  elim (rem_293 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6056 X1 X2 X3 X4 X5);  tauto.
  apply (rem_6058 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6060 : forall X1 X2 X3 X4 X5:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto_knows_old nil -> auto_knows_old (noncea_old X1) -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto_knows_old (noncea_old X1) -> auto___def_46 X1 X2 X3 X4 X5). tauto.
  exact (rem_6059 X1 X2 X3 X4 X5).
Qed.

Remark rem_6061 : forall X1 X2 X3 X4 X5:term, auto_knows_old (noncea_old X1) -> auto_knows_old nil -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto_knows_old nil -> auto_knows_old (noncea_old X1) -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6060 X1 X2 X3 X4 X5).
Qed.

Remark rem_6062 : forall X1 X2 X3 X4 X5:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (cons (noncea_old X1) nil) -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2 H3 H4. intro H. intros.
  elim (rem_860 (noncea_old X1) nil H);  intros.
  apply (rem_6061 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6063 : forall X1 X2 X3 X4 X5:term, auto_knows_old X5 -> auto_knows_old (cons (noncea_old X1) nil) -> auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old X5 -> auto_knows_old (cons (noncea_old X1) nil) -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6062 X1 X2 X3 X4 X5).
Qed.

Remark rem_6064 : forall X1 X2 X3 X4 X5:term, auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old (cons X5 (cons (noncea_old X1) nil)) -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2 H3. intro H. intros.
  elim (rem_860 X5 (cons (noncea_old X1) nil) H);  intros.
  apply (rem_6063 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6065 : forall X1 X2 X3 X4 X5:term, auto_knows_old X3 -> auto_knows_old (cons X5 (cons (noncea_old X1) nil)) -> auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X2 -> auto_knows_old X3 -> auto_knows_old X4 -> auto_knows_old (cons X5 (cons (noncea_old X1) nil)) -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6064 X1 X2 X3 X4 X5).
Qed.

Remark rem_6066 : forall X1 X2 X3 X4 X5:term, auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2. intro H. intros.
  elim (rem_860 X3 (cons X5 (cons (noncea_old X1) nil)) H);  intros.
  apply (rem_6065 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6067 : forall X1 X2 X3 X4 X5:term, auto_knows_old (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto_knows_old (key sym (cons X1 (cons server nil))) -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6066 X1 X2 X3 X4 X5).
Qed.

Remark rem_6068 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___type_5 X3 -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_660 X1).
Qed.

Remark rem_6069 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___type_5 X3 -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___type_7 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___type_7 X1 -> auto___type_7 X1). tauto. exact (rem_5224 X1).
Qed.

Remark rem_6070 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___type_5 X3 -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_2175 X2).
Qed.

Remark rem_6071 : forall X3:term, auto___type_5 X3 -> auto___type_5 X3. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6072 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___type_5 X3 -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___type_5 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___type_5 X3 -> auto___type_5 X3). tauto. exact (rem_6071 X3).
Qed.

Remark rem_6073 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___type_5 X3 -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old X4. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X4 -> auto_knows_old X4). tauto. exact (rem_2247 X4).
Qed.

Remark rem_6074 : forall X5:term, auto___def_32 X5 -> auto___def_32 X5. (* Tautology. *)
Proof. tauto. Qed.

Remark rem_6075 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___type_5 X3 -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_32 X5. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X5 -> auto___def_32 X5). tauto. exact (rem_6074 X5).
Qed.

Remark rem_6076 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___type_5 X3 -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X4 -> (auto_agent X1 /\ auto___type_7 X1 /\ auto_knows_old X2 /\ auto___type_5 X3 /\ auto_knows_old X4 /\ auto___def_32 X5) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3 A4 A5 A6.
  cut (auto_agent X1). 2:apply (rem_6068 X1 X2 X3 X4 X5);  assumption.
  cut (auto___type_7 X1). 2:apply (rem_6069 X1 X2 X3 X4 X5);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6070 X1 X2 X3 X4 X5);  assumption.
  cut (auto___type_5 X3). 2:apply (rem_6072 X1 X2 X3 X4 X5);  assumption.
  cut (auto_knows_old X4). 2:apply (rem_6073 X1 X2 X3 X4 X5);  assumption.
  cut (auto___def_32 X5). 2:apply (rem_6075 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_6077 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___type_5 X3 -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3 A4 A5 A6.
  case (rem_6076 X1 X2 X3 X4 X5 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans___def_46_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6078 : forall X1 X2 X3 X4 X5:term, auto_agent X1 -> auto___def_32 X5 -> auto___type_5 X3 -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X5 -> auto___type_5 X3 -> auto___type_7 X1 -> auto_agent X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6077 X1 X2 X3 X4 X5).
Qed.

Remark rem_6079 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___type_5 X3 -> auto___type_6 (noncea_old X1) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2. intro H. intros.
  elim (rem_4458 X1 H);  intros.
  apply (rem_6078 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6080 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___def_38 (cons server nil) -> auto___type_5 X3 -> auto___type_6 (noncea_old X1) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X5 -> auto___type_5 X3 -> auto___type_6 (noncea_old X1) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto.
  exact (rem_6079 X1 X2 X3 X4 X5).
Qed.

Remark rem_6081 : forall X1 X2 X3 X4 X5:term, auto___type_7 X1 -> auto___def_38 (cons server nil) -> auto___def_32 X5 -> auto___type_5 X3 -> auto___type_6 (noncea_old X1) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X5 -> auto___def_38 (cons server nil) -> auto___type_5 X3 -> auto___type_6 (noncea_old X1) -> auto___type_7 X1 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6080 X1 X2 X3 X4 X5).
Qed.

Remark rem_6082 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto___type_6 (noncea_old X1) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1. intro H. intros.
  elim (rem_709 X1 (cons server nil) H);  intros.
  apply (rem_6081 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6083 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___def_36 nil -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto___type_6 (noncea_old X1) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X5 -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto___type_6 (noncea_old X1) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto.
  exact (rem_6082 X1 X2 X3 X4 X5).
Qed.

Remark rem_6084 : forall X1 X2 X3 X4 X5:term, auto___type_6 (noncea_old X1) -> auto___def_36 nil -> auto___def_32 X5 -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_32 X5 -> auto___def_36 nil -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto___type_6 (noncea_old X1) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6083 X1 X2 X3 X4 X5).
Qed.

Remark rem_6085 : forall X1 X2 X3 X4 X5:term, auto___def_32 X5 -> auto___def_33 (cons (noncea_old X1) nil) -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1. intro H. intros.
  elim (rem_713 (noncea_old X1) nil H);  intros.
  apply (rem_6084 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6086 : forall X1 X2 X3 X4 X5:term, auto___def_31 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_715 X5 (cons (noncea_old X1) nil) H);  intros.
  apply (rem_6085 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6087 : forall X1 X2 X3 X4 X5:term, auto___def_31 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_34 sym -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_31 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto.
  exact (rem_6086 X1 X2 X3 X4 X5).
Qed.

Remark rem_6088 : forall X1 X2 X3 X4 X5:term, auto___def_34 sym -> auto___def_37 (cons X1 (cons server nil)) -> auto___def_31 (cons X5 (cons (noncea_old X1) nil)) -> auto___type_5 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_31 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_34 sym -> auto___def_37 (cons X1 (cons server nil)) -> auto___type_5 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6087 X1 X2 X3 X4 X5).
Qed.

Remark rem_6089 : forall X1 X2 X3 X4 X5:term, auto___def_30 (key sym (cons X1 (cons server nil))) -> auto___def_31 (cons X5 (cons (noncea_old X1) nil)) -> auto___type_5 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_302 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6088 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6090 : forall X1 X2 X3 X4 X5:term, auto___type_5 X3 -> auto___def_31 (cons X5 (cons (noncea_old X1) nil)) -> auto___def_30 (key sym (cons X1 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_30 (key sym (cons X1 (cons server nil))) -> auto___def_31 (cons X5 (cons (noncea_old X1) nil)) -> auto___type_5 X3 -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6089 X1 X2 X3 X4 X5).
Qed.

Remark rem_6091 : forall X1 X2 X3 X4 X5:term, auto___def_29 (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto___def_30 (key sym (cons X1 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_721 X3 (cons X5 (cons (noncea_old X1) nil)) H);  intros.
  apply (rem_6090 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6092 : forall X1 X2 X3 X4 X5:term, auto___def_35 (cons X1 (cons server nil)) -> auto___type_4 (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_1202 X1 (cons server nil) H);  intros.
Qed.

Remark rem_6093 : forall X1 X2 X3 X4 X5:term, auto___def_34 sym -> auto___def_35 (cons X1 (cons server nil)) -> auto___type_4 (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_35 (cons X1 (cons server nil)) -> auto___type_4 (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto.
  exact (rem_6092 X1 X2 X3 X4 X5).
Qed.

Remark rem_6094 : forall X1 X2 X3 X4 X5:term, auto___def_32 (key sym (cons X1 (cons server nil))) -> auto___type_4 (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_310 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6093 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6095 : forall X1 X2 X3 X4 X5:term, auto___type_4 (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto___def_32 (key sym (cons X1 (cons server nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto___def_32 (key sym (cons X1 (cons server nil))) -> auto___type_4 (cons X3 (cons X5 (cons (noncea_old X1) nil))) -> auto_knows_old X2 -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6094 X1 X2 X3 X4 X5).
Qed.

Remark rem_6096 : forall X1 X2 X3 X4 X5:term, auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1 H2. intro H. intros.
  elim (rem_313 (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil))) H);  intros.
  apply (rem_6044 X1 X2 X3 X4 X5);  tauto.
  apply (rem_6054 X1 X2 X3 X4 X5);  tauto.
  apply (rem_6067 X1 X2 X3 X4 X5);  tauto.
  apply (rem_6091 X1 X2 X3 X4 X5);  tauto.
  apply (rem_6095 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6097 : forall X1 X2 X3 X4 X5:term, auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto_knows_old nil -> auto___def_46 X1 X2 X3 X4 X5. (* Split. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto___def_46 X1 X2 X3 X4 X5). tauto.
  exact (rem_6096 X1 X2 X3 X4 X5).
Qed.

Remark rem_6098 : forall X1 X2 X3 X4 X5:term, auto_knows_old X2 -> auto_knows_old nil -> auto_knows_old X4 -> auto_knows_old (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X2 -> auto_knows_old X4 -> auto_knows_old (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto_knows_old nil -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6097 X1 X2 X3 X4 X5).
Qed.

Remark rem_6099 : forall X1 X2 X3 X4 X5:term, auto_knows_old X4 -> auto_knows_old (cons X2 nil) -> auto_knows_old (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1. intro H. intros.
  elim (rem_860 X2 nil H);  intros.
  apply (rem_6098 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6100 : forall X1 X2 X3 X4 X5:term, auto_knows_old (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto_knows_old (cons X2 nil) -> auto_knows_old X4 -> auto___def_46 X1 X2 X3 X4 X5. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4 X5.
  cut (auto_knows_old X4 -> auto_knows_old (cons X2 nil) -> auto_knows_old (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) -> auto___def_46 X1 X2 X3 X4 X5). tauto. exact (rem_6099 X1 X2 X3 X4 X5).
Qed.

Remark rem_6101 : forall X1 X2 X3 X4 X5:term, auto_knows_old X4 -> auto_knows_old (cons (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) (cons X2 nil)) -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros H1. intro H. intros.
  elim (rem_860 (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) (cons X2 nil) H);  intros.
  apply (rem_6100 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6102 : forall X1 X2 X3 X4 X5:term, auto_knows_old (cons X4 (cons (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) (cons X2 nil))) -> auto___def_46 X1 X2 X3 X4 X5. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_860 X4 (cons (crypt (cons X3 (cons X5 (cons (noncea_old X1) nil))) (key sym (cons X1 (cons server nil)))) (cons X2 nil)) H);  intros.
  apply (rem_6101 X1 X2 X3 X4 X5);  tauto.
Qed.

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

Remark rem_6104 : 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_6103 X1).
Qed.

Remark rem_6105 : 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_2205 X2).
Qed.

Remark rem_6106 : 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_6104 X1 X2);  assumption.
  cut (auto___def_9 X2). 2:apply (rem_6105 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6107 : 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_6106 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_7_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6108 : 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_6107 X1 X2).
Qed.

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

Remark rem_6110 : 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_6109 X1).
Qed.

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

Remark rem_6112 : 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_6111 X2).
Qed.

Remark rem_6113 : 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_6110 X1 X2);  assumption.
  cut (auto___def_13 X2). 2:apply (rem_6112 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6114 : forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto___def_11 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6113 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_11_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6115 : forall X1 X2:term, auto___def_13 X2 -> auto___def_12 X1 -> auto___def_11 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_12 X1 -> auto___def_13 X2 -> auto___def_11 (cons X1 X2)). tauto. exact (rem_6114 X1 X2).
Qed.

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

Remark rem_6117 : forall X1 X2:term, auto___def_76 X1 -> auto___def_77 X2 -> auto___def_76 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_76 X1 -> auto___def_76 X1). tauto. exact (rem_6116 X1).
Qed.

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

Remark rem_6119 : forall X1 X2:term, auto___def_76 X1 -> auto___def_77 X2 -> auto___def_77 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_77 X2 -> auto___def_77 X2). tauto. exact (rem_6118 X2).
Qed.

Remark rem_6120 : forall X1 X2:term, auto___def_76 X1 -> auto___def_77 X2 -> (auto___def_76 X1 /\ auto___def_77 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_76 X1). 2:apply (rem_6117 X1 X2);  assumption.
  cut (auto___def_77 X2). 2:apply (rem_6119 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6121 : forall X1 X2:term, auto___def_76 X1 -> auto___def_77 X2 -> auto___def_75 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6120 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_75_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6122 : forall X1 X2:term, auto___def_77 X2 -> auto___def_76 X1 -> auto___def_75 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_76 X1 -> auto___def_77 X2 -> auto___def_75 (cons X1 X2)). tauto. exact (rem_6121 X1 X2).
Qed.

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

Remark rem_6124 : forall X1 X2:term, auto___def_36 X2 -> auto___def_39 X1 -> auto___def_39 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_39 X1 -> auto___def_39 X1). tauto. exact (rem_6123 X1).
Qed.

Remark rem_6125 : forall X1 X2:term, auto___def_36 X2 -> auto___def_39 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_2623 X2).
Qed.

Remark rem_6126 : forall X1 X2:term, auto___def_36 X2 -> auto___def_39 X1 -> (auto___def_39 X1 /\ auto___def_36 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_39 X1). 2:apply (rem_6124 X1 X2);  assumption.
  cut (auto___def_36 X2). 2:apply (rem_6125 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6127 : forall X1 X2:term, auto___def_36 X2 -> auto___def_39 X1 -> auto___def_28 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6126 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_28_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6128 : auto___def_54 sym. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_54_sym_1;  tauto.
 tauto.
Qed.

Remark rem_6129 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_463 X1).
Qed.

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

Remark rem_6131 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_6130 X2).
Qed.

Remark rem_6132 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_6129 X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_6131 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6133 : forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_88 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6132 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_88_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6134 : forall X1 X2:term, auto___def_90 X2 -> auto___def_89 X1 -> auto___def_88 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_90 X2 -> auto___def_88 (crypt X1 X2)). tauto. exact (rem_6133 X1 X2).
Qed.

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

Remark rem_6136 : forall X1 X2:term, auto___def_66 X1 -> auto___def_67 X2 -> auto___def_66 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_66 X1 -> auto___def_66 X1). tauto. exact (rem_6135 X1).
Qed.

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

Remark rem_6138 : forall X1 X2:term, auto___def_66 X1 -> auto___def_67 X2 -> auto___def_67 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_67 X2 -> auto___def_67 X2). tauto. exact (rem_6137 X2).
Qed.

Remark rem_6139 : forall X1 X2:term, auto___def_66 X1 -> auto___def_67 X2 -> (auto___def_66 X1 /\ auto___def_67 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_66 X1). 2:apply (rem_6136 X1 X2);  assumption.
  cut (auto___def_67 X2). 2:apply (rem_6138 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6140 : forall X1 X2:term, auto___def_66 X1 -> auto___def_67 X2 -> auto___def_65 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6139 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_65_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6141 : forall X1 X2:term, auto___def_67 X2 -> auto___def_66 X1 -> auto___def_65 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_66 X1 -> auto___def_67 X2 -> auto___def_65 (cons X1 X2)). tauto. exact (rem_6140 X1 X2).
Qed.

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

Remark rem_6143 : forall X1 X2:term, auto___def_23 X1 -> auto___def_24 X2 -> auto___def_23 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_23 X1 -> auto___def_23 X1). tauto. exact (rem_6142 X1).
Qed.

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

Remark rem_6145 : forall X1 X2:term, auto___def_23 X1 -> auto___def_24 X2 -> auto___def_24 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_24 X2 -> auto___def_24 X2). tauto. exact (rem_6144 X2).
Qed.

Remark rem_6146 : forall X1 X2:term, auto___def_23 X1 -> auto___def_24 X2 -> (auto___def_23 X1 /\ auto___def_24 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_23 X1). 2:apply (rem_6143 X1 X2);  assumption.
  cut (auto___def_24 X2). 2:apply (rem_6145 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6147 : forall X1 X2:term, auto___def_23 X1 -> auto___def_24 X2 -> auto___def_87 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6146 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_87_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6148 : forall X1 X2:term, auto___def_24 X2 -> auto___def_23 X1 -> auto___def_87 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_23 X1 -> auto___def_24 X2 -> auto___def_87 (cons X1 X2)). tauto. exact (rem_6147 X1 X2).
Qed.

Remark rem_6149 : forall X1 X2:term, auto___def_34 X1 -> auto___def_45 X2 -> auto___def_34 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_34 X1). tauto. exact (rem_3078 X1).
Qed.

Remark rem_6150 : forall X1 X2:term, auto___def_34 X1 -> auto___def_45 X2 -> auto___def_45 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_45 X2 -> auto___def_45 X2). tauto. exact (rem_279 X2).
Qed.

Remark rem_6151 : forall X1 X2:term, auto___def_34 X1 -> auto___def_45 X2 -> (auto___def_34 X1 /\ auto___def_45 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_34 X1). 2:apply (rem_6149 X1 X2);  assumption.
  cut (auto___def_45 X2). 2:apply (rem_6150 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6152 : forall X1 X2:term, auto___def_34 X1 -> auto___def_45 X2 -> auto___def_41 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6151 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_41_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6153 : forall X1 X2:term, auto___def_45 X2 -> auto___def_34 X1 -> auto___def_41 (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_34 X1 -> auto___def_45 X2 -> auto___def_41 (key X1 X2)). tauto. exact (rem_6152 X1 X2).
Qed.

Remark rem_6154 : auto___def_69 nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans___def_69_nil_1;  tauto.
 tauto.
Qed.

Remark rem_6155 : forall X1 X2:term, auto___def_23 X1 -> auto___def_24 X2 -> auto___def_38 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6146 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_38_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6156 : forall X1 X2:term, auto___def_24 X2 -> auto___def_23 X1 -> auto___def_38 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_23 X1 -> auto___def_24 X2 -> auto___def_38 (cons X1 X2)). tauto. exact (rem_6155 X1 X2).
Qed.

Remark rem_6157 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_277 X1).
Qed.

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

Remark rem_6159 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_6158 X2).
Qed.

Remark rem_6160 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_6157 X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_6159 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6161 : forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_39 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6160 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_39_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6162 : forall X1 X2:term, auto___def_41 X2 -> auto___def_40 X1 -> auto___def_39 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_41 X2 -> auto___def_39 (crypt X1 X2)). tauto. exact (rem_6161 X1 X2).
Qed.

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

Remark rem_6164 : forall X1 X2:term, auto___def_68 X1 -> auto___def_69 X2 -> auto___def_68 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_68 X1 -> auto___def_68 X1). tauto. exact (rem_6163 X1).
Qed.

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

Remark rem_6166 : forall X1 X2:term, auto___def_68 X1 -> auto___def_69 X2 -> auto___def_69 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_69 X2 -> auto___def_69 X2). tauto. exact (rem_6165 X2).
Qed.

Remark rem_6167 : forall X1 X2:term, auto___def_68 X1 -> auto___def_69 X2 -> (auto___def_68 X1 /\ auto___def_69 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_68 X1). 2:apply (rem_6164 X1 X2);  assumption.
  cut (auto___def_69 X2). 2:apply (rem_6166 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6168 : forall X1 X2:term, auto___def_68 X1 -> auto___def_69 X2 -> auto___def_67 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6167 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_67_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6169 : forall X1 X2:term, auto___def_69 X2 -> auto___def_68 X1 -> auto___def_67 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_68 X1 -> auto___def_69 X2 -> auto___def_67 (cons X1 X2)). tauto. exact (rem_6168 X1 X2).
Qed.

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

Remark rem_6171 : forall X1 X2 X3 X4:term, auto_knows_old (cons (crypt (cons X1 (cons X2 (cons X3 (cons (nonceb_old X1 X2 X4) nil)))) (key sym (cons X2 (cons server nil)))) (cons (crypt (nonceb_old X1 X2 X4) X3) nil)) -> auto___def_53 X1 X2 X3 X4. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1.
  case (rem_6170 X1 X2 X3 X4 A1). clear  A1. intros. apply trans___def_53_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_6172 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_431 X1).
Qed.

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

Remark rem_6174 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_6173 X2).
Qed.

Remark rem_6175 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_6172 X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_6174 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6176 : forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_76 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6175 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_76_crypt_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6177 : forall X1 X2:term, auto___def_79 X2 -> auto___def_78 X1 -> auto___def_76 (crypt X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_79 X2 -> auto___def_76 (crypt X1 X2)). tauto. exact (rem_6176 X1 X2).
Qed.

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

Remark rem_6179 : forall X1 X2:term, auto___def_19 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_6178 X1).
Qed.

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

Remark rem_6181 : forall X1 X2:term, auto___def_19 X2 -> auto___type_3 X1 -> auto___def_19 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_19 X2 -> auto___def_19 X2). tauto. exact (rem_6180 X2).
Qed.

Remark rem_6182 : forall X1 X2:term, auto___def_19 X2 -> auto___type_3 X1 -> (auto___type_3 X1 /\ auto___def_19 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_3 X1). 2:apply (rem_6179 X1 X2);  assumption.
  cut (auto___def_19 X2). 2:apply (rem_6181 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6183 : forall X1 X2:term, auto___def_19 X2 -> auto___type_3 X1 -> auto___def_18 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6182 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_18_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6184 : forall X1 X2:term, auto___def_23 X1 -> auto___def_24 X2 -> auto___def_22 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6146 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_22_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6185 : forall X1 X2:term, auto___def_24 X2 -> auto___def_23 X1 -> auto___def_22 (cons X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_23 X1 -> auto___def_24 X2 -> auto___def_22 (cons X1 X2)). tauto. exact (rem_6184 X1 X2).
Qed.

Remark rem_6186 : forall X1 X2:term, auto___def_42 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_5224 X1).
Qed.

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

Remark rem_6188 : forall X1 X2:term, auto___def_42 X2 -> auto___type_7 X1 -> auto___def_42 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_42 X2 -> auto___def_42 X2). tauto. exact (rem_6187 X2).
Qed.

Remark rem_6189 : forall X1 X2:term, auto___def_42 X2 -> auto___type_7 X1 -> (auto___type_7 X1 /\ auto___def_42 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___type_7 X1). 2:apply (rem_6186 X1 X2);  assumption.
  cut (auto___def_42 X2). 2:apply (rem_6188 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6190 : forall X1 X2:term, auto___def_42 X2 -> auto___type_7 X1 -> auto___def_40 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6189 X1 X2 A1 A2). clear  A1 A2. intros. apply trans___def_40_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6191 : (forall X:term, auto___def_52 X -> auto___def_57 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_52_p__def_57.  tauto.
Defined.

Remark rem_6192 : (forall X:term, auto___def_52 X -> auto___def_57 X)
    -> auto___def_57 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_52_p__def_57.  case (rem_6191 epsilon_m__def_52_p__def_57). clear  epsilon_m__def_52_p__def_57. intros. apply trans___def_57_i_1;  tauto.
 clear  epsilon_m__def_52_p__def_57. tauto.
Defined.

Remark rem_6193 : (forall X:term, auto___def_52 X -> auto___def_57 X)
    -> auto___def_52 i -> auto___def_57 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_52_p__def_57. intro H. intros.
  elim (rem_5232 H);  intros.
  apply (rem_6192 epsilon_m__def_52_p__def_57);  tauto.
Defined.

Remark rem_6194 : forall X1:term, auto___def_52 X1 -> auto___def_57 X1. (* Induct. *)
Proof.
  fix epsilon_m__def_52_p__def_57 1.
  intro X. case X.
   intro H. elim (rem_5237  H).
   intro H. elim (rem_5234  H).
  intros X1 X2. intro H. elim (rem_723 X1 X2 H).
  intros X1 X2. intro H. elim (rem_5247 X1 X2 H).
  exact (rem_6193 epsilon_m__def_52_p__def_57 ).
  intros X1 X2. intro H. elim (rem_5241 X1 X2 H).
   intro H. elim (rem_5240  H).
  intros X1. intro H. elim (rem_5242 X1 H).
  intros X1. intro H. elim (rem_5245 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5246 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5243 X1 X2 X3 H).
   intro H. elim (rem_5236  H).
   intro H. elim (rem_5244  H).
  intros X1. intro H. elim (rem_5238 X1 H).
   intro H. elim (rem_5239  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5248 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5249 X1 X2 X3 X4 H).
   intro H. elim (rem_5235  H).
Qed.

Remark rem_6195 : forall X1:term, auto___def_51 prv -> auto___def_52 X1 -> auto___def_57 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1.
  cut (auto___def_52 X1 -> auto___def_57 X1). tauto. exact (rem_6194 X1).
Qed.

Remark rem_6196 : forall X1:term, auto___def_50 prv -> auto___def_57 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_50 prv -> False). tauto.
  exact (rem_2180).
Qed.

Remark rem_6197 : forall X1:term, auto___def_50 prv -> auto___type_9 X1 -> auto___def_57 X1. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1. intros. apply (rem_6196 X1);  assumption.
Qed.

Remark rem_6198 : forall X1:term, auto___def_54 prv -> auto___def_55 X1 -> auto___def_57 X1. (* Split. *)
Proof.
  intros X1.
  cut (auto___def_54 prv -> False). tauto.
  exact (rem_6020).
Qed.

Remark rem_6199 : forall X1:term, auto_knows_current (key prv X1) -> auto___def_57 X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_47 prv X1 H);  intros.
  apply (rem_6195 X1);  tauto.
  apply (rem_6197 X1);  tauto.
  apply (rem_6198 X1);  tauto.
Qed.

(* [appp] Proofs that all approximation clauses hold. *)


Remark rem_6200 : forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3.  case (rem_124). intros. apply trans_knows_current_nonceb_old_1;  tauto.
 tauto.
Qed.

Remark rem_6201 : auto_knows_old nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans_knows_old_nil_1;  tauto.
 tauto.
Qed.

Remark rem_6202 : forall X1 X2 X3 X4 X5:term, auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto_agent X1 -> auto_agent X1). tauto. exact (rem_660 X1).
Qed.

Remark rem_6203 : forall X1 X2 X3 X4 X5:term, auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X4 -> auto_knows_current X5 -> auto___type_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___type_16 X1 -> auto___type_16 X1). tauto. exact (rem_251 X1).
Qed.

Remark rem_6204 : forall X1 X2 X3 X4 X5:term, auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X4 -> auto_knows_current X5 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_5218 X2).
Qed.

Remark rem_6205 : forall X1 X2 X3 X4 X5:term, auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X4 -> auto_knows_current X5 -> (auto_agent X1 /\ auto___type_16 X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3 A4 A5 A6.
  cut (auto_agent X1). 2:apply (rem_6202 X1 X2 X3 X4 X5);  assumption.
  cut (auto___type_16 X1). 2:apply (rem_6203 X1 X2 X3 X4 X5);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_6204 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_6206 : forall X1 X2 X3 X4 X5:term, auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3 A4 A5 A6.
  case (rem_6205 X1 X2 X3 X4 X5 A1 A2 A3 A4 A5 A6). clear  A1 A2 A3 A4 A5 A6. intros. apply trans_alice_key_current_1;  tauto.
 clear  A1 A2 A3 A4 A5 A6. tauto.
Qed.

Remark rem_6207 : forall X1 X2 X3 X4 X5:term, auto_agent X1 -> auto___type_16 X1 -> auto_knows_current X3 -> auto___type_14 X4 -> auto_knows_current X5 -> auto___def_81 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3 X5.
  cut (auto___def_81 X2 -> auto___type_14 X3 -> auto___type_16 X1 -> auto_agent X1 -> auto_knows_current X4 -> auto_knows_current X5 -> auto_alice_key_current X1 X2). tauto. exact (rem_6206 X1 X2 X3 X4 X5).
Qed.

Remark rem_6208 : forall X1 X2 X3 X4 X5:term, auto___def_95 X1 X3 X4 X5 X2 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_3323 X1 X3 X4 X5 X2 H);  intros.
  apply (rem_6207 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_6209 : 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_257 X1).
Qed.

Remark rem_6210 : 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_860 X2 X1 H);  intros.
  apply (rem_6209 X1 X2);  tauto.
Qed.

Remark rem_6211 : auto_agent i. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans_agent_i_1;  tauto.
 tauto.
Qed.

Remark rem_6212 : forall X1:term, auto___type_4 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__type_4_pknows_old 1.
  intro X. case X.
  exact (rem_2992 epsilon_m__type_4_pknows_old ).
  exact (rem_2990 epsilon_m__type_4_pknows_old ).
  intros X1 X2;  exact (rem_3059 epsilon_m__type_4_pknows_old X1 X2).
  intros X1 X2;  exact (rem_3057 epsilon_m__type_4_pknows_old X1 X2).
  exact (rem_3002 epsilon_m__type_4_pknows_old ).
  intros X1 X2;  exact (rem_3015 epsilon_m__type_4_pknows_old X1 X2).
  exact (rem_3000 epsilon_m__type_4_pknows_old ).
  intros X1. intro H. elim (rem_1238 X1 H).
  intros X1;  exact (rem_3027 epsilon_m__type_4_pknows_old X1).
  intros X1 X2 X3. intro H. elim (rem_1240 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_3023 epsilon_m__type_4_pknows_old X1 X2 X3).
   intro H. elim (rem_1237  H).
   intro H. elim (rem_1239  H).
  intros X1;  exact (rem_2996 epsilon_m__type_4_pknows_old X1).
  exact (rem_2998 epsilon_m__type_4_pknows_old ).
  intros X1 X2 X3 X4. intro H. elim (rem_1241 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1242 X1 X2 X3 X4 H).
   intro H. elim (rem_1236  H).
Qed.

Remark rem_6213 : forall X1 X2:term, auto___def_35 X2 -> auto___def_6 X2 -> auto___type_4 X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_4 X1 -> auto_knows_old X1). tauto. exact (rem_6212 X1).
Qed.

Remark rem_6214 : forall X1 X2:term, auto___type_4 X1 -> auto___def_35 X2 -> auto___def_6 X2 -> auto_knows_old X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_35 X2 -> auto___def_6 X2 -> auto___type_4 X1 -> auto_knows_old X1). tauto. exact (rem_6213 X1 X2).
Qed.

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

Remark rem_6216 : (forall X:term, auto___def_37 X -> auto___def_6 X -> False)
    -> forall X1 X2:term, auto___def_6 (cons X1 X2) -> auto___type_7 X1 -> auto___def_38 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_37_m__def_6. intros X1 X2. intro H. intros.
  elim (rem_6215 X1 X2 H);  intros.
Defined.

Remark rem_6217 : (forall X:term, auto___def_37 X -> auto___def_6 X -> False)
    -> forall X1 X2:term, auto___def_37 (cons X1 X2) -> auto___def_6 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_37_m__def_6. intros X1 X2. intro H. intros.
  elim (rem_709 X1 X2 H);  intros.
  apply (rem_6216 epsilon_m__def_37_m__def_6 X1 X2);  tauto.
Defined.

Remark rem_6218 : forall X1:term, auto___def_37 X1 -> auto___def_6 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_37_m__def_6 1.
  intro X. case X.
   intro H. elim (rem_5520  H).
   intro H. elim (rem_5517  H).
  intros X1 X2;  exact (rem_6217 epsilon_m__def_37_m__def_6 X1 X2).
  intros X1 X2. intro H. elim (rem_5531 X1 X2 H).
   intro H. elim (rem_5524  H).
  intros X1 X2. intro H. elim (rem_5525 X1 X2 H).
   intro H. elim (rem_5523  H).
  intros X1. intro H. elim (rem_5526 X1 H).
  intros X1. intro H. elim (rem_5529 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5530 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5527 X1 X2 X3 H).
   intro H. elim (rem_5519  H).
   intro H. elim (rem_5528  H).
  intros X1. intro H. elim (rem_5521 X1 H).
   intro H. elim (rem_5522  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5532 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5533 X1 X2 X3 X4 H).
   intro H. elim (rem_5518  H).
Qed.

Remark rem_6219 : forall X1 X2:term, auto___def_29 X1 -> auto___def_37 X2 -> auto___def_6 X2 -> auto_knows_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_6218 X2)). tauto.
Qed.

Remark rem_6220 : (forall X:term, auto___def_45 X -> auto___def_6 X -> False)
    -> forall X1 X2:term, auto___def_6 (cons X1 X2) -> auto___type_5 X1 -> auto___def_38 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_45_m__def_6. intros X1 X2. intro H. intros.
  elim (rem_6215 X1 X2 H);  intros.
Defined.

Remark rem_6221 : (forall X:term, auto___def_45 X -> auto___def_6 X -> False)
    -> forall X1 X2:term, auto___def_45 (cons X1 X2) -> auto___def_6 (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_45_m__def_6. intros X1 X2. intro H. intros.
  elim (rem_1916 X1 X2 H);  intros.
  apply (rem_6220 epsilon_m__def_45_m__def_6 X1 X2);  tauto.
Defined.

Remark rem_6222 : forall X1:term, auto___def_45 X1 -> auto___def_6 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_45_m__def_6 1.
  intro X. case X.
   intro H. elim (rem_5446  H).
   intro H. elim (rem_5443  H).
  intros X1 X2;  exact (rem_6221 epsilon_m__def_45_m__def_6 X1 X2).
  intros X1 X2. intro H. elim (rem_5457 X1 X2 H).
   intro H. elim (rem_5450  H).
  intros X1 X2. intro H. elim (rem_5451 X1 X2 H).
   intro H. elim (rem_5449  H).
  intros X1. intro H. elim (rem_5452 X1 H).
  intros X1. intro H. elim (rem_5455 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5456 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5453 X1 X2 X3 H).
   intro H. elim (rem_5445  H).
   intro H. elim (rem_5454  H).
  intros X1. intro H. elim (rem_5447 X1 H).
   intro H. elim (rem_5448  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5458 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5459 X1 X2 X3 X4 H).
   intro H. elim (rem_5444  H).
Qed.

Remark rem_6223 : forall X1 X2:term, auto___def_40 X1 -> auto___def_45 X2 -> auto___def_6 X2 -> auto_knows_old X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_6222 X2)). tauto.
Qed.

Remark rem_6224 : forall X1:term, auto___def_16 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_16_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_1387  H).
   intro H. elim (rem_1384  H).
  intros X1 X2;  exact (rem_2971 epsilon_m__def_16_pknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_1398 X1 X2 H).
   intro H. elim (rem_1391  H).
  intros X1 X2. intro H. elim (rem_1392 X1 X2 H).
   intro H. elim (rem_1390  H).
  intros X1. intro H. elim (rem_1393 X1 H).
  intros X1. intro H. elim (rem_1396 X1 H).
  intros X1 X2 X3. intro H. elim (rem_1397 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_1394 X1 X2 X3 H).
   intro H. elim (rem_1386  H).
   intro H. elim (rem_1395  H).
  intros X1. intro H. elim (rem_1388 X1 H).
   intro H. elim (rem_1389  H).
  intros X1 X2 X3 X4. intro H. elim (rem_1399 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_1400 X1 X2 X3 X4 H).
   intro H. elim (rem_1385  H).
Qed.

Remark rem_6225 : forall X1 X2:term, auto___def_16 X1 -> auto___def_21 X2 -> auto___def_6 X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_16 X1 -> auto_knows_old X1). tauto. exact (rem_6224 X1).
Qed.

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_6226 : forall X1 X2:term, auto___def_5 X1 X2 -> or_4
    (auto___type_4 X1 /\ auto___def_35 X2)
    (auto___def_29 X1 /\ auto___def_37 X2)
    (auto___def_40 X1 /\ auto___def_45 X2)
    (auto___def_16 X1 /\ auto___def_21 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_6227 : forall X1 X2:term, auto___def_5 X1 X2 -> auto___def_6 X2 -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_6226 X1 X2 H);  intros.
  apply (rem_6214 X1 X2);  tauto.
  apply (rem_6219 X1 X2);  tauto.
  apply (rem_6223 X1 X2);  tauto.
  apply (rem_6225 X1 X2);  tauto.
Qed.

Remark rem_6228 : forall X1 X2:term, auto___def_51 sym -> auto___def_52 (session_current alice bob X1 X2) -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_51 sym -> False). tauto.
  exact (rem_287).
Qed.

Remark rem_6229 : forall X1 X2:term, auto___def_50 sym -> auto___type_9 (session_current alice bob X1 X2) -> False. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2. intros. apply rem_290;  assumption.
Qed.

Remark rem_6230 : forall X1 X2:term, auto___def_55 (session_current alice bob X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_3111 alice bob X1 X2 H);  intros.
Qed.

Remark rem_6231 : forall X1 X2:term, auto___def_54 sym -> auto___def_55 (session_current alice bob X1 X2) -> False. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto___def_55 (session_current alice bob X1 X2) -> False). tauto.
  exact (rem_6230 X1 X2).
Qed.

Remark rem_6232 : forall X1 X2:term, auto_knows_current (key sym (session_current alice bob X1 X2)) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_47 sym (session_current alice bob X1 X2) H);  intros.
  apply (rem_6228 X1 X2);  tauto.
  apply (rem_6229 X1 X2);  tauto.
  apply (rem_6231 X1 X2);  tauto.
Qed.

Remark rem_6233 : forall X1 X2:term, auto_knows_current (key sym (session_current alice bob X1 X2)) -> auto___query__intruder_knows_session_key_generated_by_server. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto_knows_current (key sym (session_current alice bob X1 X2)) -> False). tauto.
  exact (rem_6232 X1 X2).
Qed.

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

Remark rem_6235 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 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_6234 X1).
Qed.

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

Remark rem_6237 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_6236 X2).
Qed.

Remark rem_6238 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_6235 X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_6237 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6239 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6238 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6240 : forall X1 X2:term, auto___def_52 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___def_52 X2 -> auto_knows_old (key X1 X2)). tauto. exact (rem_6239 X1 X2).
Qed.

Remark rem_6241 : forall X1 X2:term, auto___def_57 X2 -> auto___type_9 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_449 X1).
Qed.

Remark rem_6242 : forall X1 X2:term, auto___type_9 X2 -> auto_knows_current X1 -> auto___def_57 X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_57 X2 -> auto___type_9 X2 -> auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_6241 X1 X2).
Qed.

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

Remark rem_6244 : forall X1 X2:term, auto___def_56 X2 X1 -> auto___def_57 X2 -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_6243 X2 X1 H);  intros.
  apply (rem_6242 X1 X2);  tauto.
Qed.

Remark rem_6245 : (forall X:term, auto___type_10 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_10_pknows_current.  tauto.
Defined.

Remark rem_6246 : (forall X:term, auto___type_10 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_10_pknows_current.  case (rem_6245 epsilon_m__type_10_pknows_current). clear  epsilon_m__type_10_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_10_pknows_current. tauto.
Defined.

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

Remark rem_6248 : (forall X:term, auto___type_10 X -> auto_knows_current X)
    -> auto___type_10 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_10_pknows_current. intro H. intros.
  elim (rem_6247 H);  intros.
  apply (rem_6246 epsilon_m__type_10_pknows_current);  tauto.
Defined.

Remark rem_6249 : (forall X:term, auto___type_10 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_10_pknows_current.  case (rem_6245 epsilon_m__type_10_pknows_current). clear  epsilon_m__type_10_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_10_pknows_current. tauto.
Defined.

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

Remark rem_6251 : (forall X:term, auto___type_10 X -> auto_knows_current X)
    -> auto___type_10 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_10_pknows_current. intro H. intros.
  elim (rem_6250 H);  intros.
  apply (rem_6249 epsilon_m__type_10_pknows_current);  tauto.
Defined.

Remark rem_6252 : (forall X:term, auto___type_10 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_10_pknows_current.  case (rem_6245 epsilon_m__type_10_pknows_current). clear  epsilon_m__type_10_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_10_pknows_current. tauto.
Defined.

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

Remark rem_6254 : (forall X:term, auto___type_10 X -> auto_knows_current X)
    -> auto___type_10 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_10_pknows_current. intro H. intros.
  elim (rem_6253 H);  intros.
  apply (rem_6252 epsilon_m__type_10_pknows_current);  tauto.
Defined.

Remark rem_6255 : (forall X:term, auto___type_10 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_10_pknows_current.  case (rem_6245 epsilon_m__type_10_pknows_current). clear  epsilon_m__type_10_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_10_pknows_current. tauto.
Defined.

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

Remark rem_6257 : (forall X:term, auto___type_10 X -> auto_knows_current X)
    -> auto___type_10 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_10_pknows_current. intro H. intros.
  elim (rem_6256 H);  intros.
  apply (rem_6255 epsilon_m__type_10_pknows_current);  tauto.
Defined.

Remark rem_6258 : auto___type_10 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6259 : auto___type_10 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6261 : auto___type_10 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6263 : forall X1:term, auto___type_10 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6264 : forall X1 X2 X3:term, auto___type_10 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6265 : auto___type_10 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6266 : forall X1:term, auto___type_10 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6267 : forall X1 X2 X3:term, auto___type_10 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_6270 : forall X1 X2 X3 X4:term, auto___type_10 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6271 : forall X1 X2 X3 X4:term, auto___type_10 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6272 : forall X1:term, auto___type_10 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_10_pknows_current 1.
  intro X. case X.
  exact (rem_6251 epsilon_m__type_10_pknows_current ).
  exact (rem_6248 epsilon_m__type_10_pknows_current ).
  intros X1 X2. intro H. elim (rem_6269 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6268 X1 X2 H).
  exact (rem_6257 epsilon_m__type_10_pknows_current ).
  intros X1 X2. intro H. elim (rem_6262 X1 X2 H).
   intro H. elim (rem_6261  H).
  intros X1. intro H. elim (rem_6263 X1 H).
  intros X1. intro H. elim (rem_6266 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6267 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6264 X1 X2 X3 H).
   intro H. elim (rem_6259  H).
   intro H. elim (rem_6265  H).
  intros X1. intro H. elim (rem_6260 X1 H).
  exact (rem_6254 epsilon_m__type_10_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_6270 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6271 X1 X2 X3 X4 H).
   intro H. elim (rem_6258  H).
Qed.

Remark rem_6273 : forall X1 X2:term, auto___def_65 X2 -> auto___type_10 X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_10 X1 -> auto_knows_current X1). tauto. exact (rem_6272 X1).
Qed.

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

Remark rem_6275 : (forall X:term, auto___def_66 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_66_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_6274 epsilon_m__def_66_pknows_current X1).
Defined.

Remark rem_6276 : (forall X:term, auto___def_66 X -> auto_knows_current X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6277 : (forall X:term, auto___def_66 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_66_pknows_current. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_6276 epsilon_m__def_66_pknows_current X2).
Defined.

Remark rem_6278 : (forall X:term, auto___def_66 X -> auto_knows_current X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6279 : (forall X:term, auto___def_66 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_66_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_6278 epsilon_m__def_66_pknows_current X3).
Defined.

Remark rem_6280 : (forall X:term, auto___def_66 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_66_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_6275 epsilon_m__def_66_pknows_current X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_6277 epsilon_m__def_66_pknows_current X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_6279 epsilon_m__def_66_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_6281 : (forall X:term, auto___def_66 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_66_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6280 epsilon_m__def_66_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__def_66_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_m__def_66_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_6282 : forall X1 X2 X3:term, auto___def_66 (nonceb_current X1 X2 X3) -> or_1
    (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6283 : (forall X:term, auto___def_66 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___def_66 (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_66_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_6282 X1 X2 X3 H);  intros.
  apply (rem_6281 epsilon_m__def_66_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_6284 : auto___def_66 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6285 : auto___def_66 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6286 : auto___def_66 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6287 : auto___def_66 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6289 : auto___def_66 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6290 : auto___def_66 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6291 : auto___def_66 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6293 : forall X1:term, auto___def_66 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6294 : forall X1 X2 X3:term, auto___def_66 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6295 : auto___def_66 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6296 : forall X1:term, auto___def_66 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_6299 : forall X1 X2 X3 X4:term, auto___def_66 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6300 : forall X1 X2 X3 X4:term, auto___def_66 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6301 : forall X1:term, auto___def_66 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_66_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_6287  H).
   intro H. elim (rem_6284  H).
  intros X1 X2. intro H. elim (rem_6298 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6297 X1 X2 H).
   intro H. elim (rem_6291  H).
  intros X1 X2. intro H. elim (rem_6292 X1 X2 H).
   intro H. elim (rem_6290  H).
  intros X1. intro H. elim (rem_6293 X1 H).
  intros X1. intro H. elim (rem_6296 X1 H).
  intros X1 X2 X3;  exact (rem_6283 epsilon_m__def_66_pknows_current X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_6294 X1 X2 X3 H).
   intro H. elim (rem_6286  H).
   intro H. elim (rem_6295  H).
  intros X1. intro H. elim (rem_6288 X1 H).
   intro H. elim (rem_6289  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6299 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6300 X1 X2 X3 X4 H).
   intro H. elim (rem_6285  H).
Qed.

Remark rem_6302 : (forall X:term, auto___def_65 X -> auto_knows_current X)
    -> forall X1:term, auto___def_66 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_65_pknows_current. exact (rem_6301).
Defined.

Remark rem_6303 : (forall X:term, auto___def_65 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_66 X1 -> auto___def_67 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_65_pknows_current. intros X1 X2.
  cut (auto___def_66 X1 -> auto_knows_current X1). tauto. exact (rem_6302 epsilon_m__def_65_pknows_current X1).
Defined.

Remark rem_6304 : (forall X:term, auto___def_68 X -> auto_knows_current X)
    -> forall X1:term, auto___def_70 X1 -> auto___def_70 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6305 : (forall X:term, auto___def_68 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_68_pknows_current. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_6304 epsilon_m__def_68_pknows_current X1).
Defined.

Remark rem_6306 : (forall X:term, auto___def_68 X -> auto_knows_current X)
    -> forall X2:term, auto___def_71 X2 -> auto___def_71 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6307 : (forall X:term, auto___def_68 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_68_pknows_current. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_6306 epsilon_m__def_68_pknows_current X2).
Defined.

Remark rem_6308 : (forall X:term, auto___def_68 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_68_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_6305 epsilon_m__def_68_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_6307 epsilon_m__def_68_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6309 : (forall X:term, auto___def_68 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_68_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6308 epsilon_m__def_68_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_68_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__def_68_pknows_current A1 A2. tauto.
Defined.

Remark rem_6310 : forall X1 X2:term, auto___def_68 (crypt X1 X2) -> or_1
    (auto___def_70 X1 /\ auto___def_71 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6311 : (forall X:term, auto___def_68 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_68 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_68_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_6310 X1 X2 H);  intros.
  apply (rem_6309 epsilon_m__def_68_pknows_current X1 X2);  tauto.
Defined.

Remark rem_6312 : auto___def_68 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6313 : auto___def_68 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6314 : auto___def_68 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6315 : auto___def_68 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6317 : auto___def_68 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6318 : auto___def_68 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6319 : auto___def_68 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6321 : forall X1:term, auto___def_68 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6322 : forall X1 X2 X3:term, auto___def_68 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6323 : auto___def_68 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6324 : forall X1:term, auto___def_68 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6325 : forall X1 X2 X3:term, auto___def_68 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6327 : forall X1 X2 X3 X4:term, auto___def_68 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6328 : forall X1 X2 X3 X4:term, auto___def_68 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6329 : forall X1:term, auto___def_68 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_68_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_6315  H).
   intro H. elim (rem_6312  H).
  intros X1 X2. intro H. elim (rem_6326 X1 X2 H).
  intros X1 X2;  exact (rem_6311 epsilon_m__def_68_pknows_current X1 X2).
   intro H. elim (rem_6319  H).
  intros X1 X2. intro H. elim (rem_6320 X1 X2 H).
   intro H. elim (rem_6318  H).
  intros X1. intro H. elim (rem_6321 X1 H).
  intros X1. intro H. elim (rem_6324 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6325 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6322 X1 X2 X3 H).
   intro H. elim (rem_6314  H).
   intro H. elim (rem_6323  H).
  intros X1. intro H. elim (rem_6316 X1 H).
   intro H. elim (rem_6317  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6327 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6328 X1 X2 X3 X4 H).
   intro H. elim (rem_6313  H).
Qed.

Remark rem_6330 : (forall X:term, auto___def_67 X -> auto_knows_current X)
    -> forall X1:term, auto___def_68 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_67_pknows_current. exact (rem_6329).
Defined.

Remark rem_6331 : (forall X:term, auto___def_67 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_68 X1 -> auto___def_69 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_67_pknows_current. intros X1 X2.
  cut (auto___def_68 X1 -> auto_knows_current X1). tauto. exact (rem_6330 epsilon_m__def_67_pknows_current X1).
Defined.

Remark rem_6332 : (forall X:term, auto___def_69 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_69_pknows_current.  tauto.
Defined.

Remark rem_6333 : (forall X:term, auto___def_69 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_69_pknows_current.  case (rem_6332 epsilon_m__def_69_pknows_current). clear  epsilon_m__def_69_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__def_69_pknows_current. tauto.
Defined.

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

Remark rem_6335 : (forall X:term, auto___def_69 X -> auto_knows_current X)
    -> auto___def_69 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_69_pknows_current. intro H. intros.
  elim (rem_6334 H);  intros.
  apply (rem_6333 epsilon_m__def_69_pknows_current);  tauto.
Defined.

Remark rem_6336 : auto___def_69 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6337 : auto___def_69 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6338 : auto___def_69 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6339 : auto___def_69 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6341 : auto___def_69 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6342 : auto___def_69 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6344 : forall X1:term, auto___def_69 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6345 : forall X1 X2 X3:term, auto___def_69 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6346 : auto___def_69 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6347 : forall X1:term, auto___def_69 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6348 : forall X1 X2 X3:term, auto___def_69 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_6351 : forall X1 X2 X3 X4:term, auto___def_69 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6352 : forall X1 X2 X3 X4:term, auto___def_69 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6353 : 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_6339  H).
   intro H. elim (rem_6336  H).
  intros X1 X2. intro H. elim (rem_6350 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6349 X1 X2 H).
   intro H. elim (rem_6342  H).
  intros X1 X2. intro H. elim (rem_6343 X1 X2 H).
  exact (rem_6335 epsilon_m__def_69_pknows_current ).
  intros X1. intro H. elim (rem_6344 X1 H).
  intros X1. intro H. elim (rem_6347 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6348 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6345 X1 X2 X3 H).
   intro H. elim (rem_6338  H).
   intro H. elim (rem_6346  H).
  intros X1. intro H. elim (rem_6340 X1 H).
   intro H. elim (rem_6341  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6351 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6352 X1 X2 X3 X4 H).
   intro H. elim (rem_6337  H).
Qed.

Remark rem_6354 : (forall X:term, auto___def_67 X -> auto_knows_current X)
    -> forall X2:term, auto___def_69 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_67_pknows_current. exact (rem_6353).
Defined.

Remark rem_6355 : (forall X:term, auto___def_67 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_68 X1 -> auto___def_69 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_67_pknows_current. intros X1 X2.
  cut (auto___def_69 X2 -> auto_knows_current X2). tauto. exact (rem_6354 epsilon_m__def_67_pknows_current X2).
Defined.

Remark rem_6356 : (forall X:term, auto___def_67 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_68 X1 -> auto___def_69 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_67_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_6331 epsilon_m__def_67_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6355 epsilon_m__def_67_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6357 : (forall X:term, auto___def_67 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_68 X1 -> auto___def_69 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_67_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6356 epsilon_m__def_67_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_67_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_67_pknows_current A1 A2. tauto.
Defined.

Remark rem_6358 : forall X1 X2:term, auto___def_67 (cons X1 X2) -> or_1
    (auto___def_68 X1 /\ auto___def_69 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6359 : (forall X:term, auto___def_67 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_67 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_67_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_6358 X1 X2 H);  intros.
  apply (rem_6357 epsilon_m__def_67_pknows_current X1 X2);  tauto.
Defined.

Remark rem_6360 : auto___def_67 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6361 : auto___def_67 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6362 : auto___def_67 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6363 : auto___def_67 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6365 : auto___def_67 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6366 : auto___def_67 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6367 : auto___def_67 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6369 : forall X1:term, auto___def_67 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6370 : forall X1 X2 X3:term, auto___def_67 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6371 : auto___def_67 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6372 : forall X1:term, auto___def_67 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6373 : forall X1 X2 X3:term, auto___def_67 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6375 : forall X1 X2 X3 X4:term, auto___def_67 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6376 : forall X1 X2 X3 X4:term, auto___def_67 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6377 : forall X2:term, auto___def_67 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_67_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_6363  H).
   intro H. elim (rem_6360  H).
  intros X1 X2;  exact (rem_6359 epsilon_m__def_67_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_6374 X1 X2 H).
   intro H. elim (rem_6367  H).
  intros X1 X2. intro H. elim (rem_6368 X1 X2 H).
   intro H. elim (rem_6366  H).
  intros X1. intro H. elim (rem_6369 X1 H).
  intros X1. intro H. elim (rem_6372 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6373 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6370 X1 X2 X3 H).
   intro H. elim (rem_6362  H).
   intro H. elim (rem_6371  H).
  intros X1. intro H. elim (rem_6364 X1 H).
   intro H. elim (rem_6365  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6375 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6376 X1 X2 X3 X4 H).
   intro H. elim (rem_6361  H).
Qed.

Remark rem_6378 : (forall X:term, auto___def_65 X -> auto_knows_current X)
    -> forall X2:term, auto___def_67 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_65_pknows_current. exact (rem_6377).
Defined.

Remark rem_6379 : (forall X:term, auto___def_65 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_66 X1 -> auto___def_67 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_65_pknows_current. intros X1 X2.
  cut (auto___def_67 X2 -> auto_knows_current X2). tauto. exact (rem_6378 epsilon_m__def_65_pknows_current X2).
Defined.

Remark rem_6380 : (forall X:term, auto___def_65 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_66 X1 -> auto___def_67 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_65_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_6303 epsilon_m__def_65_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6379 epsilon_m__def_65_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6381 : (forall X:term, auto___def_65 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_66 X1 -> auto___def_67 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_65_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6380 epsilon_m__def_65_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_65_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_65_pknows_current A1 A2. tauto.
Defined.

Remark rem_6382 : forall X1 X2:term, auto___def_65 (cons X1 X2) -> or_1
    (auto___def_66 X1 /\ auto___def_67 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6383 : (forall X:term, auto___def_65 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_65 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_65_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_6382 X1 X2 H);  intros.
  apply (rem_6381 epsilon_m__def_65_pknows_current X1 X2);  tauto.
Defined.

Remark rem_6384 : auto___def_65 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6385 : auto___def_65 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6386 : auto___def_65 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6387 : auto___def_65 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6389 : auto___def_65 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6390 : auto___def_65 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6391 : auto___def_65 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6393 : forall X1:term, auto___def_65 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6394 : forall X1 X2 X3:term, auto___def_65 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6395 : auto___def_65 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6396 : forall X1:term, auto___def_65 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6397 : forall X1 X2 X3:term, auto___def_65 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6399 : forall X1 X2 X3 X4:term, auto___def_65 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6400 : forall X1 X2 X3 X4:term, auto___def_65 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6401 : forall X2:term, auto___def_65 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_65_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_6387  H).
   intro H. elim (rem_6384  H).
  intros X1 X2;  exact (rem_6383 epsilon_m__def_65_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_6398 X1 X2 H).
   intro H. elim (rem_6391  H).
  intros X1 X2. intro H. elim (rem_6392 X1 X2 H).
   intro H. elim (rem_6390  H).
  intros X1. intro H. elim (rem_6393 X1 H).
  intros X1. intro H. elim (rem_6396 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6397 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6394 X1 X2 X3 H).
   intro H. elim (rem_6386  H).
   intro H. elim (rem_6395  H).
  intros X1. intro H. elim (rem_6388 X1 H).
   intro H. elim (rem_6389  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6399 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6400 X1 X2 X3 X4 H).
   intro H. elim (rem_6385  H).
Qed.

Remark rem_6402 : forall X1 X2:term, auto___def_65 X2 -> auto___type_10 X1 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_65 X2 -> auto_knows_current X2). tauto. exact (rem_6401 X2).
Qed.

Remark rem_6403 : forall X1 X2:term, auto___def_65 X2 -> auto___type_10 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_6273 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6402 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6404 : forall X1 X2:term, auto___def_65 X2 -> auto___type_10 X1 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6403 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6405 : forall X1:term, auto___type_14 X1 -> auto_agent X1. (* Induct. *)
Proof.
  fix epsilon_m__type_14_pagent 1.
  intro X. case X.
  exact (rem_2094 epsilon_m__type_14_pagent ).
  exact (rem_2091 epsilon_m__type_14_pagent ).
  intros X1 X2. intro H. elim (rem_2112 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2111 X1 X2 H).
  exact (rem_2100 epsilon_m__type_14_pagent ).
  intros X1 X2. intro H. elim (rem_2105 X1 X2 H).
   intro H. elim (rem_2104  H).
  intros X1. intro H. elim (rem_2106 X1 H).
  intros X1. intro H. elim (rem_2109 X1 H).
  intros X1 X2 X3. intro H. elim (rem_2110 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_2107 X1 X2 X3 H).
   intro H. elim (rem_2102  H).
   intro H. elim (rem_2108  H).
  intros X1. intro H. elim (rem_2103 X1 H).
  exact (rem_2097 epsilon_m__type_14_pagent ).
  intros X1 X2 X3 X4. intro H. elim (rem_2113 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_2114 X1 X2 X3 X4 H).
   intro H. elim (rem_2101  H).
Qed.

Remark rem_6406 : forall X1 X2 X3 X4:term, auto___def_81 X2 -> auto___type_14 X1 -> auto_agent X1 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_agent X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_14 X1 -> auto_agent X1). tauto. exact (rem_6405 X1).
Qed.

Remark rem_6407 : forall X1 X2 X3 X4:term, auto___def_81 X2 -> auto___type_14 X1 -> auto_agent X1 -> auto_knows_current X3 -> auto_knows_current X4 -> auto___type_14 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___type_14 X1 -> auto___type_14 X1). tauto. exact (rem_3084 X1).
Qed.

Remark rem_6408 : forall X1 X2 X3 X4:term, auto___def_81 X2 -> auto___type_14 X1 -> auto_agent X1 -> auto_knows_current X3 -> auto_knows_current X4 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_5218 X2).
Qed.

Remark rem_6409 : forall X1 X2 X3 X4:term, auto___def_81 X2 -> auto___type_14 X1 -> auto_agent X1 -> auto_knows_current X3 -> auto_knows_current X4 -> (auto_agent X1 /\ auto___type_14 X1 /\ auto___def_81 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_6406 X1 X2 X3 X4);  assumption.
  cut (auto___type_14 X1). 2:apply (rem_6407 X1 X2 X3 X4);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_6408 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6410 : forall X1 X2 X3 X4:term, auto___def_81 X2 -> auto___type_14 X1 -> auto_agent X1 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6409 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6411 : forall X1 X2 X3 X4:term, auto_knows_current X3 -> auto_agent X1 -> auto___type_14 X1 -> auto___def_81 X2 -> auto_knows_current X4 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto___def_81 X2 -> auto___type_14 X1 -> auto_agent X1 -> auto_knows_current X3 -> auto_knows_current X4 -> auto_bob_key_current X1 X2). tauto. exact (rem_6410 X1 X2 X3 X4).
Qed.

Remark rem_6412 : forall X1 X2 X3 X4:term, auto___def_99 X1 X2 X3 X4 -> or_1
    (auto_knows_current X1 /\ auto_agent X2 /\ auto___type_14 X2 /\ auto___def_81 X3 /\ auto_knows_current X4)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6413 : forall X1 X2 X3 X4:term, auto___def_99 X3 X1 X2 X4 -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_6412 X3 X1 X2 X4 H);  intros.
  apply (rem_6411 X1 X2 X3 X4);  tauto.
Qed.

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

Remark rem_6415 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_6414 X1).
Qed.

Remark rem_6416 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_451 X2).
Qed.

Remark rem_6417 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_6415 X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_6416 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6418 : forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6417 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6419 : forall X1 X2:term, auto___def_55 X2 -> auto___def_54 X1 -> auto_knows_current (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_55 X2 -> auto_knows_current (key X1 X2)). tauto. exact (rem_6418 X1 X2).
Qed.

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

Remark rem_6421 : (forall X:term, auto___def_27 X -> auto_knows_old X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6422 : (forall X:term, auto___def_27 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_27_pknows_old. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_6421 epsilon_m__def_27_pknows_old X1).
Defined.

Remark rem_6423 : (forall X:term, auto___def_27 X -> auto_knows_old X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6424 : (forall X:term, auto___def_27 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_27_pknows_old. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_6423 epsilon_m__def_27_pknows_old X2).
Defined.

Remark rem_6425 : (forall X:term, auto___def_27 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_27_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_6422 epsilon_m__def_27_pknows_old X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_6424 epsilon_m__def_27_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6426 : (forall X:term, auto___def_27 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_27_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6425 epsilon_m__def_27_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_27_pknows_old A1 A2. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  epsilon_m__def_27_pknows_old A1 A2. tauto.
Defined.

Remark rem_6427 : forall X1 X2:term, auto___def_27 (crypt X1 X2) -> or_1
    (auto___def_29 X1 /\ auto___def_30 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6428 : (forall X:term, auto___def_27 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_27 (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_27_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6427 X1 X2 H);  intros.
  apply (rem_6426 epsilon_m__def_27_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6429 : auto___def_27 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6430 : auto___def_27 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6431 : auto___def_27 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6432 : auto___def_27 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6434 : auto___def_27 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6435 : auto___def_27 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6436 : auto___def_27 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6438 : forall X1:term, auto___def_27 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6439 : forall X1 X2 X3:term, auto___def_27 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6440 : auto___def_27 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6441 : forall X1:term, auto___def_27 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6442 : forall X1 X2 X3:term, auto___def_27 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6444 : forall X1 X2 X3 X4:term, auto___def_27 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6445 : forall X1 X2 X3 X4:term, auto___def_27 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6446 : forall X1:term, auto___def_27 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_27_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6432  H).
   intro H. elim (rem_6429  H).
  intros X1 X2. intro H. elim (rem_6443 X1 X2 H).
  intros X1 X2;  exact (rem_6428 epsilon_m__def_27_pknows_old X1 X2).
   intro H. elim (rem_6436  H).
  intros X1 X2. intro H. elim (rem_6437 X1 X2 H).
   intro H. elim (rem_6435  H).
  intros X1. intro H. elim (rem_6438 X1 H).
  intros X1. intro H. elim (rem_6441 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6442 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6439 X1 X2 X3 H).
   intro H. elim (rem_6431  H).
   intro H. elim (rem_6440  H).
  intros X1. intro H. elim (rem_6433 X1 H).
   intro H. elim (rem_6434  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6444 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6445 X1 X2 X3 X4 H).
   intro H. elim (rem_6430  H).
Qed.

Remark rem_6447 : (forall X:term, auto___def_26 X -> auto_knows_old X)
    -> forall X1:term, auto___def_27 X1 -> auto_knows_old X1. (* Cut history. *)
Proof.  intros epsilon_m__def_26_pknows_old. exact (rem_6446).
Defined.

Remark rem_6448 : (forall X:term, auto___def_26 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_27 X1 -> auto___def_28 X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_26_pknows_old. intros X1 X2.
  cut (auto___def_27 X1 -> auto_knows_old X1). tauto. exact (rem_6447 epsilon_m__def_26_pknows_old X1).
Defined.

Remark rem_6449 : (forall X:term, auto___def_39 X -> auto_knows_old X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6450 : (forall X:term, auto___def_39 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_39_pknows_old. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_6449 epsilon_m__def_39_pknows_old X1).
Defined.

Remark rem_6451 : (forall X:term, auto___def_39 X -> auto_knows_old X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6452 : (forall X:term, auto___def_39 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_39_pknows_old. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_6451 epsilon_m__def_39_pknows_old X2).
Defined.

Remark rem_6453 : (forall X:term, auto___def_39 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_39_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_6450 epsilon_m__def_39_pknows_old X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_6452 epsilon_m__def_39_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6454 : (forall X:term, auto___def_39 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_39_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6453 epsilon_m__def_39_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_39_pknows_old A1 A2. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  epsilon_m__def_39_pknows_old A1 A2. tauto.
Defined.

Remark rem_6455 : forall X1 X2:term, auto___def_39 (crypt X1 X2) -> or_1
    (auto___def_40 X1 /\ auto___def_41 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6456 : (forall X:term, auto___def_39 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_39 (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_39_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6455 X1 X2 H);  intros.
  apply (rem_6454 epsilon_m__def_39_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6457 : auto___def_39 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6458 : auto___def_39 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6459 : auto___def_39 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6460 : auto___def_39 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6462 : auto___def_39 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6463 : auto___def_39 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6464 : auto___def_39 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6466 : forall X1:term, auto___def_39 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6467 : forall X1 X2 X3:term, auto___def_39 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6468 : auto___def_39 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6469 : forall X1:term, auto___def_39 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6470 : forall X1 X2 X3:term, auto___def_39 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6472 : forall X1 X2 X3 X4:term, auto___def_39 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6473 : forall X1 X2 X3 X4:term, auto___def_39 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6474 : forall X1:term, auto___def_39 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_39_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6460  H).
   intro H. elim (rem_6457  H).
  intros X1 X2. intro H. elim (rem_6471 X1 X2 H).
  intros X1 X2;  exact (rem_6456 epsilon_m__def_39_pknows_old X1 X2).
   intro H. elim (rem_6464  H).
  intros X1 X2. intro H. elim (rem_6465 X1 X2 H).
   intro H. elim (rem_6463  H).
  intros X1. intro H. elim (rem_6466 X1 H).
  intros X1. intro H. elim (rem_6469 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6470 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6467 X1 X2 X3 H).
   intro H. elim (rem_6459  H).
   intro H. elim (rem_6468  H).
  intros X1. intro H. elim (rem_6461 X1 H).
   intro H. elim (rem_6462  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6472 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6473 X1 X2 X3 X4 H).
   intro H. elim (rem_6458  H).
Qed.

Remark rem_6475 : (forall X:term, auto___def_28 X -> auto_knows_old X)
    -> forall X1:term, auto___def_39 X1 -> auto_knows_old X1. (* Cut history. *)
Proof.  intros epsilon_m__def_28_pknows_old. exact (rem_6474).
Defined.

Remark rem_6476 : (forall X:term, auto___def_28 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_36 X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_28_pknows_old. intros X1 X2.
  cut (auto___def_39 X1 -> auto_knows_old X1). tauto. exact (rem_6475 epsilon_m__def_28_pknows_old X1).
Defined.

Remark rem_6477 : (forall X:term, auto___def_36 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_36_pknows_old.  tauto.
Defined.

Remark rem_6478 : (forall X:term, auto___def_36 X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_36_pknows_old.  case (rem_6477 epsilon_m__def_36_pknows_old). clear  epsilon_m__def_36_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_m__def_36_pknows_old. tauto.
Defined.

Remark rem_6479 : (forall X:term, auto___def_36 X -> auto_knows_old X)
    -> auto___def_36 nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_36_pknows_old. intro H. intros.
  elim (rem_4166 H);  intros.
  apply (rem_6478 epsilon_m__def_36_pknows_old);  tauto.
Defined.

Remark rem_6480 : forall X2:term, auto___def_36 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_36_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_4171  H).
   intro H. elim (rem_4168  H).
  intros X1 X2. intro H. elim (rem_4182 X1 X2 H).
  intros X1 X2. intro H. elim (rem_4181 X1 X2 H).
   intro H. elim (rem_4174  H).
  intros X1 X2. intro H. elim (rem_4175 X1 X2 H).
  exact (rem_6479 epsilon_m__def_36_pknows_old ).
  intros X1. intro H. elim (rem_4176 X1 H).
  intros X1. intro H. elim (rem_4179 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4180 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4177 X1 X2 X3 H).
   intro H. elim (rem_4170  H).
   intro H. elim (rem_4178  H).
  intros X1. intro H. elim (rem_4172 X1 H).
   intro H. elim (rem_4173  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4183 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4184 X1 X2 X3 X4 H).
   intro H. elim (rem_4169  H).
Qed.

Remark rem_6481 : (forall X:term, auto___def_28 X -> auto_knows_old X)
    -> forall X2:term, auto___def_36 X2 -> auto_knows_old X2. (* Cut history. *)
Proof.  intros epsilon_m__def_28_pknows_old. exact (rem_6480).
Defined.

Remark rem_6482 : (forall X:term, auto___def_28 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_36 X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_28_pknows_old. intros X1 X2.
  cut (auto___def_36 X2 -> auto_knows_old X2). tauto. exact (rem_6481 epsilon_m__def_28_pknows_old X2).
Defined.

Remark rem_6483 : (forall X:term, auto___def_28 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_36 X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_28_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_6476 epsilon_m__def_28_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6482 epsilon_m__def_28_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6484 : (forall X:term, auto___def_28 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_39 X1 -> auto___def_36 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_28_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6483 epsilon_m__def_28_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_28_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__def_28_pknows_old A1 A2. tauto.
Defined.

Remark rem_6485 : forall X1 X2:term, auto___def_28 (cons X1 X2) -> or_1
    (auto___def_39 X1 /\ auto___def_36 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6486 : (forall X:term, auto___def_28 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_28 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_28_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6485 X1 X2 H);  intros.
  apply (rem_6484 epsilon_m__def_28_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6487 : auto___def_28 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6488 : auto___def_28 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6489 : auto___def_28 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6490 : auto___def_28 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6492 : auto___def_28 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6493 : auto___def_28 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6494 : auto___def_28 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6496 : forall X1:term, auto___def_28 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6497 : forall X1 X2 X3:term, auto___def_28 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6498 : auto___def_28 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6499 : forall X1:term, auto___def_28 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6500 : forall X1 X2 X3:term, auto___def_28 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6502 : forall X1 X2 X3 X4:term, auto___def_28 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6503 : forall X1 X2 X3 X4:term, auto___def_28 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6504 : forall X2:term, auto___def_28 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_28_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6490  H).
   intro H. elim (rem_6487  H).
  intros X1 X2;  exact (rem_6486 epsilon_m__def_28_pknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_6501 X1 X2 H).
   intro H. elim (rem_6494  H).
  intros X1 X2. intro H. elim (rem_6495 X1 X2 H).
   intro H. elim (rem_6493  H).
  intros X1. intro H. elim (rem_6496 X1 H).
  intros X1. intro H. elim (rem_6499 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6500 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6497 X1 X2 X3 H).
   intro H. elim (rem_6489  H).
   intro H. elim (rem_6498  H).
  intros X1. intro H. elim (rem_6491 X1 H).
   intro H. elim (rem_6492  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6502 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6503 X1 X2 X3 X4 H).
   intro H. elim (rem_6488  H).
Qed.

Remark rem_6505 : (forall X:term, auto___def_26 X -> auto_knows_old X)
    -> forall X2:term, auto___def_28 X2 -> auto_knows_old X2. (* Cut history. *)
Proof.  intros epsilon_m__def_26_pknows_old. exact (rem_6504).
Defined.

Remark rem_6506 : (forall X:term, auto___def_26 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_27 X1 -> auto___def_28 X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_26_pknows_old. intros X1 X2.
  cut (auto___def_28 X2 -> auto_knows_old X2). tauto. exact (rem_6505 epsilon_m__def_26_pknows_old X2).
Defined.

Remark rem_6507 : (forall X:term, auto___def_26 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_27 X1 -> auto___def_28 X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_26_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_6448 epsilon_m__def_26_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6506 epsilon_m__def_26_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6508 : (forall X:term, auto___def_26 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_27 X1 -> auto___def_28 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_26_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6507 epsilon_m__def_26_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_26_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__def_26_pknows_old A1 A2. tauto.
Defined.

Remark rem_6509 : forall X1 X2:term, auto___def_26 (cons X1 X2) -> or_1
    (auto___def_27 X1 /\ auto___def_28 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6510 : (forall X:term, auto___def_26 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_26 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_26_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6509 X1 X2 H);  intros.
  apply (rem_6508 epsilon_m__def_26_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6511 : auto___def_26 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6512 : auto___def_26 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6513 : auto___def_26 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6514 : auto___def_26 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6516 : auto___def_26 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6517 : auto___def_26 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6518 : auto___def_26 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6520 : forall X1:term, auto___def_26 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6521 : forall X1 X2 X3:term, auto___def_26 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6522 : auto___def_26 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6523 : forall X1:term, auto___def_26 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6524 : forall X1 X2 X3:term, auto___def_26 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6526 : forall X1 X2 X3 X4:term, auto___def_26 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6527 : forall X1 X2 X3 X4:term, auto___def_26 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6528 : forall X2:term, auto___def_26 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_26_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6514  H).
   intro H. elim (rem_6511  H).
  intros X1 X2;  exact (rem_6510 epsilon_m__def_26_pknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_6525 X1 X2 H).
   intro H. elim (rem_6518  H).
  intros X1 X2. intro H. elim (rem_6519 X1 X2 H).
   intro H. elim (rem_6517  H).
  intros X1. intro H. elim (rem_6520 X1 H).
  intros X1. intro H. elim (rem_6523 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6524 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6521 X1 X2 X3 H).
   intro H. elim (rem_6513  H).
   intro H. elim (rem_6522  H).
  intros X1. intro H. elim (rem_6515 X1 H).
   intro H. elim (rem_6516  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6526 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6527 X1 X2 X3 X4 H).
   intro H. elim (rem_6512  H).
Qed.

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

Remark rem_6530 : forall X1 X2:term, auto___def_26 X2 -> auto___type_4 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_6420 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6529 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6531 : forall X1 X2:term, auto___def_26 X2 -> auto___type_4 X1 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6530 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6532 : 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_2175 X2).
Qed.

Remark rem_6533 : 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_6209 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6532 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6534 : 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_6533 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6535 : forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6238 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6536 : forall X1 X2:term, auto___def_52 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___def_52 X2 -> auto_knows_current (key X1 X2)). tauto. exact (rem_6535 X1 X2).
Qed.

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

Remark rem_6538 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_6537 X1).
Qed.

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

Remark rem_6540 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_6538 X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_6539 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6541 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6540 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_key_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6542 : forall X1 X2:term, auto___type_9 X2 -> auto___def_50 X1 -> auto_knows_old (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_old (key X1 X2)). tauto. exact (rem_6541 X1 X2).
Qed.

Remark rem_6543 : 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_449 X1).
Qed.

Remark rem_6544 : 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_112 X2 X1 H);  intros.
  apply (rem_6543 X1 X2);  tauto.
Qed.

Remark rem_6545 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_8_pknows_old.  tauto.
Defined.

Remark rem_6546 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> auto_knows_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old.  case (rem_6545 epsilon_m__type_8_pknows_old). clear  epsilon_m__type_8_pknows_old. intros. apply trans_knows_old_bob_1;  tauto.
 clear  epsilon_m__type_8_pknows_old. tauto.
Defined.

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

Remark rem_6548 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> auto___type_8 bob -> auto_knows_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intro H. intros.
  elim (rem_6547 H);  intros.
  apply (rem_6546 epsilon_m__type_8_pknows_old);  tauto.
Defined.

Remark rem_6549 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> auto_knows_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old.  case (rem_6545 epsilon_m__type_8_pknows_old). clear  epsilon_m__type_8_pknows_old. intros. apply trans_knows_old_alice_1;  tauto.
 clear  epsilon_m__type_8_pknows_old. tauto.
Defined.

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

Remark rem_6551 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> auto___type_8 alice -> auto_knows_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intro H. intros.
  elim (rem_6550 H);  intros.
  apply (rem_6549 epsilon_m__type_8_pknows_old);  tauto.
Defined.

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

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

Remark rem_6554 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1:term, auto_knows_old X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1. intros A1.
  case (rem_6553 epsilon_m__type_8_pknows_old X1 A1). clear  epsilon_m__type_8_pknows_old A1. intros. apply trans_knows_old_s_1;  tauto.
 clear  epsilon_m__type_8_pknows_old A1. tauto.
Defined.

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

Remark rem_6556 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1:term, auto___type_8 (s X1) -> auto_knows_old (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1. intro H. intros.
  elim (rem_6555 X1 H);  intros.
  apply (rem_6554 epsilon_m__type_8_pknows_old X1);  tauto.
Defined.

Remark rem_6557 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> auto_knows_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old.  case (rem_6545 epsilon_m__type_8_pknows_old). clear  epsilon_m__type_8_pknows_old. intros. apply trans_knows_old_server_1;  tauto.
 clear  epsilon_m__type_8_pknows_old. tauto.
Defined.

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

Remark rem_6559 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> auto___type_8 server -> auto_knows_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intro H. intros.
  elim (rem_6558 H);  intros.
  apply (rem_6557 epsilon_m__type_8_pknows_old);  tauto.
Defined.

Remark rem_6560 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old.  case (rem_6545 epsilon_m__type_8_pknows_old). clear  epsilon_m__type_8_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_m__type_8_pknows_old. tauto.
Defined.

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

Remark rem_6562 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> auto___type_8 nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intro H. intros.
  elim (rem_6561 H);  intros.
  apply (rem_6560 epsilon_m__type_8_pknows_old);  tauto.
Defined.

Remark rem_6563 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> auto_knows_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old.  case (rem_6545 epsilon_m__type_8_pknows_old). clear  epsilon_m__type_8_pknows_old. intros. apply trans_knows_old_i_1;  tauto.
 clear  epsilon_m__type_8_pknows_old. tauto.
Defined.

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

Remark rem_6565 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> auto___type_8 i -> auto_knows_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intro H. intros.
  elim (rem_6564 H);  intros.
  apply (rem_6563 epsilon_m__type_8_pknows_old);  tauto.
Defined.

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

Remark rem_6567 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_6566 epsilon_m__type_8_pknows_old X1).
Defined.

Remark rem_6568 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X2:term, auto___def_52 X2 -> auto___def_52 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6569 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_6568 epsilon_m__type_8_pknows_old X2).
Defined.

Remark rem_6570 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_6567 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_6569 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6571 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6570 epsilon_m__type_8_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_8_pknows_old A1 A2. intros. apply trans_knows_old_key_1;  tauto.
 clear  epsilon_m__type_8_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_6573 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_6572 epsilon_m__type_8_pknows_old X1).
Defined.

Remark rem_6574 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X2:term, auto___type_9 X2 -> auto___type_9 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6575 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_6574 epsilon_m__type_8_pknows_old X2).
Defined.

Remark rem_6576 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_6573 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_6575 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6577 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6576 epsilon_m__type_8_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_8_pknows_old A1 A2. intros. apply trans_knows_old_key_2;  tauto.
 clear  epsilon_m__type_8_pknows_old A1 A2. tauto.
Defined.

Remark rem_6578 : forall X1 X2:term, auto___type_8 (key X1 X2) -> or_2
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_6579 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_8 (key X1 X2) -> auto_knows_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6578 X1 X2 H);  intros.
  apply (rem_6571 epsilon_m__type_8_pknows_old X1 X2);  tauto.
  apply (rem_6577 epsilon_m__type_8_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6580 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_6552 epsilon_m__type_8_pknows_old X1).
Defined.

Remark rem_6581 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6582 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_6581 epsilon_m__type_8_pknows_old X2).
Defined.

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

Remark rem_6584 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_6583 epsilon_m__type_8_pknows_old X3).
Defined.

Remark rem_6585 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_6580 epsilon_m__type_8_pknows_old X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_6582 epsilon_m__type_8_pknows_old X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_6584 epsilon_m__type_8_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_6586 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6585 epsilon_m__type_8_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_8_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_1;  tauto.
 clear  epsilon_m__type_8_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_6587 : forall X1 X2 X3:term, auto___type_8 (nonceb_old X1 X2 X3) -> or_1
    (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6588 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto___type_8 (nonceb_old X1 X2 X3) -> auto_knows_old (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_6587 X1 X2 X3 H);  intros.
  apply (rem_6586 epsilon_m__type_8_pknows_old X1 X2 X3);  tauto.
Defined.

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

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

Remark rem_6591 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_knows_old (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1. intros A1.
  case (rem_6590 epsilon_m__type_8_pknows_old X1 A1). clear  epsilon_m__type_8_pknows_old A1. intros. apply trans_knows_old_noncea_old_1;  tauto.
 clear  epsilon_m__type_8_pknows_old A1. tauto.
Defined.

Remark rem_6592 : forall X1:term, auto___type_8 (noncea_old X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6593 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1:term, auto___type_8 (noncea_old X1) -> auto_knows_old (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1. intro H. intros.
  elim (rem_6592 X1 H);  intros.
  apply (rem_6591 epsilon_m__type_8_pknows_old X1);  tauto.
Defined.

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

Remark rem_6595 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_6594 epsilon_m__type_8_pknows_old X1).
Defined.

Remark rem_6596 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6597 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_6596 epsilon_m__type_8_pknows_old X2).
Defined.

Remark rem_6598 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_6595 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_6597 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6599 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6598 epsilon_m__type_8_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_8_pknows_old A1 A2. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  epsilon_m__type_8_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_6601 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_6600 epsilon_m__type_8_pknows_old X1).
Defined.

Remark rem_6602 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X2:term, auto___def_41 X2 -> auto___def_41 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6603 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_6602 epsilon_m__type_8_pknows_old X2).
Defined.

Remark rem_6604 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_6601 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_6603 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6605 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6604 epsilon_m__type_8_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_8_pknows_old A1 A2. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  epsilon_m__type_8_pknows_old A1 A2. tauto.
Defined.

Remark rem_6606 : (forall X:term, auto___type_8 X -> auto_knows_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_8_pknows_old. intros X1 X2.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_6552 epsilon_m__type_8_pknows_old X1).
Defined.

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

Remark rem_6608 : (forall X:term, auto___type_8 X -> auto_knows_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_8_pknows_old. intros X1 X2.
  cut (auto_knows_old X2 -> auto_knows_old X2). tauto. exact (rem_6607 epsilon_m__type_8_pknows_old X2).
Defined.

Remark rem_6609 : (forall X:term, auto___type_8 X -> auto_knows_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_8_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_6606 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6608 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6610 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6609 epsilon_m__type_8_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_8_pknows_old A1 A2. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  epsilon_m__type_8_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_6612 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_6611 epsilon_m__type_8_pknows_old X1).
Defined.

Remark rem_6613 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X2:term, auto___def_30 X2 -> auto___def_30 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6614 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_6613 epsilon_m__type_8_pknows_old X2).
Defined.

Remark rem_6615 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_6612 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_6614 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6616 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6615 epsilon_m__type_8_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_8_pknows_old A1 A2. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  epsilon_m__type_8_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_6618 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_6617 epsilon_m__type_8_pknows_old X1).
Defined.

Remark rem_6619 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6620 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_6619 epsilon_m__type_8_pknows_old X2).
Defined.

Remark rem_6621 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_6618 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_6620 epsilon_m__type_8_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6622 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6621 epsilon_m__type_8_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_8_pknows_old A1 A2. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  epsilon_m__type_8_pknows_old A1 A2. tauto.
Defined.

Remark rem_6623 : forall X1 X2:term, auto___type_8 (crypt X1 X2) -> or_5
    (auto___def_16 X1 /\ auto___def_17 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto_knows_old X1 /\ auto_knows_old X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto___type_4 X1 /\ auto___def_32 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_5_intro_1; tauto.
  intros. apply or_5_intro_2; tauto.
  intros. apply or_5_intro_3; tauto.
  intros. apply or_5_intro_4; tauto.
  intros. apply or_5_intro_5; tauto.
Qed.

Remark rem_6624 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_8 (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6623 X1 X2 H);  intros.
  apply (rem_6599 epsilon_m__type_8_pknows_old X1 X2);  tauto.
  apply (rem_6605 epsilon_m__type_8_pknows_old X1 X2);  tauto.
  apply (rem_6610 epsilon_m__type_8_pknows_old X1 X2);  tauto.
  apply (rem_6616 epsilon_m__type_8_pknows_old X1 X2);  tauto.
  apply (rem_6622 epsilon_m__type_8_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6625 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto_knows_old X1 -> auto_knows_old X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6609 epsilon_m__type_8_pknows_old X1 X2 A1 A2). clear  epsilon_m__type_8_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__type_8_pknows_old A1 A2. tauto.
Defined.

Remark rem_6626 : forall X1 X2:term, auto___type_8 (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_6627 : (forall X:term, auto___type_8 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_8 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_8_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6626 X1 X2 H);  intros.
  apply (rem_6625 epsilon_m__type_8_pknows_old X1 X2);  tauto.
Defined.

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

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

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

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

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

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

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

Remark rem_6635 : forall X1:term, auto___type_8 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__type_8_pknows_old 1.
  intro X. case X.
  exact (rem_6551 epsilon_m__type_8_pknows_old ).
  exact (rem_6548 epsilon_m__type_8_pknows_old ).
  intros X1 X2;  exact (rem_6627 epsilon_m__type_8_pknows_old X1 X2).
  intros X1 X2;  exact (rem_6624 epsilon_m__type_8_pknows_old X1 X2).
  exact (rem_6565 epsilon_m__type_8_pknows_old ).
  intros X1 X2;  exact (rem_6579 epsilon_m__type_8_pknows_old X1 X2).
  exact (rem_6562 epsilon_m__type_8_pknows_old ).
  intros X1. intro H. elim (rem_6630 X1 H).
  intros X1;  exact (rem_6593 epsilon_m__type_8_pknows_old X1).
  intros X1 X2 X3. intro H. elim (rem_6632 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_6588 epsilon_m__type_8_pknows_old X1 X2 X3).
   intro H. elim (rem_6629  H).
   intro H. elim (rem_6631  H).
  intros X1;  exact (rem_6556 epsilon_m__type_8_pknows_old X1).
  exact (rem_6559 epsilon_m__type_8_pknows_old ).
  intros X1 X2 X3 X4. intro H. elim (rem_6633 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6634 X1 X2 X3 X4 H).
   intro H. elim (rem_6628  H).
Qed.

Remark rem_6636 : forall X1 X2:term, auto___def_47 X2 -> auto___type_8 X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_8 X1 -> auto_knows_old X1). tauto. exact (rem_6635 X1).
Qed.

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

Remark rem_6638 : (forall X:term, auto___def_48 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___type_4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_48_pknows_old. intros X1 X2.
  cut (auto___type_4 X1 -> auto___type_4 X1). tauto. exact (rem_6637 epsilon_m__def_48_pknows_old X1).
Defined.

Remark rem_6639 : (forall X:term, auto___def_48 X -> auto_knows_old X)
    -> forall X2:term, auto___def_32 X2 -> auto___def_32 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6640 : (forall X:term, auto___def_48 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto___def_32 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_48_pknows_old. intros X1 X2.
  cut (auto___def_32 X2 -> auto___def_32 X2). tauto. exact (rem_6639 epsilon_m__def_48_pknows_old X2).
Defined.

Remark rem_6641 : (forall X:term, auto___def_48 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> (auto___type_4 X1 /\ auto___def_32 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_48_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___type_4 X1). 2:apply (rem_6638 epsilon_m__def_48_pknows_old X1 X2);  assumption.
  cut (auto___def_32 X2). 2:apply (rem_6640 epsilon_m__def_48_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6642 : (forall X:term, auto___def_48 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___type_4 X1 -> auto___def_32 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_48_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6641 epsilon_m__def_48_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_48_pknows_old A1 A2. intros. apply trans_knows_old_crypt_5;  tauto.
 clear  epsilon_m__def_48_pknows_old A1 A2. tauto.
Defined.

Remark rem_6643 : forall X1 X2:term, auto___def_48 (crypt X1 X2) -> or_1
    (auto___type_4 X1 /\ auto___def_32 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6644 : (forall X:term, auto___def_48 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_48 (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_48_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6643 X1 X2 H);  intros.
  apply (rem_6642 epsilon_m__def_48_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6645 : auto___def_48 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6646 : auto___def_48 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6647 : auto___def_48 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6648 : auto___def_48 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6650 : auto___def_48 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6651 : auto___def_48 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6652 : auto___def_48 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6654 : forall X1:term, auto___def_48 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6655 : forall X1 X2 X3:term, auto___def_48 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6656 : auto___def_48 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6657 : forall X1:term, auto___def_48 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6658 : forall X1 X2 X3:term, auto___def_48 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6660 : forall X1 X2 X3 X4:term, auto___def_48 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6661 : forall X1 X2 X3 X4:term, auto___def_48 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6662 : forall X1:term, auto___def_48 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_48_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6648  H).
   intro H. elim (rem_6645  H).
  intros X1 X2. intro H. elim (rem_6659 X1 X2 H).
  intros X1 X2;  exact (rem_6644 epsilon_m__def_48_pknows_old X1 X2).
   intro H. elim (rem_6652  H).
  intros X1 X2. intro H. elim (rem_6653 X1 X2 H).
   intro H. elim (rem_6651  H).
  intros X1. intro H. elim (rem_6654 X1 H).
  intros X1. intro H. elim (rem_6657 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6658 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6655 X1 X2 X3 H).
   intro H. elim (rem_6647  H).
   intro H. elim (rem_6656  H).
  intros X1. intro H. elim (rem_6649 X1 H).
   intro H. elim (rem_6650  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6660 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6661 X1 X2 X3 X4 H).
   intro H. elim (rem_6646  H).
Qed.

Remark rem_6663 : (forall X:term, auto___def_47 X -> auto_knows_old X)
    -> forall X1:term, auto___def_48 X1 -> auto_knows_old X1. (* Cut history. *)
Proof.  intros epsilon_m__def_47_pknows_old. exact (rem_6662).
Defined.

Remark rem_6664 : (forall X:term, auto___def_47 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_48 X1 -> auto___def_49 X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_47_pknows_old. intros X1 X2.
  cut (auto___def_48 X1 -> auto_knows_old X1). tauto. exact (rem_6663 epsilon_m__def_47_pknows_old X1).
Defined.

Remark rem_6665 : (forall X:term, auto___def_49 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_49_pknows_old.  tauto.
Defined.

Remark rem_6666 : (forall X:term, auto___def_49 X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_49_pknows_old.  case (rem_6665 epsilon_m__def_49_pknows_old). clear  epsilon_m__def_49_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_m__def_49_pknows_old. tauto.
Defined.

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

Remark rem_6668 : (forall X:term, auto___def_49 X -> auto_knows_old X)
    -> auto___def_49 nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_49_pknows_old. intro H. intros.
  elim (rem_6667 H);  intros.
  apply (rem_6666 epsilon_m__def_49_pknows_old);  tauto.
Defined.

Remark rem_6669 : auto___def_49 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6670 : auto___def_49 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6671 : auto___def_49 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6672 : auto___def_49 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6674 : auto___def_49 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6675 : auto___def_49 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6677 : forall X1:term, auto___def_49 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6678 : forall X1 X2 X3:term, auto___def_49 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6679 : auto___def_49 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6680 : forall X1:term, auto___def_49 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6681 : forall X1 X2 X3:term, auto___def_49 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_6684 : forall X1 X2 X3 X4:term, auto___def_49 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6685 : forall X1 X2 X3 X4:term, auto___def_49 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6686 : forall X2:term, auto___def_49 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_49_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6672  H).
   intro H. elim (rem_6669  H).
  intros X1 X2. intro H. elim (rem_6683 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6682 X1 X2 H).
   intro H. elim (rem_6675  H).
  intros X1 X2. intro H. elim (rem_6676 X1 X2 H).
  exact (rem_6668 epsilon_m__def_49_pknows_old ).
  intros X1. intro H. elim (rem_6677 X1 H).
  intros X1. intro H. elim (rem_6680 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6681 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6678 X1 X2 X3 H).
   intro H. elim (rem_6671  H).
   intro H. elim (rem_6679  H).
  intros X1. intro H. elim (rem_6673 X1 H).
   intro H. elim (rem_6674  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6684 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6685 X1 X2 X3 X4 H).
   intro H. elim (rem_6670  H).
Qed.

Remark rem_6687 : (forall X:term, auto___def_47 X -> auto_knows_old X)
    -> forall X2:term, auto___def_49 X2 -> auto_knows_old X2. (* Cut history. *)
Proof.  intros epsilon_m__def_47_pknows_old. exact (rem_6686).
Defined.

Remark rem_6688 : (forall X:term, auto___def_47 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_48 X1 -> auto___def_49 X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_47_pknows_old. intros X1 X2.
  cut (auto___def_49 X2 -> auto_knows_old X2). tauto. exact (rem_6687 epsilon_m__def_47_pknows_old X2).
Defined.

Remark rem_6689 : (forall X:term, auto___def_47 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_48 X1 -> auto___def_49 X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_47_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_6664 epsilon_m__def_47_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6688 epsilon_m__def_47_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6690 : (forall X:term, auto___def_47 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_48 X1 -> auto___def_49 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_47_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6689 epsilon_m__def_47_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_47_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__def_47_pknows_old A1 A2. tauto.
Defined.

Remark rem_6691 : forall X1 X2:term, auto___def_47 (cons X1 X2) -> or_1
    (auto___def_48 X1 /\ auto___def_49 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6692 : (forall X:term, auto___def_47 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_47 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_47_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6691 X1 X2 H);  intros.
  apply (rem_6690 epsilon_m__def_47_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6693 : auto___def_47 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6694 : auto___def_47 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6695 : auto___def_47 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6696 : auto___def_47 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6698 : auto___def_47 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6699 : auto___def_47 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6700 : auto___def_47 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6702 : forall X1:term, auto___def_47 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6703 : forall X1 X2 X3:term, auto___def_47 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6704 : auto___def_47 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6705 : forall X1:term, auto___def_47 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6706 : forall X1 X2 X3:term, auto___def_47 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6708 : forall X1 X2 X3 X4:term, auto___def_47 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6709 : forall X1 X2 X3 X4:term, auto___def_47 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6710 : forall X2:term, auto___def_47 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_47_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6696  H).
   intro H. elim (rem_6693  H).
  intros X1 X2;  exact (rem_6692 epsilon_m__def_47_pknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_6707 X1 X2 H).
   intro H. elim (rem_6700  H).
  intros X1 X2. intro H. elim (rem_6701 X1 X2 H).
   intro H. elim (rem_6699  H).
  intros X1. intro H. elim (rem_6702 X1 H).
  intros X1. intro H. elim (rem_6705 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6706 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6703 X1 X2 X3 H).
   intro H. elim (rem_6695  H).
   intro H. elim (rem_6704  H).
  intros X1. intro H. elim (rem_6697 X1 H).
   intro H. elim (rem_6698  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6708 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6709 X1 X2 X3 X4 H).
   intro H. elim (rem_6694  H).
Qed.

Remark rem_6711 : forall X1 X2:term, auto___def_47 X2 -> auto___type_8 X1 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_47 X2 -> auto_knows_old X2). tauto. exact (rem_6710 X2).
Qed.

Remark rem_6712 : forall X1 X2:term, auto___def_47 X2 -> auto___type_8 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_6636 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6711 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6713 : forall X1 X2:term, auto___def_47 X2 -> auto___type_8 X1 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6712 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6714 : 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_257 X1);  assumption.
  tauto.
Qed.

Remark rem_6715 : forall X1:term, auto_knows_old X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_6714 X1 A1). clear  A1. intros. apply trans_knows_old_s_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_6716 : forall X1:term, auto_knows_old (s X1) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_791 X1 H);  intros.
  apply (rem_257 X1);  tauto.
Qed.

Remark rem_6717 : forall X1:term, auto_agent X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_magent_pknows_old 1.
  intro X. case X.
  exact (rem_2238 epsilon_magent_pknows_old ).
  exact (rem_2236 epsilon_magent_pknows_old ).
  intros X1 X2. intro H. elim (rem_620 X1 X2 H).
  intros X1 X2. intro H. elim (rem_619 X1 X2 H).
  exact (rem_2242 epsilon_magent_pknows_old ).
  intros X1 X2. intro H. elim (rem_613 X1 X2 H).
   intro H. elim (rem_612  H).
  intros X1. intro H. elim (rem_614 X1 H).
  intros X1. intro H. elim (rem_617 X1 H).
  intros X1 X2 X3. intro H. elim (rem_618 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_615 X1 X2 X3 H).
   intro H. elim (rem_610  H).
   intro H. elim (rem_616  H).
  intros X1. intro H. elim (rem_611 X1 H).
  exact (rem_2240 epsilon_magent_pknows_old ).
  intros X1 X2 X3 X4. intro H. elim (rem_621 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_622 X1 X2 X3 X4 H).
   intro H. elim (rem_609  H).
Qed.

Remark rem_6718 : forall X1 X2:term, auto___def_7 X2 -> auto_agent X1 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_agent X1 -> auto_knows_old X1). tauto. exact (rem_6717 X1).
Qed.

Remark rem_6719 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6720 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_8_pknows_old. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_6719 epsilon_m__def_8_pknows_old X1);  assumption.
  tauto.
Defined.

Remark rem_6721 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X1:term, auto_agent X1 -> auto_knows_old (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_8_pknows_old. intros X1. intros A1.
  case (rem_6720 epsilon_m__def_8_pknows_old X1 A1). clear  epsilon_m__def_8_pknows_old A1. intros. apply trans_knows_old_noncea_old_1;  tauto.
 clear  epsilon_m__def_8_pknows_old A1. tauto.
Defined.

Remark rem_6722 : forall X1:term, auto___def_8 (noncea_old X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6723 : (forall X:term, auto___def_8 X -> auto_knows_old X)
    -> forall X1:term, auto___def_8 (noncea_old X1) -> auto_knows_old (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_8_pknows_old. intros X1. intro H. intros.
  elim (rem_6722 X1 H);  intros.
  apply (rem_6721 epsilon_m__def_8_pknows_old X1);  tauto.
Defined.

Remark rem_6724 : auto___def_8 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6725 : auto___def_8 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6726 : auto___def_8 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6727 : auto___def_8 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6729 : auto___def_8 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6730 : auto___def_8 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6731 : auto___def_8 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6733 : forall X1:term, auto___def_8 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6734 : forall X1 X2 X3:term, auto___def_8 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6735 : auto___def_8 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6736 : forall X1 X2 X3:term, auto___def_8 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_6739 : forall X1 X2 X3 X4:term, auto___def_8 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6740 : forall X1 X2 X3 X4:term, auto___def_8 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6741 : 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_6727  H).
   intro H. elim (rem_6724  H).
  intros X1 X2. intro H. elim (rem_6738 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6737 X1 X2 H).
   intro H. elim (rem_6731  H).
  intros X1 X2. intro H. elim (rem_6732 X1 X2 H).
   intro H. elim (rem_6730  H).
  intros X1. intro H. elim (rem_6733 X1 H).
  intros X1;  exact (rem_6723 epsilon_m__def_8_pknows_old X1).
  intros X1 X2 X3. intro H. elim (rem_6736 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6734 X1 X2 X3 H).
   intro H. elim (rem_6726  H).
   intro H. elim (rem_6735  H).
  intros X1. intro H. elim (rem_6728 X1 H).
   intro H. elim (rem_6729  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6739 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6740 X1 X2 X3 X4 H).
   intro H. elim (rem_6725  H).
Qed.

Remark rem_6742 : (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_6741).
Defined.

Remark rem_6743 : (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_6742 epsilon_m__def_7_pknows_old X1).
Defined.

Remark rem_6744 : (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_6745 : (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_6744 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_6746 : auto___def_9 nil -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6747 : (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_6746 H);  intros.
  apply (rem_6745 epsilon_m__def_9_pknows_old);  tauto.
Defined.

Remark rem_6748 : auto___def_9 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6749 : auto___def_9 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6750 : auto___def_9 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6751 : auto___def_9 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6753 : auto___def_9 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6754 : auto___def_9 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6756 : forall X1:term, auto___def_9 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6757 : forall X1 X2 X3:term, auto___def_9 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6758 : auto___def_9 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6759 : forall X1:term, auto___def_9 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6760 : forall X1 X2 X3:term, auto___def_9 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_6763 : forall X1 X2 X3 X4:term, auto___def_9 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6764 : forall X1 X2 X3 X4:term, auto___def_9 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6765 : 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_6751  H).
   intro H. elim (rem_6748  H).
  intros X1 X2. intro H. elim (rem_6762 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6761 X1 X2 H).
   intro H. elim (rem_6754  H).
  intros X1 X2. intro H. elim (rem_6755 X1 X2 H).
  exact (rem_6747 epsilon_m__def_9_pknows_old ).
  intros X1. intro H. elim (rem_6756 X1 H).
  intros X1. intro H. elim (rem_6759 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6760 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6757 X1 X2 X3 H).
   intro H. elim (rem_6750  H).
   intro H. elim (rem_6758  H).
  intros X1. intro H. elim (rem_6752 X1 H).
   intro H. elim (rem_6753  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6763 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6764 X1 X2 X3 X4 H).
   intro H. elim (rem_6749  H).
Qed.

Remark rem_6766 : (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_6765).
Defined.

Remark rem_6767 : (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_6766 epsilon_m__def_7_pknows_old X2).
Defined.

Remark rem_6768 : (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_6743 epsilon_m__def_7_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6767 epsilon_m__def_7_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6769 : (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_6768 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_6770 : 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_6771 : (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_6770 X1 X2 H);  intros.
  apply (rem_6769 epsilon_m__def_7_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6772 : auto___def_7 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6773 : auto___def_7 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6774 : auto___def_7 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6775 : auto___def_7 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6777 : auto___def_7 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6778 : auto___def_7 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6779 : auto___def_7 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6781 : forall X1:term, auto___def_7 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6782 : forall X1 X2 X3:term, auto___def_7 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6783 : auto___def_7 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6784 : forall X1:term, auto___def_7 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6785 : forall X1 X2 X3:term, auto___def_7 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6787 : forall X1 X2 X3 X4:term, auto___def_7 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6788 : forall X1 X2 X3 X4:term, auto___def_7 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6789 : 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_6775  H).
   intro H. elim (rem_6772  H).
  intros X1 X2;  exact (rem_6771 epsilon_m__def_7_pknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_6786 X1 X2 H).
   intro H. elim (rem_6779  H).
  intros X1 X2. intro H. elim (rem_6780 X1 X2 H).
   intro H. elim (rem_6778  H).
  intros X1. intro H. elim (rem_6781 X1 H).
  intros X1. intro H. elim (rem_6784 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6785 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6782 X1 X2 X3 H).
   intro H. elim (rem_6774  H).
   intro H. elim (rem_6783  H).
  intros X1. intro H. elim (rem_6776 X1 H).
   intro H. elim (rem_6777  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6787 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6788 X1 X2 X3 X4 H).
   intro H. elim (rem_6773  H).
Qed.

Remark rem_6790 : forall X1 X2:term, auto___def_7 X2 -> auto_agent 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_6789 X2).
Qed.

Remark rem_6791 : forall X1 X2:term, auto___def_7 X2 -> auto_agent 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_6718 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6790 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6792 : forall X1 X2:term, auto___def_7 X2 -> auto_agent X1 -> auto_knows_old (cons 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_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6793 : forall X1 X2:term, auto___def_52 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_449 X1).
Qed.

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

Remark rem_6795 : forall X1 X2:term, auto___def_58 X2 X1 -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_6794 X2 X1 H);  intros.
  apply (rem_6793 X1 X2);  tauto.
Qed.

Remark rem_6796 : forall X1 X2:term, auto___def_58 X2 X1 -> auto___def_59 X2 -> auto_knows_current X1. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2. intros. apply (rem_6795 X1 X2);  assumption.
Qed.

Remark rem_6797 : 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_653 X2).
Qed.

Remark rem_6798 : 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_6543 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_6797 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6799 : 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_6798 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6800 : (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_6801 : (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_6800 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_6802 : auto___type_1 bob -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6803 : (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_6802 H);  intros.
  apply (rem_6801 epsilon_m__type_1_pknows_old);  tauto.
Defined.

Remark rem_6804 : (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_6800 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_6805 : auto___type_1 alice -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6806 : (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_6805 H);  intros.
  apply (rem_6804 epsilon_m__type_1_pknows_old);  tauto.
Defined.

Remark rem_6807 : (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_6800 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_6808 : auto___type_1 server -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6809 : (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_6808 H);  intros.
  apply (rem_6807 epsilon_m__type_1_pknows_old);  tauto.
Defined.

Remark rem_6810 : (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_6800 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_6811 : auto___type_1 i -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6812 : (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_6811 H);  intros.
  apply (rem_6810 epsilon_m__type_1_pknows_old);  tauto.
Defined.

Remark rem_6813 : auto___type_1 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6814 : auto___type_1 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6816 : auto___type_1 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6818 : forall X1:term, auto___type_1 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6819 : forall X1 X2 X3:term, auto___type_1 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6820 : auto___type_1 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6821 : forall X1:term, auto___type_1 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6822 : forall X1 X2 X3:term, auto___type_1 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_6825 : forall X1 X2 X3 X4:term, auto___type_1 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6826 : forall X1 X2 X3 X4:term, auto___type_1 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6827 : 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_6806 epsilon_m__type_1_pknows_old ).
  exact (rem_6803 epsilon_m__type_1_pknows_old ).
  intros X1 X2. intro H. elim (rem_6824 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6823 X1 X2 H).
  exact (rem_6812 epsilon_m__type_1_pknows_old ).
  intros X1 X2. intro H. elim (rem_6817 X1 X2 H).
   intro H. elim (rem_6816  H).
  intros X1. intro H. elim (rem_6818 X1 H).
  intros X1. intro H. elim (rem_6821 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6822 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6819 X1 X2 X3 H).
   intro H. elim (rem_6814  H).
   intro H. elim (rem_6820  H).
  intros X1. intro H. elim (rem_6815 X1 H).
  exact (rem_6809 epsilon_m__type_1_pknows_old ).
  intros X1 X2 X3 X4. intro H. elim (rem_6825 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6826 X1 X2 X3 X4 H).
   intro H. elim (rem_6813  H).
Qed.

Remark rem_6828 : forall X1 X2:term, auto___def_11 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_6827 X1).
Qed.

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

Remark rem_6830 : (forall X:term, auto___def_12 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_12_pknows_old. intros X1 X2 X3.
  cut (auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_6829 epsilon_m__def_12_pknows_old X1).
Defined.

Remark rem_6831 : (forall X:term, auto___def_12 X -> auto_knows_old X)
    -> forall X2:term, auto_agent X2 -> auto_agent X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6832 : (forall X:term, auto___def_12 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_12_pknows_old. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_6831 epsilon_m__def_12_pknows_old X2).
Defined.

Remark rem_6833 : (forall X:term, auto___def_12 X -> auto_knows_old X)
    -> forall X3:term, auto_knows_old X3 -> auto_knows_old X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6834 : (forall X:term, auto___def_12 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_12_pknows_old. intros X1 X2 X3.
  cut (auto_knows_old X3 -> auto_knows_old X3). tauto. exact (rem_6833 epsilon_m__def_12_pknows_old X3).
Defined.

Remark rem_6835 : (forall X:term, auto___def_12 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_12_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_old X1). 2:apply (rem_6830 epsilon_m__def_12_pknows_old X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_6832 epsilon_m__def_12_pknows_old X1 X2 X3);  assumption.
  cut (auto_knows_old X3). 2:apply (rem_6834 epsilon_m__def_12_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_6836 : (forall X:term, auto___def_12 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_knows_old X1 -> auto_agent X2 -> auto_knows_old X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_12_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6835 epsilon_m__def_12_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m__def_12_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_1;  tauto.
 clear  epsilon_m__def_12_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_6837 : forall X1 X2 X3:term, auto___def_12 (nonceb_old X1 X2 X3) -> or_1
    (auto_knows_old X1 /\ auto_agent X2 /\ auto_knows_old X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6838 : (forall X:term, auto___def_12 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto___def_12 (nonceb_old X1 X2 X3) -> auto_knows_old (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_12_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_6837 X1 X2 X3 H);  intros.
  apply (rem_6836 epsilon_m__def_12_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_6839 : auto___def_12 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6840 : auto___def_12 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6841 : auto___def_12 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6842 : auto___def_12 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6844 : auto___def_12 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6845 : auto___def_12 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6846 : auto___def_12 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6848 : forall X1:term, auto___def_12 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6849 : auto___def_12 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6850 : forall X1:term, auto___def_12 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6851 : forall X1 X2 X3:term, auto___def_12 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_6854 : forall X1 X2 X3 X4:term, auto___def_12 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6855 : forall X1 X2 X3 X4:term, auto___def_12 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6856 : forall X1:term, auto___def_12 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_12_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6842  H).
   intro H. elim (rem_6839  H).
  intros X1 X2. intro H. elim (rem_6853 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6852 X1 X2 H).
   intro H. elim (rem_6846  H).
  intros X1 X2. intro H. elim (rem_6847 X1 X2 H).
   intro H. elim (rem_6845  H).
  intros X1. intro H. elim (rem_6848 X1 H).
  intros X1. intro H. elim (rem_6850 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6851 X1 X2 X3 H).
  intros X1 X2 X3;  exact (rem_6838 epsilon_m__def_12_pknows_old X1 X2 X3).
   intro H. elim (rem_6841  H).
   intro H. elim (rem_6849  H).
  intros X1. intro H. elim (rem_6843 X1 H).
   intro H. elim (rem_6844  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6854 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6855 X1 X2 X3 X4 H).
   intro H. elim (rem_6840  H).
Qed.

Remark rem_6857 : (forall X:term, auto___def_11 X -> auto_knows_old X)
    -> forall X1:term, auto___def_12 X1 -> auto_knows_old X1. (* Cut history. *)
Proof.  intros epsilon_m__def_11_pknows_old. exact (rem_6856).
Defined.

Remark rem_6858 : (forall X:term, auto___def_11 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_11_pknows_old. intros X1 X2.
  cut (auto___def_12 X1 -> auto_knows_old X1). tauto. exact (rem_6857 epsilon_m__def_11_pknows_old X1).
Defined.

Remark rem_6859 : (forall X:term, auto___def_14 X -> auto_knows_old X)
    -> forall X1:term, auto___def_16 X1 -> auto___def_16 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6860 : (forall X:term, auto___def_14 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_16 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_14_pknows_old. intros X1 X2.
  cut (auto___def_16 X1 -> auto___def_16 X1). tauto. exact (rem_6859 epsilon_m__def_14_pknows_old X1).
Defined.

Remark rem_6861 : (forall X:term, auto___def_14 X -> auto_knows_old X)
    -> forall X2:term, auto___def_17 X2 -> auto___def_17 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_6862 : (forall X:term, auto___def_14 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto___def_17 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_14_pknows_old. intros X1 X2.
  cut (auto___def_17 X2 -> auto___def_17 X2). tauto. exact (rem_6861 epsilon_m__def_14_pknows_old X2).
Defined.

Remark rem_6863 : (forall X:term, auto___def_14 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> (auto___def_16 X1 /\ auto___def_17 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_14_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto___def_16 X1). 2:apply (rem_6860 epsilon_m__def_14_pknows_old X1 X2);  assumption.
  cut (auto___def_17 X2). 2:apply (rem_6862 epsilon_m__def_14_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6864 : (forall X:term, auto___def_14 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_16 X1 -> auto___def_17 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_14_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6863 epsilon_m__def_14_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_14_pknows_old A1 A2. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  epsilon_m__def_14_pknows_old A1 A2. tauto.
Defined.

Remark rem_6865 : forall X1 X2:term, auto___def_14 (crypt X1 X2) -> or_1
    (auto___def_16 X1 /\ auto___def_17 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6866 : (forall X:term, auto___def_14 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_14 (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_14_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6865 X1 X2 H);  intros.
  apply (rem_6864 epsilon_m__def_14_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6867 : auto___def_14 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6868 : auto___def_14 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6869 : auto___def_14 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6870 : auto___def_14 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6872 : auto___def_14 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6873 : auto___def_14 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6874 : auto___def_14 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6876 : forall X1:term, auto___def_14 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6877 : forall X1 X2 X3:term, auto___def_14 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6878 : auto___def_14 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6879 : forall X1:term, auto___def_14 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6880 : forall X1 X2 X3:term, auto___def_14 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6882 : forall X1 X2 X3 X4:term, auto___def_14 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6883 : forall X1 X2 X3 X4:term, auto___def_14 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6884 : forall X1:term, auto___def_14 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m__def_14_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6870  H).
   intro H. elim (rem_6867  H).
  intros X1 X2. intro H. elim (rem_6881 X1 X2 H).
  intros X1 X2;  exact (rem_6866 epsilon_m__def_14_pknows_old X1 X2).
   intro H. elim (rem_6874  H).
  intros X1 X2. intro H. elim (rem_6875 X1 X2 H).
   intro H. elim (rem_6873  H).
  intros X1. intro H. elim (rem_6876 X1 H).
  intros X1. intro H. elim (rem_6879 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6880 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6877 X1 X2 X3 H).
   intro H. elim (rem_6869  H).
   intro H. elim (rem_6878  H).
  intros X1. intro H. elim (rem_6871 X1 H).
   intro H. elim (rem_6872  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6882 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6883 X1 X2 X3 X4 H).
   intro H. elim (rem_6868  H).
Qed.

Remark rem_6885 : (forall X:term, auto___def_13 X -> auto_knows_old X)
    -> forall X1:term, auto___def_14 X1 -> auto_knows_old X1. (* Cut history. *)
Proof.  intros epsilon_m__def_13_pknows_old. exact (rem_6884).
Defined.

Remark rem_6886 : (forall X:term, auto___def_13 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_14 X1 -> auto___def_15 X2 -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_13_pknows_old. intros X1 X2.
  cut (auto___def_14 X1 -> auto_knows_old X1). tauto. exact (rem_6885 epsilon_m__def_13_pknows_old X1).
Defined.

Remark rem_6887 : (forall X:term, auto___def_15 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_15_pknows_old.  tauto.
Defined.

Remark rem_6888 : (forall X:term, auto___def_15 X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_15_pknows_old.  case (rem_6887 epsilon_m__def_15_pknows_old). clear  epsilon_m__def_15_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_m__def_15_pknows_old. tauto.
Defined.

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

Remark rem_6890 : (forall X:term, auto___def_15 X -> auto_knows_old X)
    -> auto___def_15 nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_15_pknows_old. intro H. intros.
  elim (rem_6889 H);  intros.
  apply (rem_6888 epsilon_m__def_15_pknows_old);  tauto.
Defined.

Remark rem_6891 : auto___def_15 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6892 : auto___def_15 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6893 : auto___def_15 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6894 : auto___def_15 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6896 : auto___def_15 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6897 : auto___def_15 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6899 : forall X1:term, auto___def_15 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6900 : forall X1 X2 X3:term, auto___def_15 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6901 : auto___def_15 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6902 : forall X1:term, auto___def_15 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6903 : forall X1 X2 X3:term, auto___def_15 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_6906 : forall X1 X2 X3 X4:term, auto___def_15 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6907 : forall X1 X2 X3 X4:term, auto___def_15 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6908 : forall X2:term, auto___def_15 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_15_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6894  H).
   intro H. elim (rem_6891  H).
  intros X1 X2. intro H. elim (rem_6905 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6904 X1 X2 H).
   intro H. elim (rem_6897  H).
  intros X1 X2. intro H. elim (rem_6898 X1 X2 H).
  exact (rem_6890 epsilon_m__def_15_pknows_old ).
  intros X1. intro H. elim (rem_6899 X1 H).
  intros X1. intro H. elim (rem_6902 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6903 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6900 X1 X2 X3 H).
   intro H. elim (rem_6893  H).
   intro H. elim (rem_6901  H).
  intros X1. intro H. elim (rem_6895 X1 H).
   intro H. elim (rem_6896  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6906 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6907 X1 X2 X3 X4 H).
   intro H. elim (rem_6892  H).
Qed.

Remark rem_6909 : (forall X:term, auto___def_13 X -> auto_knows_old X)
    -> forall X2:term, auto___def_15 X2 -> auto_knows_old X2. (* Cut history. *)
Proof.  intros epsilon_m__def_13_pknows_old. exact (rem_6908).
Defined.

Remark rem_6910 : (forall X:term, auto___def_13 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_14 X1 -> auto___def_15 X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_13_pknows_old. intros X1 X2.
  cut (auto___def_15 X2 -> auto_knows_old X2). tauto. exact (rem_6909 epsilon_m__def_13_pknows_old X2).
Defined.

Remark rem_6911 : (forall X:term, auto___def_13 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_14 X1 -> auto___def_15 X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_13_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_6886 epsilon_m__def_13_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6910 epsilon_m__def_13_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6912 : (forall X:term, auto___def_13 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_14 X1 -> auto___def_15 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_13_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6911 epsilon_m__def_13_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_13_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__def_13_pknows_old A1 A2. tauto.
Defined.

Remark rem_6913 : forall X1 X2:term, auto___def_13 (cons X1 X2) -> or_1
    (auto___def_14 X1 /\ auto___def_15 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_6914 : (forall X:term, auto___def_13 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_13 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_13_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6913 X1 X2 H);  intros.
  apply (rem_6912 epsilon_m__def_13_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6915 : auto___def_13 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6916 : auto___def_13 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6917 : auto___def_13 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6918 : auto___def_13 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6920 : auto___def_13 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6921 : auto___def_13 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6922 : auto___def_13 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6924 : forall X1:term, auto___def_13 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6925 : forall X1 X2 X3:term, auto___def_13 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6926 : auto___def_13 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6927 : forall X1:term, auto___def_13 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6928 : forall X1 X2 X3:term, auto___def_13 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6930 : forall X1 X2 X3 X4:term, auto___def_13 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6931 : forall X1 X2 X3 X4:term, auto___def_13 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6932 : forall X2:term, auto___def_13 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_13_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6918  H).
   intro H. elim (rem_6915  H).
  intros X1 X2;  exact (rem_6914 epsilon_m__def_13_pknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_6929 X1 X2 H).
   intro H. elim (rem_6922  H).
  intros X1 X2. intro H. elim (rem_6923 X1 X2 H).
   intro H. elim (rem_6921  H).
  intros X1. intro H. elim (rem_6924 X1 H).
  intros X1. intro H. elim (rem_6927 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6928 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6925 X1 X2 X3 H).
   intro H. elim (rem_6917  H).
   intro H. elim (rem_6926  H).
  intros X1. intro H. elim (rem_6919 X1 H).
   intro H. elim (rem_6920  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6930 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6931 X1 X2 X3 X4 H).
   intro H. elim (rem_6916  H).
Qed.

Remark rem_6933 : (forall X:term, auto___def_11 X -> auto_knows_old X)
    -> forall X2:term, auto___def_13 X2 -> auto_knows_old X2. (* Cut history. *)
Proof.  intros epsilon_m__def_11_pknows_old. exact (rem_6932).
Defined.

Remark rem_6934 : (forall X:term, auto___def_11 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_11_pknows_old. intros X1 X2.
  cut (auto___def_13 X2 -> auto_knows_old X2). tauto. exact (rem_6933 epsilon_m__def_11_pknows_old X2).
Defined.

Remark rem_6935 : (forall X:term, auto___def_11 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> (auto_knows_old X1 /\ auto_knows_old X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_11_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto_knows_old X1). 2:apply (rem_6858 epsilon_m__def_11_pknows_old X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6934 epsilon_m__def_11_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6936 : (forall X:term, auto___def_11 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_12 X1 -> auto___def_13 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_11_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_6935 epsilon_m__def_11_pknows_old X1 X2 A1 A2). clear  epsilon_m__def_11_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m__def_11_pknows_old A1 A2. tauto.
Defined.

Remark rem_6937 : forall X1 X2:term, auto___def_11 (cons 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_6938 : (forall X:term, auto___def_11 X -> auto_knows_old X)
    -> forall X1 X2:term, auto___def_11 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_11_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_6937 X1 X2 H);  intros.
  apply (rem_6936 epsilon_m__def_11_pknows_old X1 X2);  tauto.
Defined.

Remark rem_6939 : auto___def_11 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6940 : auto___def_11 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6941 : auto___def_11 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6942 : auto___def_11 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6944 : auto___def_11 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6945 : auto___def_11 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6946 : auto___def_11 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6948 : forall X1:term, auto___def_11 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6949 : forall X1 X2 X3:term, auto___def_11 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6950 : auto___def_11 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6951 : forall X1:term, auto___def_11 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6952 : forall X1 X2 X3:term, auto___def_11 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_6954 : forall X1 X2 X3 X4:term, auto___def_11 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6955 : forall X1 X2 X3 X4:term, auto___def_11 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_6956 : forall X2:term, auto___def_11 X2 -> auto_knows_old X2. (* Induct. *)
Proof.
  fix epsilon_m__def_11_pknows_old 1.
  intro X. case X.
   intro H. elim (rem_6942  H).
   intro H. elim (rem_6939  H).
  intros X1 X2;  exact (rem_6938 epsilon_m__def_11_pknows_old X1 X2).
  intros X1 X2. intro H. elim (rem_6953 X1 X2 H).
   intro H. elim (rem_6946  H).
  intros X1 X2. intro H. elim (rem_6947 X1 X2 H).
   intro H. elim (rem_6945  H).
  intros X1. intro H. elim (rem_6948 X1 H).
  intros X1. intro H. elim (rem_6951 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6952 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6949 X1 X2 X3 H).
   intro H. elim (rem_6941  H).
   intro H. elim (rem_6950  H).
  intros X1. intro H. elim (rem_6943 X1 H).
   intro H. elim (rem_6944  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6954 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6955 X1 X2 X3 X4 H).
   intro H. elim (rem_6940  H).
Qed.

Remark rem_6957 : forall X1 X2:term, auto___def_11 X2 -> auto___type_1 X1 -> auto_knows_old X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_11 X2 -> auto_knows_old X2). tauto. exact (rem_6956 X2).
Qed.

Remark rem_6958 : forall X1 X2:term, auto___def_11 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_6828 X1 X2);  assumption.
  cut (auto_knows_old X2). 2:apply (rem_6957 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6959 : forall X1 X2:term, auto___def_11 X2 -> auto___type_1 X1 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6958 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6960 : auto_agent alice. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans_agent_alice_1;  tauto.
 tauto.
Qed.

Remark rem_6961 : 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_449 X1);  assumption.
  tauto.
Qed.

Remark rem_6962 : forall X1:term, auto_knows_current X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_6961 X1 A1). clear  A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_6963 : forall X1 X2:term, auto___def_2 X2 -> auto___type_9 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_257 X1).
Qed.

Remark rem_6964 : forall X1 X2:term, auto___type_9 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___type_9 X2 -> auto_knows_old X1 -> auto_knows_old X1). tauto. exact (rem_6963 X1 X2).
Qed.

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

Remark rem_6966 : 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_6965 X2 X1 H);  intros.
  apply (rem_6964 X1 X2);  tauto.
Qed.

Remark rem_6967 : auto_knows_current nil. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans_knows_current_nil_1;  tauto.
 tauto.
Qed.

Remark rem_6968 : auto_agent server. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans_agent_server_1;  tauto.
 tauto.
Qed.

Remark rem_6969 : auto_agent bob. (* Deduce positive atom. *)
Proof.
   case rem_124. intros. apply trans_agent_bob_1;  tauto.
 tauto.
Qed.

Remark rem_6970 : 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_6798 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_6971 : forall X1:term, auto_agent X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_magent_pknows_current 1.
  intro X. case X.
  exact (rem_1954 epsilon_magent_pknows_current ).
  exact (rem_1952 epsilon_magent_pknows_current ).
  intros X1 X2. intro H. elim (rem_620 X1 X2 H).
  intros X1 X2. intro H. elim (rem_619 X1 X2 H).
  exact (rem_1958 epsilon_magent_pknows_current ).
  intros X1 X2. intro H. elim (rem_613 X1 X2 H).
   intro H. elim (rem_612  H).
  intros X1. intro H. elim (rem_614 X1 H).
  intros X1. intro H. elim (rem_617 X1 H).
  intros X1 X2 X3. intro H. elim (rem_618 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_615 X1 X2 X3 H).
   intro H. elim (rem_610  H).
   intro H. elim (rem_616  H).
  intros X1. intro H. elim (rem_611 X1 H).
  exact (rem_1956 epsilon_magent_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_621 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_622 X1 X2 X3 X4 H).
   intro H. elim (rem_609  H).
Qed.

Remark rem_6972 : 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_6209 X1 X2).
Qed.

Remark rem_6973 : 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_860 X1 X2 H);  intros.
  apply (rem_6972 X1 X2);  tauto.
Qed.

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

Remark rem_6975 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current.  case (rem_6974 epsilon_m__type_13_pknows_current). clear  epsilon_m__type_13_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_13_pknows_current. tauto.
Defined.

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

Remark rem_6977 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> auto___type_13 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intro H. intros.
  elim (rem_6976 H);  intros.
  apply (rem_6975 epsilon_m__type_13_pknows_current);  tauto.
Defined.

Remark rem_6978 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current.  case (rem_6974 epsilon_m__type_13_pknows_current). clear  epsilon_m__type_13_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_13_pknows_current. tauto.
Defined.

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

Remark rem_6980 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> auto___type_13 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intro H. intros.
  elim (rem_6979 H);  intros.
  apply (rem_6978 epsilon_m__type_13_pknows_current);  tauto.
Defined.

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

Remark rem_6982 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_6981 epsilon_m__type_13_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_6983 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1. intros A1.
  case (rem_6982 epsilon_m__type_13_pknows_current X1 A1). clear  epsilon_m__type_13_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_13_pknows_current A1. tauto.
Defined.

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

Remark rem_6985 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1:term, auto___type_13 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1. intro H. intros.
  elim (rem_6984 X1 H);  intros.
  apply (rem_6983 epsilon_m__type_13_pknows_current X1);  tauto.
Defined.

Remark rem_6986 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current.  case (rem_6974 epsilon_m__type_13_pknows_current). clear  epsilon_m__type_13_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_13_pknows_current. tauto.
Defined.

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

Remark rem_6988 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> auto___type_13 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intro H. intros.
  elim (rem_6987 H);  intros.
  apply (rem_6986 epsilon_m__type_13_pknows_current);  tauto.
Defined.

Remark rem_6989 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current.  case (rem_6974 epsilon_m__type_13_pknows_current). clear  epsilon_m__type_13_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_13_pknows_current. tauto.
Defined.

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

Remark rem_6991 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> auto___type_13 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intro H. intros.
  elim (rem_6990 H);  intros.
  apply (rem_6989 epsilon_m__type_13_pknows_current);  tauto.
Defined.

Remark rem_6992 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current.  case (rem_6974 epsilon_m__type_13_pknows_current). clear  epsilon_m__type_13_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_13_pknows_current. tauto.
Defined.

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

Remark rem_6994 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> auto___type_13 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intro H. intros.
  elim (rem_6993 H);  intros.
  apply (rem_6992 epsilon_m__type_13_pknows_current);  tauto.
Defined.

Remark rem_6995 : (forall X:term, auto___type_13 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_6996 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_6995 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_6998 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_6997 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_6999 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_6996 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_6998 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7000 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6999 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_7002 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_7001 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_7004 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_7003 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_7005 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_7002 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_7004 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7006 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7005 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_7008 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_7007 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_7010 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_7009 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_7011 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_7008 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_7010 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7012 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7011 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

Remark rem_7013 : forall X1 X2:term, auto___type_13 (key X1 X2) -> or_3
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
    (auto___def_54 X1 /\ auto___def_55 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_3_intro_1; tauto.
  intros. apply or_3_intro_2; tauto.
  intros. apply or_3_intro_3; tauto.
Qed.

Remark rem_7014 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_13 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7013 X1 X2 H);  intros.
  apply (rem_7000 epsilon_m__type_13_pknows_current X1 X2);  tauto.
  apply (rem_7006 epsilon_m__type_13_pknows_current X1 X2);  tauto.
  apply (rem_7012 epsilon_m__type_13_pknows_current X1 X2);  tauto.
Defined.

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

Remark rem_7016 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_7015 epsilon_m__type_13_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_7017 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1. intros A1.
  case (rem_7016 epsilon_m__type_13_pknows_current X1 A1). clear  epsilon_m__type_13_pknows_current A1. intros. apply trans_knows_current_noncea_current_1;  tauto.
 clear  epsilon_m__type_13_pknows_current A1. tauto.
Defined.

Remark rem_7018 : forall X1:term, auto___type_13 (noncea_current X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7019 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1:term, auto___type_13 (noncea_current X1) -> auto_knows_current (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1. intro H. intros.
  elim (rem_7018 X1 H);  intros.
  apply (rem_7017 epsilon_m__type_13_pknows_current X1);  tauto.
Defined.

Remark rem_7020 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2 X3.  case (rem_6974 epsilon_m__type_13_pknows_current). clear  epsilon_m__type_13_pknows_current. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_13_pknows_current. tauto.
Defined.

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

Remark rem_7022 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_13 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_7021 X1 X2 X3 H);  intros.
  apply (rem_7020 epsilon_m__type_13_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_7023 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1.  case (rem_6974 epsilon_m__type_13_pknows_current). clear  epsilon_m__type_13_pknows_current. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_13_pknows_current. tauto.
Defined.

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

Remark rem_7025 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1:term, auto___type_13 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1. intro H. intros.
  elim (rem_7024 X1 H);  intros.
  apply (rem_7023 epsilon_m__type_13_pknows_current X1);  tauto.
Defined.

Remark rem_7026 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_6981 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_7028 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_7027 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_7029 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7030 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_7029 epsilon_m__type_13_pknows_current X3).
Defined.

Remark rem_7031 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_7026 epsilon_m__type_13_pknows_current X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_7028 epsilon_m__type_13_pknows_current X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_7030 epsilon_m__type_13_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7032 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7031 epsilon_m__type_13_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_13_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7033 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_13 (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_5942 X1 X2 X3 H);  intros.
  apply (rem_7032 epsilon_m__type_13_pknows_current X1 X2 X3);  tauto.
Defined.

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

Remark rem_7035 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_7034 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_7037 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_7036 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_7038 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_7035 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_7037 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7039 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7038 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_7041 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_7040 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_7043 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_7042 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_7044 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_7041 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_7043 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7045 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7044 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_7047 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_7046 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_7049 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_7048 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_7050 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_7047 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_7049 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7051 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7050 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

Remark rem_7052 : (forall X:term, auto___type_13 X -> auto_knows_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_13_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_6981 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_7054 : (forall X:term, auto___type_13 X -> auto_knows_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_13_pknows_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_7053 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_7055 : (forall X:term, auto___type_13 X -> auto_knows_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_13_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7052 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7054 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7056 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7055 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_7058 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_7057 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_7060 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_7059 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_7061 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_7058 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_7060 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7062 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7061 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_7064 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_7063 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_7066 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_7065 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_7067 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_7064 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_7066 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7068 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7067 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

Remark rem_7069 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_6981 epsilon_m__type_13_pknows_current X1).
Defined.

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

Remark rem_7071 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_7070 epsilon_m__type_13_pknows_current X2).
Defined.

Remark rem_7072 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7069 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_7071 epsilon_m__type_13_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7073 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7072 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_crypt_7;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

Remark rem_7074 : forall X1 X2:term, auto___type_13 (crypt X1 X2) -> or_7
    (auto___def_78 X1 /\ auto___def_79 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___def_70 X1 /\ auto___def_71 X2)
    (auto___def_89 X1 /\ auto___def_90 X2)
    (auto_knows_current X1 /\ auto___def_81 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_7_intro_1; tauto.
  intros. apply or_7_intro_2; tauto.
  intros. apply or_7_intro_3; tauto.
  intros. apply or_7_intro_4; tauto.
  intros. apply or_7_intro_5; tauto.
  intros. apply or_7_intro_6; tauto.
  intros. apply or_7_intro_7; tauto.
Qed.

Remark rem_7075 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_13 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7074 X1 X2 H);  intros.
  apply (rem_7039 epsilon_m__type_13_pknows_current X1 X2);  tauto.
  apply (rem_7045 epsilon_m__type_13_pknows_current X1 X2);  tauto.
  apply (rem_7051 epsilon_m__type_13_pknows_current X1 X2);  tauto.
  apply (rem_7056 epsilon_m__type_13_pknows_current X1 X2);  tauto.
  apply (rem_7062 epsilon_m__type_13_pknows_current X1 X2);  tauto.
  apply (rem_7068 epsilon_m__type_13_pknows_current X1 X2);  tauto.
  apply (rem_7073 epsilon_m__type_13_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7076 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7055 epsilon_m__type_13_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_13_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_13_pknows_current A1 A2. tauto.
Defined.

Remark rem_7077 : forall X1 X2:term, auto___type_13 (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_7078 : (forall X:term, auto___type_13 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_13 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_13_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7077 X1 X2 H);  intros.
  apply (rem_7076 epsilon_m__type_13_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7079 : auto___type_13 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7080 : auto___type_13 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7081 : auto___type_13 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7082 : forall X1 X2 X3 X4:term, auto___type_13 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7083 : forall X1 X2 X3 X4:term, auto___type_13 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7084 : forall X1:term, auto___type_13 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_13_pknows_current 1.
  intro X. case X.
  exact (rem_6980 epsilon_m__type_13_pknows_current ).
  exact (rem_6977 epsilon_m__type_13_pknows_current ).
  intros X1 X2;  exact (rem_7078 epsilon_m__type_13_pknows_current X1 X2).
  intros X1 X2;  exact (rem_7075 epsilon_m__type_13_pknows_current X1 X2).
  exact (rem_6994 epsilon_m__type_13_pknows_current ).
  intros X1 X2;  exact (rem_7014 epsilon_m__type_13_pknows_current X1 X2).
  exact (rem_6991 epsilon_m__type_13_pknows_current ).
  intros X1;  exact (rem_7019 epsilon_m__type_13_pknows_current X1).
  intros X1;  exact (rem_7025 epsilon_m__type_13_pknows_current X1).
  intros X1 X2 X3;  exact (rem_7033 epsilon_m__type_13_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_7022 epsilon_m__type_13_pknows_current X1 X2 X3).
   intro H. elim (rem_7080  H).
   intro H. elim (rem_7081  H).
  intros X1;  exact (rem_6985 epsilon_m__type_13_pknows_current X1).
  exact (rem_6988 epsilon_m__type_13_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_7082 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7083 X1 X2 X3 X4 H).
   intro H. elim (rem_7079  H).
Qed.

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

Remark rem_7086 : (forall X:term, auto___def_76 X -> auto_knows_current X)
    -> forall X1:term, auto___def_78 X1 -> auto___def_78 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7087 : (forall X:term, auto___def_76 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_76_pknows_current. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_7086 epsilon_m__def_76_pknows_current X1).
Defined.

Remark rem_7088 : (forall X:term, auto___def_76 X -> auto_knows_current X)
    -> forall X2:term, auto___def_79 X2 -> auto___def_79 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7089 : (forall X:term, auto___def_76 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_76_pknows_current. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_7088 epsilon_m__def_76_pknows_current X2).
Defined.

Remark rem_7090 : (forall X:term, auto___def_76 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_76_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_7087 epsilon_m__def_76_pknows_current X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_7089 epsilon_m__def_76_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7091 : (forall X:term, auto___def_76 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_76_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7090 epsilon_m__def_76_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_76_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_m__def_76_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_7093 : (forall X:term, auto___def_76 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_76 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_76_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7092 X1 X2 H);  intros.
  apply (rem_7091 epsilon_m__def_76_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7094 : auto___def_76 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7095 : auto___def_76 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7096 : auto___def_76 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7097 : auto___def_76 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7099 : auto___def_76 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7100 : auto___def_76 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7101 : auto___def_76 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7103 : forall X1:term, auto___def_76 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7104 : forall X1 X2 X3:term, auto___def_76 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7105 : auto___def_76 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7106 : forall X1:term, auto___def_76 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7107 : forall X1 X2 X3:term, auto___def_76 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7109 : forall X1 X2 X3 X4:term, auto___def_76 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7110 : forall X1 X2 X3 X4:term, auto___def_76 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7111 : forall X1:term, auto___def_76 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_76_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7097  H).
   intro H. elim (rem_7094  H).
  intros X1 X2. intro H. elim (rem_7108 X1 X2 H).
  intros X1 X2;  exact (rem_7093 epsilon_m__def_76_pknows_current X1 X2).
   intro H. elim (rem_7101  H).
  intros X1 X2. intro H. elim (rem_7102 X1 X2 H).
   intro H. elim (rem_7100  H).
  intros X1. intro H. elim (rem_7103 X1 H).
  intros X1. intro H. elim (rem_7106 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7107 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7104 X1 X2 X3 H).
   intro H. elim (rem_7096  H).
   intro H. elim (rem_7105  H).
  intros X1. intro H. elim (rem_7098 X1 H).
   intro H. elim (rem_7099  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7109 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7110 X1 X2 X3 X4 H).
   intro H. elim (rem_7095  H).
Qed.

Remark rem_7112 : (forall X:term, auto___def_75 X -> auto_knows_current X)
    -> forall X1:term, auto___def_76 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_75_pknows_current. exact (rem_7111).
Defined.

Remark rem_7113 : (forall X:term, auto___def_75 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_76 X1 -> auto___def_77 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_75_pknows_current. intros X1 X2.
  cut (auto___def_76 X1 -> auto_knows_current X1). tauto. exact (rem_7112 epsilon_m__def_75_pknows_current X1).
Defined.

Remark rem_7114 : (forall X:term, auto___def_88 X -> auto_knows_current X)
    -> forall X1:term, auto___def_89 X1 -> auto___def_89 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7115 : (forall X:term, auto___def_88 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_88_pknows_current. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_7114 epsilon_m__def_88_pknows_current X1).
Defined.

Remark rem_7116 : (forall X:term, auto___def_88 X -> auto_knows_current X)
    -> forall X2:term, auto___def_90 X2 -> auto___def_90 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7117 : (forall X:term, auto___def_88 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_88_pknows_current. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_7116 epsilon_m__def_88_pknows_current X2).
Defined.

Remark rem_7118 : (forall X:term, auto___def_88 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_88_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_7115 epsilon_m__def_88_pknows_current X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_7117 epsilon_m__def_88_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7119 : (forall X:term, auto___def_88 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_88_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7118 epsilon_m__def_88_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_88_pknows_current A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  epsilon_m__def_88_pknows_current A1 A2. tauto.
Defined.

Remark rem_7120 : forall X1 X2:term, auto___def_88 (crypt X1 X2) -> or_1
    (auto___def_89 X1 /\ auto___def_90 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7121 : (forall X:term, auto___def_88 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_88 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_88_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7120 X1 X2 H);  intros.
  apply (rem_7119 epsilon_m__def_88_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7122 : auto___def_88 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7123 : auto___def_88 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7124 : auto___def_88 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7125 : auto___def_88 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7127 : auto___def_88 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7128 : auto___def_88 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7129 : auto___def_88 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7131 : forall X1:term, auto___def_88 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7132 : forall X1 X2 X3:term, auto___def_88 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7133 : auto___def_88 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7134 : forall X1:term, auto___def_88 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7135 : forall X1 X2 X3:term, auto___def_88 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7137 : forall X1 X2 X3 X4:term, auto___def_88 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7138 : forall X1 X2 X3 X4:term, auto___def_88 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7139 : forall X1:term, auto___def_88 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_88_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7125  H).
   intro H. elim (rem_7122  H).
  intros X1 X2. intro H. elim (rem_7136 X1 X2 H).
  intros X1 X2;  exact (rem_7121 epsilon_m__def_88_pknows_current X1 X2).
   intro H. elim (rem_7129  H).
  intros X1 X2. intro H. elim (rem_7130 X1 X2 H).
   intro H. elim (rem_7128  H).
  intros X1. intro H. elim (rem_7131 X1 H).
  intros X1. intro H. elim (rem_7134 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7135 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7132 X1 X2 X3 H).
   intro H. elim (rem_7124  H).
   intro H. elim (rem_7133  H).
  intros X1. intro H. elim (rem_7126 X1 H).
   intro H. elim (rem_7127  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7137 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7138 X1 X2 X3 X4 H).
   intro H. elim (rem_7123  H).
Qed.

Remark rem_7140 : (forall X:term, auto___def_77 X -> auto_knows_current X)
    -> forall X1:term, auto___def_88 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_77_pknows_current. exact (rem_7139).
Defined.

Remark rem_7141 : (forall X:term, auto___def_77 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_85 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_77_pknows_current. intros X1 X2.
  cut (auto___def_88 X1 -> auto_knows_current X1). tauto. exact (rem_7140 epsilon_m__def_77_pknows_current X1).
Defined.

Remark rem_7142 : (forall X:term, auto___def_85 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_85_pknows_current.  tauto.
Defined.

Remark rem_7143 : (forall X:term, auto___def_85 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_85_pknows_current.  case (rem_7142 epsilon_m__def_85_pknows_current). clear  epsilon_m__def_85_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__def_85_pknows_current. tauto.
Defined.

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

Remark rem_7145 : (forall X:term, auto___def_85 X -> auto_knows_current X)
    -> auto___def_85 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_85_pknows_current. intro H. intros.
  elim (rem_7144 H);  intros.
  apply (rem_7143 epsilon_m__def_85_pknows_current);  tauto.
Defined.

Remark rem_7146 : auto___def_85 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7147 : auto___def_85 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7148 : auto___def_85 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7149 : auto___def_85 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7151 : auto___def_85 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7152 : auto___def_85 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7154 : forall X1:term, auto___def_85 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7155 : forall X1 X2 X3:term, auto___def_85 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7156 : auto___def_85 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7157 : forall X1:term, auto___def_85 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7158 : forall X1 X2 X3:term, auto___def_85 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7160 : forall X1 X2 X3 X4:term, auto___def_85 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7161 : forall X1 X2 X3 X4:term, auto___def_85 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7162 : forall X2:term, auto___def_85 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_85_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7149  H).
   intro H. elim (rem_7146  H).
  intros X1 X2. intro H. elim (rem_5263 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7159 X1 X2 H).
   intro H. elim (rem_7152  H).
  intros X1 X2. intro H. elim (rem_7153 X1 X2 H).
  exact (rem_7145 epsilon_m__def_85_pknows_current ).
  intros X1. intro H. elim (rem_7154 X1 H).
  intros X1. intro H. elim (rem_7157 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7158 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7155 X1 X2 X3 H).
   intro H. elim (rem_7148  H).
   intro H. elim (rem_7156  H).
  intros X1. intro H. elim (rem_7150 X1 H).
   intro H. elim (rem_7151  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7160 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7161 X1 X2 X3 X4 H).
   intro H. elim (rem_7147  H).
Qed.

Remark rem_7163 : (forall X:term, auto___def_77 X -> auto_knows_current X)
    -> forall X2:term, auto___def_85 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_77_pknows_current. exact (rem_7162).
Defined.

Remark rem_7164 : (forall X:term, auto___def_77 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_85 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_77_pknows_current. intros X1 X2.
  cut (auto___def_85 X2 -> auto_knows_current X2). tauto. exact (rem_7163 epsilon_m__def_77_pknows_current X2).
Defined.

Remark rem_7165 : (forall X:term, auto___def_77 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_85 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_77_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7141 epsilon_m__def_77_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7164 epsilon_m__def_77_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7166 : (forall X:term, auto___def_77 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_88 X1 -> auto___def_85 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_77_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7165 epsilon_m__def_77_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_77_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_77_pknows_current A1 A2. tauto.
Defined.

Remark rem_7167 : forall X1 X2:term, auto___def_77 (cons X1 X2) -> or_1
    (auto___def_88 X1 /\ auto___def_85 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7168 : (forall X:term, auto___def_77 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_77 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_77_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7167 X1 X2 H);  intros.
  apply (rem_7166 epsilon_m__def_77_pknows_current X1 X2);  tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Remark rem_7186 : forall X2:term, auto___def_77 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_77_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7172  H).
   intro H. elim (rem_7169  H).
  intros X1 X2;  exact (rem_7168 epsilon_m__def_77_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_7183 X1 X2 H).
   intro H. elim (rem_7176  H).
  intros X1 X2. intro H. elim (rem_7177 X1 X2 H).
   intro H. elim (rem_7175  H).
  intros X1. intro H. elim (rem_7178 X1 H).
  intros X1. intro H. elim (rem_7181 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7182 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7179 X1 X2 X3 H).
   intro H. elim (rem_7171  H).
   intro H. elim (rem_7180  H).
  intros X1. intro H. elim (rem_7173 X1 H).
   intro H. elim (rem_7174  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7184 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7185 X1 X2 X3 X4 H).
   intro H. elim (rem_7170  H).
Qed.

Remark rem_7187 : (forall X:term, auto___def_75 X -> auto_knows_current X)
    -> forall X2:term, auto___def_77 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_75_pknows_current. exact (rem_7186).
Defined.

Remark rem_7188 : (forall X:term, auto___def_75 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_76 X1 -> auto___def_77 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_75_pknows_current. intros X1 X2.
  cut (auto___def_77 X2 -> auto_knows_current X2). tauto. exact (rem_7187 epsilon_m__def_75_pknows_current X2).
Defined.

Remark rem_7189 : (forall X:term, auto___def_75 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_76 X1 -> auto___def_77 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_75_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7113 epsilon_m__def_75_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7188 epsilon_m__def_75_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7190 : (forall X:term, auto___def_75 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_76 X1 -> auto___def_77 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_75_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7189 epsilon_m__def_75_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_75_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_75_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_7192 : (forall X:term, auto___def_75 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_75 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_75_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7191 X1 X2 H);  intros.
  apply (rem_7190 epsilon_m__def_75_pknows_current X1 X2);  tauto.
Defined.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Remark rem_7210 : forall X2:term, auto___def_75 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_75_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7196  H).
   intro H. elim (rem_7193  H).
  intros X1 X2;  exact (rem_7192 epsilon_m__def_75_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_7207 X1 X2 H).
   intro H. elim (rem_7200  H).
  intros X1 X2. intro H. elim (rem_7201 X1 X2 H).
   intro H. elim (rem_7199  H).
  intros X1. intro H. elim (rem_7202 X1 H).
  intros X1. intro H. elim (rem_7205 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7206 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7203 X1 X2 X3 H).
   intro H. elim (rem_7195  H).
   intro H. elim (rem_7204  H).
  intros X1. intro H. elim (rem_7197 X1 H).
   intro H. elim (rem_7198  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7208 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7209 X1 X2 X3 X4 H).
   intro H. elim (rem_7194  H).
Qed.

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

Remark rem_7212 : forall X1 X2:term, auto___def_75 X2 -> auto___type_13 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_7085 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7211 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_7213 : forall X1 X2:term, auto___def_75 X2 -> auto___type_13 X1 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_7212 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7214 : (forall X:term, auto___def_61 X -> auto___def_86 X -> False)
    -> forall X1 X2 X3 X4:term, auto___def_86 (session_old X1 X2 X3 X4) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_86. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_5379 X1 X2 X3 X4 H);  intros.
Defined.

Remark rem_7215 : forall X1 X2 X3 X4:term, auto___def_61 (session_old X1 X2 X3 X4) -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7216 : (forall X:term, auto___def_61 X -> auto___def_86 X -> False)
    -> forall X1 X2 X3 X4:term, auto___def_61 (session_old X1 X2 X3 X4) -> auto___def_86 (session_old X1 X2 X3 X4) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_86. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_7215 X1 X2 X3 X4 H);  intros.
  apply (rem_7214 epsilon_m__def_61_m__def_86 X1 X2 X3 X4);  tauto.
Defined.

Remark rem_7217 : auto___def_61 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7218 : auto___def_61 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7219 : auto___def_61 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7220 : auto___def_61 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7222 : auto___def_61 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7223 : auto___def_61 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7224 : auto___def_61 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7226 : forall X1:term, auto___def_61 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7227 : forall X1 X2 X3:term, auto___def_61 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7228 : auto___def_61 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7229 : forall X1:term, auto___def_61 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7230 : forall X1 X2 X3:term, auto___def_61 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_7233 : forall X1 X2 X3 X4:term, auto___def_61 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7234 : 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_7220  H).
   intro H. elim (rem_7217  H).
  intros X1 X2. intro H. elim (rem_7232 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7231 X1 X2 H).
   intro H. elim (rem_7224  H).
  intros X1 X2. intro H. elim (rem_7225 X1 X2 H).
   intro H. elim (rem_7223  H).
  intros X1. intro H. elim (rem_7226 X1 H).
  intros X1. intro H. elim (rem_7229 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7230 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7227 X1 X2 X3 H).
   intro H. elim (rem_7219  H).
   intro H. elim (rem_7228  H).
  intros X1. intro H. elim (rem_7221 X1 H).
   intro H. elim (rem_7222  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7233 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4;  exact (rem_7216 epsilon_m__def_61_m__def_86 X1 X2 X3 X4).
   intro H. elim (rem_7218  H).
Qed.

Remark rem_7235 : forall X1 X2:term, auto___def_61 X2 -> auto___def_78 X1 -> auto___def_86 X2 -> auto_knows_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7234 X2)). tauto.
Qed.

Remark rem_7236 : forall X1 X2:term, auto___def_78 X1 -> auto___def_86 X2 -> auto___def_61 X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_61 X2 -> auto___def_78 X1 -> auto___def_86 X2 -> auto_knows_current X1). tauto. exact (rem_7235 X1 X2).
Qed.

Remark rem_7237 : forall X1 X2:term, auto___def_61 X2 -> auto___def_84 X2 -> auto___type_13 X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___type_13 X1 -> auto_knows_current X1). tauto. exact (rem_7084 X1).
Qed.

Remark rem_7238 : forall X1 X2:term, auto___type_13 X1 -> auto___def_84 X2 -> auto___def_61 X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_61 X2 -> auto___def_84 X2 -> auto___type_13 X1 -> auto_knows_current X1). tauto. exact (rem_7237 X1 X2).
Qed.

Remark rem_7239 : forall X1:term, auto___def_29 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_29_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_4897  H).
   intro H. elim (rem_4894  H).
  intros X1 X2;  exact (rem_4893 epsilon_m__def_29_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_4908 X1 X2 H).
   intro H. elim (rem_4901  H).
  intros X1 X2. intro H. elim (rem_4902 X1 X2 H).
   intro H. elim (rem_4900  H).
  intros X1. intro H. elim (rem_4903 X1 H).
  intros X1. intro H. elim (rem_4906 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4907 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4904 X1 X2 X3 H).
   intro H. elim (rem_4896  H).
   intro H. elim (rem_4905  H).
  intros X1. intro H. elim (rem_4898 X1 H).
   intro H. elim (rem_4899  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4909 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4910 X1 X2 X3 X4 H).
   intro H. elim (rem_4895  H).
Qed.

Remark rem_7240 : forall X1 X2:term, auto___def_29 X1 -> auto___def_37 X2 -> auto___def_61 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_29 X1 -> auto_knows_current X1). tauto. exact (rem_7239 X1).
Qed.

Remark rem_7241 : forall X1 X2:term, auto___def_55 X2 -> auto___def_61 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_449 X1).
Qed.

Remark rem_7242 : forall X1 X2:term, auto_knows_current X1 -> auto___def_55 X2 -> auto___def_61 X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_61 X2 -> auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_7241 X1 X2).
Qed.

Remark rem_7243 : forall X1:term, auto___def_40 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_40_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_4261  H).
   intro H. elim (rem_4258  H).
  intros X1 X2;  exact (rem_4257 epsilon_m__def_40_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_4272 X1 X2 H).
   intro H. elim (rem_4265  H).
  intros X1 X2. intro H. elim (rem_4266 X1 X2 H).
   intro H. elim (rem_4264  H).
  intros X1. intro H. elim (rem_4267 X1 H).
  intros X1. intro H. elim (rem_4270 X1 H).
  intros X1 X2 X3. intro H. elim (rem_4271 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_4268 X1 X2 X3 H).
   intro H. elim (rem_4260  H).
   intro H. elim (rem_4269  H).
  intros X1. intro H. elim (rem_4262 X1 H).
   intro H. elim (rem_4263  H).
  intros X1 X2 X3 X4. intro H. elim (rem_4273 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_4274 X1 X2 X3 X4 H).
   intro H. elim (rem_4259  H).
Qed.

Remark rem_7244 : forall X1 X2:term, auto___def_40 X1 -> auto___def_45 X2 -> auto___def_61 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_40 X1 -> auto_knows_current X1). tauto. exact (rem_7243 X1).
Qed.

Remark rem_7245 : 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_5164  H).
   intro H. elim (rem_5161  H).
  intros X1 X2;  exact (rem_5160 epsilon_m__def_70_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_5175 X1 X2 H).
   intro H. elim (rem_5168  H).
  intros X1 X2. intro H. elim (rem_5169 X1 X2 H).
   intro H. elim (rem_5167  H).
  intros X1. intro H. elim (rem_5170 X1 H).
  intros X1. intro H. elim (rem_5173 X1 H).
  intros X1 X2 X3. intro H. elim (rem_5174 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_5171 X1 X2 X3 H).
   intro H. elim (rem_5163  H).
   intro H. elim (rem_5172  H).
  intros X1. intro H. elim (rem_5165 X1 H).
   intro H. elim (rem_5166  H).
  intros X1 X2 X3 X4. intro H. elim (rem_5176 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_5177 X1 X2 X3 X4 H).
   intro H. elim (rem_5162  H).
Qed.

Remark rem_7246 : forall X1 X2:term, auto___def_21 X2 -> auto___def_61 X2 -> auto___def_70 X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_70 X1 -> auto_knows_current X1). tauto. exact (rem_7245 X1).
Qed.

Remark rem_7247 : forall X1 X2:term, auto___def_70 X1 -> auto___def_21 X2 -> auto___def_61 X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_21 X2 -> auto___def_61 X2 -> auto___def_70 X1 -> auto_knows_current X1). tauto. exact (rem_7246 X1 X2).
Qed.

Remark rem_7248 : (forall X:term, auto___def_61 X -> auto___def_94 X -> False)
    -> forall X1 X2 X3 X4:term, auto___def_94 (session_old X1 X2 X3 X4) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_94. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_5712 X1 X2 X3 X4 H);  intros.
Defined.

Remark rem_7249 : (forall X:term, auto___def_61 X -> auto___def_94 X -> False)
    -> forall X1 X2 X3 X4:term, auto___def_61 (session_old X1 X2 X3 X4) -> auto___def_94 (session_old X1 X2 X3 X4) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_61_m__def_94. intros X1 X2 X3 X4. intro H. intros.
  elim (rem_7215 X1 X2 X3 X4 H);  intros.
  apply (rem_7248 epsilon_m__def_61_m__def_94 X1 X2 X3 X4);  tauto.
Defined.

Remark rem_7250 : forall X1:term, auto___def_61 X1 -> auto___def_94 X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m__def_61_m__def_94 1.
  intro X. case X.
   intro H. elim (rem_7220  H).
   intro H. elim (rem_7217  H).
  intros X1 X2. intro H. elim (rem_7232 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7231 X1 X2 H).
   intro H. elim (rem_7224  H).
  intros X1 X2. intro H. elim (rem_7225 X1 X2 H).
   intro H. elim (rem_7223  H).
  intros X1. intro H. elim (rem_7226 X1 H).
  intros X1. intro H. elim (rem_7229 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7230 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7227 X1 X2 X3 H).
   intro H. elim (rem_7219  H).
   intro H. elim (rem_7228  H).
  intros X1. intro H. elim (rem_7221 X1 H).
   intro H. elim (rem_7222  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7233 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4;  exact (rem_7249 epsilon_m__def_61_m__def_94 X1 X2 X3 X4).
   intro H. elim (rem_7218  H).
Qed.

Remark rem_7251 : forall X1 X2:term, auto___def_61 X2 -> auto___def_89 X1 -> auto___def_94 X2 -> auto_knows_current X1. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2. intros.
  assert (HH:=(rem_7250 X2)). tauto.
Qed.

Remark rem_7252 : forall X1 X2:term, auto___def_89 X1 -> auto___def_94 X2 -> auto___def_61 X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_61 X2 -> auto___def_89 X1 -> auto___def_94 X2 -> auto_knows_current X1). tauto. exact (rem_7251 X1 X2).
Qed.

Remark rem_7253 : forall X1 X2:term, auto___def_60 X1 X2 -> or_7
    (auto___def_78 X1 /\ auto___def_86 X2)
    (auto___type_13 X1 /\ auto___def_84 X2)
    (auto___def_29 X1 /\ auto___def_37 X2)
    (auto_knows_current X1 /\ auto___def_55 X2)
    (auto___def_40 X1 /\ auto___def_45 X2)
    (auto___def_70 X1 /\ auto___def_21 X2)
    (auto___def_89 X1 /\ auto___def_94 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_7_intro_1; tauto.
  intros. apply or_7_intro_2; tauto.
  intros. apply or_7_intro_3; tauto.
  intros. apply or_7_intro_4; tauto.
  intros. apply or_7_intro_5; tauto.
  intros. apply or_7_intro_6; tauto.
  intros. apply or_7_intro_7; tauto.
Qed.

Remark rem_7254 : forall X1 X2:term, auto___def_60 X1 X2 -> auto___def_61 X2 -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_7253 X1 X2 H);  intros.
  apply (rem_7236 X1 X2);  tauto.
  apply (rem_7238 X1 X2);  tauto.
  apply (rem_7240 X1 X2);  tauto.
  apply (rem_7242 X1 X2);  tauto.
  apply (rem_7244 X1 X2);  tauto.
  apply (rem_7247 X1 X2);  tauto.
  apply (rem_7252 X1 X2);  tauto.
Qed.

Remark rem_7255 : forall X1:term, auto___def_81 X1 -> auto___type_16 alice -> auto_agent alice -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_5815 X1)). tauto.
Qed.

Remark rem_7256 : forall X1:term, auto_agent alice -> auto___type_16 alice -> auto___def_81 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto___def_81 X1 -> auto___type_16 alice -> auto_agent alice -> auto_knows_current X1 -> False). tauto. exact (rem_7255 X1).
Qed.

Remark rem_7257 : forall X1 X2:term, auto_alice_key_current X1 X2 -> or_1
    (auto_agent X1 /\ auto___type_16 X1 /\ auto___def_81 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7258 : 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_7257 alice X1 H);  intros.
  apply (rem_7256 X1);  tauto.
Qed.

Remark rem_7259 : 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_7258 X1).
Qed.

Remark rem_7260 : forall X1 X2 X3 X4:term, auto___def_53 X3 X1 X2 X4 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1.
  tauto.
Qed.

Remark rem_7261 : forall X1 X2 X3 X4:term, auto___def_53 X3 X1 X2 X4 -> auto_bob_key_old X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1.
  case (rem_7260 X1 X2 X3 X4 A1). clear  A1. intros. apply trans_bob_key_old_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_7262 : forall X1:term, auto___def_81 X1 -> auto___type_14 bob -> auto_agent bob -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_5815 X1)). tauto.
Qed.

Remark rem_7263 : forall X1:term, auto_agent bob -> auto___type_14 bob -> auto___def_81 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto___def_81 X1 -> auto___type_14 bob -> auto_agent bob -> auto_knows_current X1 -> False). tauto. exact (rem_7262 X1).
Qed.

Remark rem_7264 : forall X1 X2:term, auto_bob_key_current X1 X2 -> or_1
    (auto_agent X1 /\ auto___type_14 X1 /\ auto___def_81 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7265 : 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_7264 bob X1 H);  intros.
  apply (rem_7263 X1);  tauto.
Qed.

Remark rem_7266 : forall X1:term, auto_bob_key_current bob X1 -> auto_knows_current X1 -> auto___query__intruder_knows_session_key_as_seen_by_B. (* Split. *)
Proof.
  intros X1.
  cut (auto_bob_key_current bob X1 -> auto_knows_current X1 -> False). tauto.
  exact (rem_7265 X1).
Qed.

Remark rem_7267 : 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_6533 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7268 : forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_6540 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7269 : forall X1 X2:term, auto___type_9 X2 -> auto___def_50 X1 -> auto_knows_current (key X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2)). tauto. exact (rem_7268 X1 X2).
Qed.

Remark rem_7270 : forall X1:term, auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros X1.  case (rem_124). intros. apply trans_knows_current_noncea_old_1;  tauto.
 tauto.
Qed.

Remark rem_7271 : forall X1 X2 X3 X4 X5:term, auto___def_46 X1 X3 X4 X5 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1.
  tauto.
Qed.

Remark rem_7272 : forall X1 X2 X3 X4 X5:term, auto___def_46 X1 X3 X4 X5 X2 -> auto_alice_key_old X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1.
  case (rem_7271 X1 X2 X3 X4 X5 A1). clear  A1. intros. apply trans_alice_key_old_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_7273 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current.  tauto.
Defined.

Remark rem_7274 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current.  case (rem_7273 epsilon_m__type_17_pknows_current). clear  epsilon_m__type_17_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m__type_17_pknows_current. tauto.
Defined.

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

Remark rem_7276 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> auto___type_17 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intro H. intros.
  elim (rem_7275 H);  intros.
  apply (rem_7274 epsilon_m__type_17_pknows_current);  tauto.
Defined.

Remark rem_7277 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current.  case (rem_7273 epsilon_m__type_17_pknows_current). clear  epsilon_m__type_17_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m__type_17_pknows_current. tauto.
Defined.

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

Remark rem_7279 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> auto___type_17 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intro H. intros.
  elim (rem_7278 H);  intros.
  apply (rem_7277 epsilon_m__type_17_pknows_current);  tauto.
Defined.

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

Remark rem_7281 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1. intros A1.
  cut (auto_knows_current X1). 2:apply (rem_7280 epsilon_m__type_17_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_7282 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1. intros A1.
  case (rem_7281 epsilon_m__type_17_pknows_current X1 A1). clear  epsilon_m__type_17_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m__type_17_pknows_current A1. tauto.
Defined.

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

Remark rem_7284 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto___type_17 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1. intro H. intros.
  elim (rem_7283 X1 H);  intros.
  apply (rem_7282 epsilon_m__type_17_pknows_current X1);  tauto.
Defined.

Remark rem_7285 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current.  case (rem_7273 epsilon_m__type_17_pknows_current). clear  epsilon_m__type_17_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m__type_17_pknows_current. tauto.
Defined.

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

Remark rem_7287 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> auto___type_17 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intro H. intros.
  elim (rem_7286 H);  intros.
  apply (rem_7285 epsilon_m__type_17_pknows_current);  tauto.
Defined.

Remark rem_7288 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current.  case (rem_7273 epsilon_m__type_17_pknows_current). clear  epsilon_m__type_17_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__type_17_pknows_current. tauto.
Defined.

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

Remark rem_7290 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> auto___type_17 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intro H. intros.
  elim (rem_7289 H);  intros.
  apply (rem_7288 epsilon_m__type_17_pknows_current);  tauto.
Defined.

Remark rem_7291 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current.  case (rem_7273 epsilon_m__type_17_pknows_current). clear  epsilon_m__type_17_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m__type_17_pknows_current. tauto.
Defined.

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

Remark rem_7293 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> auto___type_17 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intro H. intros.
  elim (rem_7292 H);  intros.
  apply (rem_7291 epsilon_m__type_17_pknows_current);  tauto.
Defined.

Remark rem_7294 : (forall X:term, auto___type_17 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_7295 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_51 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_51 X1 -> auto___def_51 X1). tauto. exact (rem_7294 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7297 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto___def_52 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_52 X2 -> auto___def_52 X2). tauto. exact (rem_7296 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7298 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> (auto___def_51 X1 /\ auto___def_52 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_51 X1). 2:apply (rem_7295 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  cut (auto___def_52 X2). 2:apply (rem_7297 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7299 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_51 X1 -> auto___def_52 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7298 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7300 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto___def_50 X1 -> auto___def_50 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7301 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___def_50 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_50 X1 -> auto___def_50 X1). tauto. exact (rem_7300 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7303 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto___type_9 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___type_9 X2 -> auto___type_9 X2). tauto. exact (rem_7302 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7304 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> (auto___def_50 X1 /\ auto___type_9 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_50 X1). 2:apply (rem_7301 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  cut (auto___type_9 X2). 2:apply (rem_7303 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7305 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_50 X1 -> auto___type_9 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7304 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7306 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto___def_54 X1 -> auto___def_54 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7307 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_54 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_54 X1 -> auto___def_54 X1). tauto. exact (rem_7306 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7309 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto___def_55 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_55 X2 -> auto___def_55 X2). tauto. exact (rem_7308 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7310 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> (auto___def_54 X1 /\ auto___def_55 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_54 X1). 2:apply (rem_7307 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  cut (auto___def_55 X2). 2:apply (rem_7309 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7311 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_54 X1 -> auto___def_55 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7310 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7312 : forall X1 X2:term, auto___type_17 (key X1 X2) -> or_3
    (auto___def_51 X1 /\ auto___def_52 X2)
    (auto___def_50 X1 /\ auto___type_9 X2)
    (auto___def_54 X1 /\ auto___def_55 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_3_intro_1; tauto.
  intros. apply or_3_intro_2; tauto.
  intros. apply or_3_intro_3; tauto.
Qed.

Remark rem_7313 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_17 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7312 X1 X2 H);  intros.
  apply (rem_7299 epsilon_m__type_17_pknows_current X1 X2);  tauto.
  apply (rem_7305 epsilon_m__type_17_pknows_current X1 X2);  tauto.
  apply (rem_7311 epsilon_m__type_17_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7314 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7315 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_7314 epsilon_m__type_17_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_7316 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1. intros A1.
  case (rem_7315 epsilon_m__type_17_pknows_current X1 A1). clear  epsilon_m__type_17_pknows_current A1. intros. apply trans_knows_current_noncea_current_1;  tauto.
 clear  epsilon_m__type_17_pknows_current A1. tauto.
Defined.

Remark rem_7317 : forall X1:term, auto___type_17 (noncea_current X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7318 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto___type_17 (noncea_current X1) -> auto_knows_current (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1. intro H. intros.
  elim (rem_7317 X1 H);  intros.
  apply (rem_7316 epsilon_m__type_17_pknows_current X1);  tauto.
Defined.

Remark rem_7319 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2 X3.  case (rem_7273 epsilon_m__type_17_pknows_current). clear  epsilon_m__type_17_pknows_current. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m__type_17_pknows_current. tauto.
Defined.

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

Remark rem_7321 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_17 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_7320 X1 X2 X3 H);  intros.
  apply (rem_7319 epsilon_m__type_17_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_7322 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto_knows_current (noncea_old X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1.  case (rem_7273 epsilon_m__type_17_pknows_current). clear  epsilon_m__type_17_pknows_current. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m__type_17_pknows_current. tauto.
Defined.

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

Remark rem_7324 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto___type_17 (noncea_old X1) -> auto_knows_current (noncea_old X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1. intro H. intros.
  elim (rem_7323 X1 H);  intros.
  apply (rem_7322 epsilon_m__type_17_pknows_current X1);  tauto.
Defined.

Remark rem_7325 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_7280 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7327 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_agent X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2 X3.
  cut (auto_agent X2 -> auto_agent X2). tauto. exact (rem_7326 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7328 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X3:term, auto_knows_current X3 -> auto_knows_current X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7329 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2 X3.
  cut (auto_knows_current X3 -> auto_knows_current X3). tauto. exact (rem_7328 epsilon_m__type_17_pknows_current X3).
Defined.

Remark rem_7330 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto_knows_current X1). 2:apply (rem_7325 epsilon_m__type_17_pknows_current X1 X2 X3);  assumption.
  cut (auto_agent X2). 2:apply (rem_7327 epsilon_m__type_17_pknows_current X1 X2 X3);  assumption.
  cut (auto_knows_current X3). 2:apply (rem_7329 epsilon_m__type_17_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7331 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_knows_current X1 -> auto_agent X2 -> auto_knows_current X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7330 epsilon_m__type_17_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m__type_17_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7332 : forall X1 X2 X3:term, auto___type_17 (nonceb_current X1 X2 X3) -> or_1
    (auto_knows_current X1 /\ auto_agent X2 /\ auto_knows_current X3)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7333 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto___type_17 (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_7332 X1 X2 X3 H);  intros.
  apply (rem_7331 epsilon_m__type_17_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_7334 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto___def_78 X1 -> auto___def_78 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7335 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_78 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_78 X1 -> auto___def_78 X1). tauto. exact (rem_7334 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7337 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto___def_79 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_79 X2 -> auto___def_79 X2). tauto. exact (rem_7336 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7338 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> (auto___def_78 X1 /\ auto___def_79 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_78 X1). 2:apply (rem_7335 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  cut (auto___def_79 X2). 2:apply (rem_7337 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7339 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_78 X1 -> auto___def_79 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7338 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7340 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto___def_40 X1 -> auto___def_40 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7341 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_40 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_40 X1 -> auto___def_40 X1). tauto. exact (rem_7340 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7343 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto___def_41 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_41 X2 -> auto___def_41 X2). tauto. exact (rem_7342 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7344 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> (auto___def_40 X1 /\ auto___def_41 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_40 X1). 2:apply (rem_7341 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  cut (auto___def_41 X2). 2:apply (rem_7343 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7345 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_40 X1 -> auto___def_41 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7344 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7346 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto___def_29 X1 -> auto___def_29 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7347 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_29 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_29 X1 -> auto___def_29 X1). tauto. exact (rem_7346 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7349 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto___def_30 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_30 X2 -> auto___def_30 X2). tauto. exact (rem_7348 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7350 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> (auto___def_29 X1 /\ auto___def_30 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_29 X1). 2:apply (rem_7347 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  cut (auto___def_30 X2). 2:apply (rem_7349 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7351 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_29 X1 -> auto___def_30 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7350 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7352 : (forall X:term, auto___type_17 X -> auto_knows_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_17_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_7280 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7354 : (forall X:term, auto___type_17 X -> auto_knows_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_17_pknows_current. intros X1 X2.
  cut (auto_knows_current X2 -> auto_knows_current X2). tauto. exact (rem_7353 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7355 : (forall X:term, auto___type_17 X -> auto_knows_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_17_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7352 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7354 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7356 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7355 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7357 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto___def_70 X1 -> auto___def_70 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7358 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_70 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_70 X1 -> auto___def_70 X1). tauto. exact (rem_7357 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7360 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto___def_71 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_71 X2 -> auto___def_71 X2). tauto. exact (rem_7359 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7361 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> (auto___def_70 X1 /\ auto___def_71 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_70 X1). 2:apply (rem_7358 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  cut (auto___def_71 X2). 2:apply (rem_7360 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7362 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_70 X1 -> auto___def_71 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7361 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7363 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1:term, auto___def_89 X1 -> auto___def_89 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7364 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_89 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_89 X1 -> auto___def_89 X1). tauto. exact (rem_7363 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7366 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto___def_90 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_90 X2 -> auto___def_90 X2). tauto. exact (rem_7365 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7367 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> (auto___def_89 X1 /\ auto___def_90 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto___def_89 X1). 2:apply (rem_7364 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  cut (auto___def_90 X2). 2:apply (rem_7366 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7368 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_89 X1 -> auto___def_90 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7367 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7369 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_7280 epsilon_m__type_17_pknows_current X1).
Defined.

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

Remark rem_7371 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_7370 epsilon_m__type_17_pknows_current X2).
Defined.

Remark rem_7372 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7369 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_7371 epsilon_m__type_17_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7373 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7372 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_crypt_7;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7374 : forall X1 X2:term, auto___type_17 (crypt X1 X2) -> or_7
    (auto___def_78 X1 /\ auto___def_79 X2)
    (auto___def_40 X1 /\ auto___def_41 X2)
    (auto___def_29 X1 /\ auto___def_30 X2)
    (auto_knows_current X1 /\ auto_knows_current X2)
    (auto___def_70 X1 /\ auto___def_71 X2)
    (auto___def_89 X1 /\ auto___def_90 X2)
    (auto_knows_current X1 /\ auto___def_81 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_7_intro_1; tauto.
  intros. apply or_7_intro_2; tauto.
  intros. apply or_7_intro_3; tauto.
  intros. apply or_7_intro_4; tauto.
  intros. apply or_7_intro_5; tauto.
  intros. apply or_7_intro_6; tauto.
  intros. apply or_7_intro_7; tauto.
Qed.

Remark rem_7375 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_17 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7374 X1 X2 H);  intros.
  apply (rem_7339 epsilon_m__type_17_pknows_current X1 X2);  tauto.
  apply (rem_7345 epsilon_m__type_17_pknows_current X1 X2);  tauto.
  apply (rem_7351 epsilon_m__type_17_pknows_current X1 X2);  tauto.
  apply (rem_7356 epsilon_m__type_17_pknows_current X1 X2);  tauto.
  apply (rem_7362 epsilon_m__type_17_pknows_current X1 X2);  tauto.
  apply (rem_7368 epsilon_m__type_17_pknows_current X1 X2);  tauto.
  apply (rem_7373 epsilon_m__type_17_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7376 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto_knows_current X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7355 epsilon_m__type_17_pknows_current X1 X2 A1 A2). clear  epsilon_m__type_17_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__type_17_pknows_current A1 A2. tauto.
Defined.

Remark rem_7377 : forall X1 X2:term, auto___type_17 (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_7378 : (forall X:term, auto___type_17 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___type_17 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__type_17_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7377 X1 X2 H);  intros.
  apply (rem_7376 epsilon_m__type_17_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7379 : auto___type_17 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7380 : auto___type_17 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7381 : auto___type_17 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7382 : forall X1 X2 X3 X4:term, auto___type_17 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7383 : forall X1 X2 X3 X4:term, auto___type_17 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7384 : forall X1:term, auto___type_17 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__type_17_pknows_current 1.
  intro X. case X.
  exact (rem_7279 epsilon_m__type_17_pknows_current ).
  exact (rem_7276 epsilon_m__type_17_pknows_current ).
  intros X1 X2;  exact (rem_7378 epsilon_m__type_17_pknows_current X1 X2).
  intros X1 X2;  exact (rem_7375 epsilon_m__type_17_pknows_current X1 X2).
  exact (rem_7293 epsilon_m__type_17_pknows_current ).
  intros X1 X2;  exact (rem_7313 epsilon_m__type_17_pknows_current X1 X2).
  exact (rem_7290 epsilon_m__type_17_pknows_current ).
  intros X1;  exact (rem_7318 epsilon_m__type_17_pknows_current X1).
  intros X1;  exact (rem_7324 epsilon_m__type_17_pknows_current X1).
  intros X1 X2 X3;  exact (rem_7333 epsilon_m__type_17_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_7321 epsilon_m__type_17_pknows_current X1 X2 X3).
   intro H. elim (rem_7380  H).
   intro H. elim (rem_7381  H).
  intros X1;  exact (rem_7284 epsilon_m__type_17_pknows_current X1).
  exact (rem_7287 epsilon_m__type_17_pknows_current ).
  intros X1 X2 X3 X4. intro H. elim (rem_7382 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7383 X1 X2 X3 X4 H).
   intro H. elim (rem_7379  H).
Qed.

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

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

Remark rem_7387 : (forall X:term, auto___def_97 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_97_pknows_current. intros X1 X2.
  cut (auto_knows_current X1 -> auto_knows_current X1). tauto. exact (rem_7386 epsilon_m__def_97_pknows_current X1).
Defined.

Remark rem_7388 : (forall X:term, auto___def_97 X -> auto_knows_current X)
    -> forall X2:term, auto___def_81 X2 -> auto___def_81 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7389 : (forall X:term, auto___def_97 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto___def_81 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_97_pknows_current. intros X1 X2.
  cut (auto___def_81 X2 -> auto___def_81 X2). tauto. exact (rem_7388 epsilon_m__def_97_pknows_current X2).
Defined.

Remark rem_7390 : (forall X:term, auto___def_97 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> (auto_knows_current X1 /\ auto___def_81 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_97_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7387 epsilon_m__def_97_pknows_current X1 X2);  assumption.
  cut (auto___def_81 X2). 2:apply (rem_7389 epsilon_m__def_97_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7391 : (forall X:term, auto___def_97 X -> auto_knows_current X)
    -> forall X1 X2:term, auto_knows_current X1 -> auto___def_81 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_97_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7390 epsilon_m__def_97_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_97_pknows_current A1 A2. intros. apply trans_knows_current_crypt_7;  tauto.
 clear  epsilon_m__def_97_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_7393 : (forall X:term, auto___def_97 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_97 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_97_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7392 X1 X2 H);  intros.
  apply (rem_7391 epsilon_m__def_97_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7394 : auto___def_97 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7395 : auto___def_97 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7396 : auto___def_97 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7397 : auto___def_97 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7399 : auto___def_97 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7400 : auto___def_97 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7401 : auto___def_97 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7403 : forall X1:term, auto___def_97 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7404 : forall X1 X2 X3:term, auto___def_97 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7405 : auto___def_97 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7406 : forall X1:term, auto___def_97 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7407 : forall X1 X2 X3:term, auto___def_97 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7409 : forall X1 X2 X3 X4:term, auto___def_97 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7410 : forall X1 X2 X3 X4:term, auto___def_97 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7411 : forall X1:term, auto___def_97 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_97_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7397  H).
   intro H. elim (rem_7394  H).
  intros X1 X2. intro H. elim (rem_7408 X1 X2 H).
  intros X1 X2;  exact (rem_7393 epsilon_m__def_97_pknows_current X1 X2).
   intro H. elim (rem_7401  H).
  intros X1 X2. intro H. elim (rem_7402 X1 X2 H).
   intro H. elim (rem_7400  H).
  intros X1. intro H. elim (rem_7403 X1 H).
  intros X1. intro H. elim (rem_7406 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7407 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7404 X1 X2 X3 H).
   intro H. elim (rem_7396  H).
   intro H. elim (rem_7405  H).
  intros X1. intro H. elim (rem_7398 X1 H).
   intro H. elim (rem_7399  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7409 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7410 X1 X2 X3 X4 H).
   intro H. elim (rem_7395  H).
Qed.

Remark rem_7412 : (forall X:term, auto___def_96 X -> auto_knows_current X)
    -> forall X1:term, auto___def_97 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_96_pknows_current. exact (rem_7411).
Defined.

Remark rem_7413 : (forall X:term, auto___def_96 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_97 X1 -> auto___def_98 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_96_pknows_current. intros X1 X2.
  cut (auto___def_97 X1 -> auto_knows_current X1). tauto. exact (rem_7412 epsilon_m__def_96_pknows_current X1).
Defined.

Remark rem_7414 : (forall X:term, auto___def_98 X -> auto_knows_current X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_98_pknows_current.  tauto.
Defined.

Remark rem_7415 : (forall X:term, auto___def_98 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_98_pknows_current.  case (rem_7414 epsilon_m__def_98_pknows_current). clear  epsilon_m__def_98_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m__def_98_pknows_current. tauto.
Defined.

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

Remark rem_7417 : (forall X:term, auto___def_98 X -> auto_knows_current X)
    -> auto___def_98 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_98_pknows_current. intro H. intros.
  elim (rem_7416 H);  intros.
  apply (rem_7415 epsilon_m__def_98_pknows_current);  tauto.
Defined.

Remark rem_7418 : auto___def_98 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7419 : auto___def_98 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7420 : auto___def_98 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7421 : auto___def_98 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7423 : auto___def_98 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7424 : auto___def_98 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7426 : forall X1:term, auto___def_98 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7427 : forall X1 X2 X3:term, auto___def_98 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7428 : auto___def_98 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7429 : forall X1:term, auto___def_98 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7430 : forall X1 X2 X3:term, auto___def_98 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_7433 : forall X1 X2 X3 X4:term, auto___def_98 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7434 : forall X1 X2 X3 X4:term, auto___def_98 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7435 : forall X2:term, auto___def_98 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_98_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7421  H).
   intro H. elim (rem_7418  H).
  intros X1 X2. intro H. elim (rem_7432 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7431 X1 X2 H).
   intro H. elim (rem_7424  H).
  intros X1 X2. intro H. elim (rem_7425 X1 X2 H).
  exact (rem_7417 epsilon_m__def_98_pknows_current ).
  intros X1. intro H. elim (rem_7426 X1 H).
  intros X1. intro H. elim (rem_7429 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7430 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7427 X1 X2 X3 H).
   intro H. elim (rem_7420  H).
   intro H. elim (rem_7428  H).
  intros X1. intro H. elim (rem_7422 X1 H).
   intro H. elim (rem_7423  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7433 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7434 X1 X2 X3 X4 H).
   intro H. elim (rem_7419  H).
Qed.

Remark rem_7436 : (forall X:term, auto___def_96 X -> auto_knows_current X)
    -> forall X2:term, auto___def_98 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_96_pknows_current. exact (rem_7435).
Defined.

Remark rem_7437 : (forall X:term, auto___def_96 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_97 X1 -> auto___def_98 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_96_pknows_current. intros X1 X2.
  cut (auto___def_98 X2 -> auto_knows_current X2). tauto. exact (rem_7436 epsilon_m__def_96_pknows_current X2).
Defined.

Remark rem_7438 : (forall X:term, auto___def_96 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_97 X1 -> auto___def_98 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_96_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7413 epsilon_m__def_96_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7437 epsilon_m__def_96_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7439 : (forall X:term, auto___def_96 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_97 X1 -> auto___def_98 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_96_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7438 epsilon_m__def_96_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_96_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_96_pknows_current A1 A2. tauto.
Defined.

Remark rem_7440 : forall X1 X2:term, auto___def_96 (cons X1 X2) -> or_1
    (auto___def_97 X1 /\ auto___def_98 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7441 : (forall X:term, auto___def_96 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_96 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_96_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7440 X1 X2 H);  intros.
  apply (rem_7439 epsilon_m__def_96_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7442 : auto___def_96 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7443 : auto___def_96 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7444 : auto___def_96 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7445 : auto___def_96 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7447 : auto___def_96 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7448 : auto___def_96 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7449 : auto___def_96 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7451 : forall X1:term, auto___def_96 (noncea_current X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7452 : forall X1 X2 X3:term, auto___def_96 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7453 : auto___def_96 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7454 : forall X1:term, auto___def_96 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7455 : forall X1 X2 X3:term, auto___def_96 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7457 : forall X1 X2 X3 X4:term, auto___def_96 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7458 : forall X1 X2 X3 X4:term, auto___def_96 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7459 : forall X2:term, auto___def_96 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_96_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7445  H).
   intro H. elim (rem_7442  H).
  intros X1 X2;  exact (rem_7441 epsilon_m__def_96_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_7456 X1 X2 H).
   intro H. elim (rem_7449  H).
  intros X1 X2. intro H. elim (rem_7450 X1 X2 H).
   intro H. elim (rem_7448  H).
  intros X1. intro H. elim (rem_7451 X1 H).
  intros X1. intro H. elim (rem_7454 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7455 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7452 X1 X2 X3 H).
   intro H. elim (rem_7444  H).
   intro H. elim (rem_7453  H).
  intros X1. intro H. elim (rem_7446 X1 H).
   intro H. elim (rem_7447  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7457 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7458 X1 X2 X3 X4 H).
   intro H. elim (rem_7443  H).
Qed.

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

Remark rem_7461 : forall X1 X2:term, auto___def_96 X2 -> auto___type_17 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_7385 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7460 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_7462 : forall X1 X2:term, auto___def_96 X2 -> auto___type_17 X1 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_7461 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7463 : forall X1 X2:term, auto___def_62 X2 -> auto_agent X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_agent X1 -> auto_knows_current X1). tauto. exact (rem_6971 X1).
Qed.

Remark rem_7464 : (forall X:term, auto___def_63 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_7465 : (forall X:term, auto___def_63 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_agent X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_63_pknows_current. intros X1. intros A1.
  cut (auto_agent X1). 2:apply (rem_7464 epsilon_m__def_63_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_7466 : (forall X:term, auto___def_63 X -> auto_knows_current X)
    -> forall X1:term, auto_agent X1 -> auto_knows_current (noncea_current X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_63_pknows_current. intros X1. intros A1.
  case (rem_7465 epsilon_m__def_63_pknows_current X1 A1). clear  epsilon_m__def_63_pknows_current A1. intros. apply trans_knows_current_noncea_current_1;  tauto.
 clear  epsilon_m__def_63_pknows_current A1. tauto.
Defined.

Remark rem_7467 : forall X1:term, auto___def_63 (noncea_current X1) -> or_1
    (auto_agent X1).
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7468 : (forall X:term, auto___def_63 X -> auto_knows_current X)
    -> forall X1:term, auto___def_63 (noncea_current X1) -> auto_knows_current (noncea_current X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_63_pknows_current. intros X1. intro H. intros.
  elim (rem_7467 X1 H);  intros.
  apply (rem_7466 epsilon_m__def_63_pknows_current X1);  tauto.
Defined.

Remark rem_7469 : auto___def_63 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7470 : auto___def_63 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7471 : auto___def_63 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7472 : auto___def_63 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7474 : auto___def_63 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7475 : auto___def_63 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7476 : auto___def_63 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_7478 : forall X1 X2 X3:term, auto___def_63 (nonceb_old X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7479 : auto___def_63 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7480 : forall X1:term, auto___def_63 (noncea_old X1) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7481 : forall X1 X2 X3:term, auto___def_63 (nonceb_current X1 X2 X3) -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_7484 : forall X1 X2 X3 X4:term, auto___def_63 (session_current X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7485 : forall X1 X2 X3 X4:term, auto___def_63 (session_old X1 X2 X3 X4) -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_7486 : forall X1:term, auto___def_63 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m__def_63_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7472  H).
   intro H. elim (rem_7469  H).
  intros X1 X2. intro H. elim (rem_7483 X1 X2 H).
  intros X1 X2. intro H. elim (rem_7482 X1 X2 H).
   intro H. elim (rem_7476  H).
  intros X1 X2. intro H. elim (rem_7477 X1 X2 H).
   intro H. elim (rem_7475  H).
  intros X1;  exact (rem_7468 epsilon_m__def_63_pknows_current X1).
  intros X1. intro H. elim (rem_7480 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7481 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7478 X1 X2 X3 H).
   intro H. elim (rem_7471  H).
   intro H. elim (rem_7479  H).
  intros X1. intro H. elim (rem_7473 X1 H).
   intro H. elim (rem_7474  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7484 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7485 X1 X2 X3 X4 H).
   intro H. elim (rem_7470  H).
Qed.

Remark rem_7487 : (forall X:term, auto___def_62 X -> auto_knows_current X)
    -> forall X1:term, auto___def_63 X1 -> auto_knows_current X1. (* Cut history. *)
Proof.  intros epsilon_m__def_62_pknows_current. exact (rem_7486).
Defined.

Remark rem_7488 : (forall X:term, auto___def_62 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_63 X1 -> auto___def_9 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_62_pknows_current. intros X1 X2.
  cut (auto___def_63 X1 -> auto_knows_current X1). tauto. exact (rem_7487 epsilon_m__def_62_pknows_current X1).
Defined.

Remark rem_7489 : (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_7490 : (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_7489 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_7491 : (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_6746 H);  intros.
  apply (rem_7490 epsilon_m__def_9_pknows_current);  tauto.
Defined.

Remark rem_7492 : 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_6751  H).
   intro H. elim (rem_6748  H).
  intros X1 X2. intro H. elim (rem_6762 X1 X2 H).
  intros X1 X2. intro H. elim (rem_6761 X1 X2 H).
   intro H. elim (rem_6754  H).
  intros X1 X2. intro H. elim (rem_6755 X1 X2 H).
  exact (rem_7491 epsilon_m__def_9_pknows_current ).
  intros X1. intro H. elim (rem_6756 X1 H).
  intros X1. intro H. elim (rem_6759 X1 H).
  intros X1 X2 X3. intro H. elim (rem_6760 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_6757 X1 X2 X3 H).
   intro H. elim (rem_6750  H).
   intro H. elim (rem_6758  H).
  intros X1. intro H. elim (rem_6752 X1 H).
   intro H. elim (rem_6753  H).
  intros X1 X2 X3 X4. intro H. elim (rem_6763 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_6764 X1 X2 X3 X4 H).
   intro H. elim (rem_6749  H).
Qed.

Remark rem_7493 : (forall X:term, auto___def_62 X -> auto_knows_current X)
    -> forall X2:term, auto___def_9 X2 -> auto_knows_current X2. (* Cut history. *)
Proof.  intros epsilon_m__def_62_pknows_current. exact (rem_7492).
Defined.

Remark rem_7494 : (forall X:term, auto___def_62 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_63 X1 -> auto___def_9 X2 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m__def_62_pknows_current. intros X1 X2.
  cut (auto___def_9 X2 -> auto_knows_current X2). tauto. exact (rem_7493 epsilon_m__def_62_pknows_current X2).
Defined.

Remark rem_7495 : (forall X:term, auto___def_62 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_63 X1 -> auto___def_9 X2 -> (auto_knows_current X1 /\ auto_knows_current X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m__def_62_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto_knows_current X1). 2:apply (rem_7488 epsilon_m__def_62_pknows_current X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7494 epsilon_m__def_62_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7496 : (forall X:term, auto___def_62 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_63 X1 -> auto___def_9 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m__def_62_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7495 epsilon_m__def_62_pknows_current X1 X2 A1 A2). clear  epsilon_m__def_62_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m__def_62_pknows_current A1 A2. tauto.
Defined.

Remark rem_7497 : forall X1 X2:term, auto___def_62 (cons X1 X2) -> or_1
    (auto___def_63 X1 /\ auto___def_9 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_7498 : (forall X:term, auto___def_62 X -> auto_knows_current X)
    -> forall X1 X2:term, auto___def_62 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m__def_62_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_7497 X1 X2 H);  intros.
  apply (rem_7496 epsilon_m__def_62_pknows_current X1 X2);  tauto.
Defined.

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

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

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

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

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

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

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

Remark rem_7506 : auto___def_62 i -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

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

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

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

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

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

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

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

Remark rem_7516 : forall X2:term, auto___def_62 X2 -> auto_knows_current X2. (* Induct. *)
Proof.
  fix epsilon_m__def_62_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_7502  H).
   intro H. elim (rem_7499  H).
  intros X1 X2;  exact (rem_7498 epsilon_m__def_62_pknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_7513 X1 X2 H).
   intro H. elim (rem_7506  H).
  intros X1 X2. intro H. elim (rem_7507 X1 X2 H).
   intro H. elim (rem_7505  H).
  intros X1. intro H. elim (rem_7508 X1 H).
  intros X1. intro H. elim (rem_7511 X1 H).
  intros X1 X2 X3. intro H. elim (rem_7512 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_7509 X1 X2 X3 H).
   intro H. elim (rem_7501  H).
   intro H. elim (rem_7510  H).
  intros X1. intro H. elim (rem_7503 X1 H).
   intro H. elim (rem_7504  H).
  intros X1 X2 X3 X4. intro H. elim (rem_7514 X1 X2 X3 X4 H).
  intros X1 X2 X3 X4. intro H. elim (rem_7515 X1 X2 X3 X4 H).
   intro H. elim (rem_7500  H).
Qed.

Remark rem_7517 : forall X1 X2:term, auto___def_62 X2 -> auto_agent X1 -> auto_knows_current X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto___def_62 X2 -> auto_knows_current X2). tauto. exact (rem_7516 X2).
Qed.

Remark rem_7518 : forall X1 X2:term, auto___def_62 X2 -> auto_agent 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_7463 X1 X2);  assumption.
  cut (auto_knows_current X2). 2:apply (rem_7517 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_7519 : forall X1 X2:term, auto___def_62 X2 -> auto_agent X1 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_7518 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_7520 : forall X1:term, auto_knows_current (s X1) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_18 X1 H);  intros.
  apply (rem_449 X1);  tauto.
Qed.

Remark rem_7521 : forall X1 X2:term, auto___def_52 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_257 X1).
Qed.

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

Remark rem_7523 : forall X1 X2:term, auto___def_3 X2 X1 -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_7522 X2 X1 H);  intros.
  apply (rem_7521 X1 X2);  tauto.
Qed.

Remark rem_7524 : forall X1 X2:term, auto___def_3 X2 X1 -> auto___def_4 X2 -> auto_knows_old X1. (* Eliminate negative atom by universal clause. *)
Proof.
  intros X1 X2. intros. apply (rem_7523 X1 X2);  assumption.
Qed.

Remark rem_7525 : 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_6543 X1 X2).
Qed.

Remark rem_7526 : 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_112 X1 X2 H);  intros.
  apply (rem_7525 X1 X2);  tauto.
Qed.

(* [trnp] Proofs of translated source clauses. *)


Lemma lem_intruder_knows_session_key_as_seen_by_B : forall _big_kab:term, auto_bob_key_current bob _big_kab -> auto_knows_current _big_kab -> auto___query__intruder_knows_session_key_as_seen_by_B.
Proof.
   intros _big_kab. intros H1 H2.
  exact (rem_7266 _big_kab
          H1
          H2).
Qed.

Lemma lem_intruder_knows_session_key_as_seen_by_alice : forall _big_kab:term, auto_alice_key_current alice _big_kab -> auto_knows_current _big_kab -> auto___query__intruder_knows_session_key_as_seen_by_alice.
Proof.
   intros _big_kab. intros H1 H2.
  exact (rem_7259 _big_kab
          H1
          H2).
Qed.

Lemma lem_intruder_knows_session_key_generated_by_server : forall _big_na _big_nb:term, auto_knows_current (key sym (session_current alice bob _big_na _big_nb)) -> auto___query__intruder_knows_session_key_generated_by_server.
Proof.
   intros _big_na _big_nb. intros H1.
  exact (rem_6233 _big_na _big_nb
          H1).
Qed.

Lemma lem_define_bob_key_current : forall _big_a _big_b _big_kab _big_na:term, auto_knows_current (cons (crypt (cons _big_a (cons _big_b (cons _big_kab (cons (nonceb_current _big_a _big_b _big_na) nil)))) (key sym (cons _big_b (cons server nil)))) (cons (crypt (nonceb_current _big_a _big_b _big_na) _big_kab) nil)) -> auto_bob_key_current _big_b _big_kab.
Proof.
   intros _big_a _big_b _big_kab _big_na. intros H1.
  exact (rem_6413 _big_b _big_kab _big_a _big_na
          (rem_5968 _big_a _big_b _big_kab _big_na
            H1)).
Qed.

Lemma lem_define_alice_key_current : forall _big_a _big_b _big_kab _big_m _big_nb:term, auto_knows_current (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_current _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) -> auto_alice_key_current _big_a _big_kab.
Proof.
   intros _big_a _big_b _big_kab _big_m _big_nb. intros H1.
  exact (rem_6208 _big_a _big_kab _big_m _big_b _big_nb
          (rem_779 _big_a _big_m _big_b _big_nb _big_kab
            H1)).
Qed.

Lemma lem_intruder_knows_own_private_key_current : auto_knows_current (key prv i).
Proof.
  
  exact (rem_6536 prv i
          rem_2218
          rem_125).
Qed.

Lemma lem_intruder_knows_every_public_key_current : forall X:term, auto_knows_current (key pub X).
Proof.
   intros X.
  exact (rem_7269 pub X
          (rem_949 X)
          rem_2210).
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_6971 X
          H1).
Qed.

Lemma lem_message4_current : forall _big_a _big_b _big_kab _big_m _big_nb:term, auto_knows_current (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_current _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) -> auto_knows_current (cons _big_m (cons (crypt _big_nb _big_kab) nil)).
Proof.
   intros _big_a _big_b _big_kab _big_m _big_nb. intros H1.
  exact (rem_7462 _big_m (cons (crypt _big_nb _big_kab) nil)
          (rem_5210 (crypt _big_nb _big_kab) nil
            rem_3221
            (rem_5223 _big_nb _big_kab _big_a _big_m _big_b
              (rem_779 _big_a _big_m _big_b _big_nb _big_kab
                H1)))
          (rem_3324 _big_m _big_a _big_b _big_nb _big_kab
            (rem_779 _big_a _big_m _big_b _big_nb _big_kab
              H1))).
Qed.

Lemma lem_message3_current : forall _big_a _big_b _big_na _big_nb:term, auto_knows_current (cons _big_b (cons _big_nb (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil))) -> auto_knows_current (cons _big_nb (cons (crypt (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_na nil))) (key sym (cons _big_a (cons server nil)))) (cons (crypt (cons _big_a (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))) nil))).
Proof.
   intros _big_a _big_b _big_na _big_nb. intros H1.
  exact (rem_7213 _big_nb (cons (crypt (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_na nil))) (key sym (cons _big_a (cons server nil)))) (cons (crypt (cons _big_a (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))) nil))
          (rem_6122 (crypt (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_na nil))) (key sym (cons _big_a (cons server nil)))) (cons (crypt (cons _big_a (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))) nil)
            (rem_5203 (crypt (cons _big_a (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))) nil
              rem_148
              (rem_6134 (cons _big_a (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))
                (rem_5216 sym (cons _big_b (cons server nil))
                  (rem_3088 _big_b (cons server nil)
                    (rem_6148 server nil
                      rem_637
                      rem_147)
                    (rem_2231 _big_b _big_a _big_nb _big_na
                      (rem_2163 _big_a _big_b _big_nb _big_na
                        H1)))
                  rem_624)
                (rem_5979 _big_a (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))
                  (rem_5974 _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_nb nil))
                    (rem_146 (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)
                      (rem_3076 _big_nb nil
                        rem_148
                        (rem_123 _big_nb _big_a _big_b _big_na
                          (rem_2163 _big_a _big_b _big_nb _big_na
                            H1)))
                      (rem_636 sym (session_current _big_a _big_b _big_na _big_nb)
                        (rem_2202 _big_a _big_b _big_na _big_nb
                          (rem_2163 _big_a _big_b _big_nb _big_na
                            H1))
                        rem_624))
                    (rem_2231 _big_b _big_a _big_nb _big_na
                      (rem_2163 _big_a _big_b _big_nb _big_na
                        H1)))
                  (rem_2463 _big_a _big_b _big_nb _big_na
                    (rem_2163 _big_a _big_b _big_nb _big_na
                      H1)))))
            (rem_6177 (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_na nil))) (key sym (cons _big_a (cons server nil)))
              (rem_6002 sym (cons _big_a (cons server nil))
                (rem_256 _big_a (cons server nil)
                  (rem_6148 server nil
                    rem_637
                    rem_147)
                  (rem_2463 _big_a _big_b _big_nb _big_na
                    (rem_2163 _big_a _big_b _big_nb _big_na
                      H1)))
                rem_624)
              (rem_5984 _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_na nil))
                (rem_2798 (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_na nil)
                  (rem_2792 _big_na nil
                    rem_148
                    (rem_595 _big_na _big_a _big_b _big_nb
                      (rem_2163 _big_a _big_b _big_nb _big_na
                        H1)))
                  (rem_636 sym (session_current _big_a _big_b _big_na _big_nb)
                    (rem_2202 _big_a _big_b _big_na _big_nb
                      (rem_2163 _big_a _big_b _big_nb _big_na
                        H1))
                    rem_624))
                (rem_2231 _big_b _big_a _big_nb _big_na
                  (rem_2163 _big_a _big_b _big_nb _big_na
                    H1)))))
          (rem_123 _big_nb _big_a _big_b _big_na
            (rem_2163 _big_a _big_b _big_nb _big_na
              H1))).
Qed.

Lemma lem_message2_current : forall _big_a _big_b _big_na:term, auto_agent _big_b -> auto_knows_current (cons _big_a (cons _big_na nil)) -> auto_knows_current (cons _big_b (cons (nonceb_current _big_a _big_b _big_na) (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil))).
Proof.
   intros _big_a _big_b _big_na. intros H1 H2.
  exact (rem_6404 _big_b (cons (nonceb_current _big_a _big_b _big_na) (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil))
          (rem_6141 (nonceb_current _big_a _big_b _big_na) (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil)
            (rem_6169 (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil
              rem_6154
              (rem_5196 (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))
                (rem_2258 sym (cons _big_b (cons server nil))
                  (rem_5989 _big_b (cons server nil)
                    (rem_6185 server nil
                      rem_637
                      rem_147)
                    H1)
                  rem_5197)
                (rem_430 _big_a (cons _big_na nil)
                  (rem_320 _big_na nil
                    rem_872
                    (rem_3219 _big_na _big_a
                      (rem_659 _big_a _big_na
                        H2)))
                  (rem_418 _big_a _big_na
                    (rem_659 _big_a _big_na
                      H2)))))
            (rem_2217 _big_a _big_b _big_na
              (rem_659 _big_a _big_na
                H2)
              H1))
          (rem_2268 _big_b
            H1)).
Qed.

Lemma lem_message1_current : forall _big_a:term, auto_agent _big_a -> auto_knows_current (cons _big_a (cons (noncea_current _big_a) nil)).
Proof.
   intros _big_a. intros H1.
  exact (rem_7519 _big_a (cons (noncea_current _big_a) nil)
          (rem_2209 (noncea_current _big_a) nil
            rem_5262
            (rem_2192 _big_a
              H1))
          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_7520 _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_6962 _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_7254 _big_m X
          (rem_480 _big_m X
            H1)
          (rem_3114 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_6796 _big_m _big_k
          (rem_6031 _big_k _big_m
            H1)
          (rem_5229 _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_6244 _big_m _big_k
          (rem_5190 _big_k _big_m
            H1)
          (rem_6199 _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_6970 _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_6799 _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_6544 _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_7526 _big_m1 _big_m2
          H1).
Qed.

Lemma lem_intruder_knows_nil_current : auto_knows_current nil.
Proof.
  
  exact rem_6967.
Qed.

Lemma lem_intruder_knows_all_previous_nonceb : forall _big_a _big_b _big_na:term, auto_knows_current (nonceb_old _big_a _big_b _big_na).
Proof.
   intros _big_a _big_b _big_na.
  exact (rem_6200 _big_a _big_b _big_na).
Qed.

Lemma lem_intruder_knows_all_previous_noncea : forall _big_a:term, auto_knows_current (noncea_old _big_a).
Proof.
   intros _big_a.
  exact (rem_7270 _big_a).
Qed.

Lemma lem_intruder_knows_all_previous_session_keys : forall _big_a _big_b _big_na _big_nb:term, auto_knows_current (key sym (session_old _big_a _big_b _big_na _big_nb)).
Proof.
   intros _big_a _big_b _big_na _big_nb.
  exact (rem_6419 sym (session_old _big_a _big_b _big_na _big_nb)
          (rem_5211 _big_a _big_b _big_na _big_nb)
          rem_6128).
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_1499 _big_m
          H1).
Qed.

Lemma lem_define_bob_key_old : forall _big_a _big_b _big_kab _big_na:term, auto_knows_old (cons (crypt (cons _big_a (cons _big_b (cons _big_kab (cons (nonceb_old _big_a _big_b _big_na) nil)))) (key sym (cons _big_b (cons server nil)))) (cons (crypt (nonceb_old _big_a _big_b _big_na) _big_kab) nil)) -> auto_bob_key_old _big_b _big_kab.
Proof.
   intros _big_a _big_b _big_kab _big_na. intros H1.
  exact (rem_7261 _big_b _big_kab _big_a _big_na
          (rem_6171 _big_a _big_b _big_kab _big_na
            H1)).
Qed.

Lemma lem_define_alice_key_old : forall _big_a _big_b _big_kab _big_m _big_nb:term, auto_knows_old (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_old _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) -> auto_alice_key_old _big_a _big_kab.
Proof.
   intros _big_a _big_b _big_kab _big_m _big_nb. intros H1.
  exact (rem_7272 _big_a _big_kab _big_m _big_b _big_nb
          (rem_6102 _big_a _big_m _big_b _big_nb _big_kab
            H1)).
Qed.

Lemma lem_intruder_knows_own_private_key_old : auto_knows_old (key prv i).
Proof.
  
  exact (rem_6240 prv i
          rem_2218
          rem_125).
Qed.

Lemma lem_intruder_knows_every_public_key_old : forall X:term, auto_knows_old (key pub X).
Proof.
   intros X.
  exact (rem_6542 pub X
          (rem_949 X)
          rem_2210).
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_6717 X
          H1).
Qed.

Lemma lem_message4_old : forall _big_a _big_b _big_kab _big_m _big_nb:term, auto_knows_old (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_old _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) -> auto_knows_old (cons _big_m (cons (crypt _big_nb _big_kab) nil)).
Proof.
   intros _big_a _big_b _big_kab _big_m _big_nb. intros H1.
  exact (rem_6713 _big_m (cons (crypt _big_nb _big_kab) nil)
          (rem_5261 (crypt _big_nb _big_kab) nil
            rem_638
            (rem_2805 _big_nb _big_kab _big_a _big_m _big_b
              (rem_6102 _big_a _big_m _big_b _big_nb _big_kab
                H1)))
          (rem_2786 _big_m _big_a _big_b _big_nb _big_kab
            (rem_6102 _big_a _big_m _big_b _big_nb _big_kab
              H1))).
Qed.

Lemma lem_message3_old : forall _big_a _big_b _big_na _big_nb:term, auto_knows_old (cons _big_b (cons _big_nb (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil))) -> auto_knows_old (cons _big_nb (cons (crypt (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_na nil))) (key sym (cons _big_a (cons server nil)))) (cons (crypt (cons _big_a (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))) nil))).
Proof.
   intros _big_a _big_b _big_na _big_nb. intros H1.
  exact (rem_6531 _big_nb (cons (crypt (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_na nil))) (key sym (cons _big_a (cons server nil)))) (cons (crypt (cons _big_a (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))) nil))
          (rem_132 (crypt (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_na nil))) (key sym (cons _big_a (cons server nil)))) (cons (crypt (cons _big_a (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))) nil)
            (rem_6127 (crypt (cons _big_a (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))) nil
              rem_133
              (rem_6162 (cons _big_a (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))
                (rem_6153 sym (cons _big_b (cons server nil))
                  (rem_3119 _big_b (cons server nil)
                    (rem_6156 server nil
                      rem_637
                      rem_147)
                    (rem_651 _big_b _big_a _big_nb _big_na
                      (rem_2620 _big_a _big_b _big_nb _big_na
                        H1)))
                  rem_780)
                (rem_6190 _big_a (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))
                  (rem_139 _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_nb nil))
                    (rem_424 (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)
                      (rem_3123 _big_nb nil
                        rem_133
                        (rem_948 _big_nb _big_a _big_b _big_na
                          (rem_2620 _big_a _big_b _big_nb _big_na
                            H1)))
                      (rem_3083 sym (session_old _big_a _big_b _big_na _big_nb)
                        (rem_2252 _big_a _big_b _big_na _big_nb
                          (rem_2620 _big_a _big_b _big_nb _big_na
                            H1))
                        rem_780))
                    (rem_651 _big_b _big_a _big_nb _big_na
                      (rem_2620 _big_a _big_b _big_nb _big_na
                        H1)))
                  (rem_2344 _big_a _big_b _big_nb _big_na
                    (rem_2620 _big_a _big_b _big_nb _big_na
                      H1)))))
            (rem_5997 (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_na nil))) (key sym (cons _big_a (cons server nil)))
              (rem_6036 sym (cons _big_a (cons server nil))
                (rem_5228 _big_a (cons server nil)
                  (rem_6156 server nil
                    rem_637
                    rem_147)
                  (rem_2344 _big_a _big_b _big_nb _big_na
                    (rem_2620 _big_a _big_b _big_nb _big_na
                      H1)))
                rem_780)
              (rem_3226 _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_na nil))
                (rem_250 (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_na nil)
                  (rem_2626 _big_na nil
                    rem_133
                    (rem_243 _big_na _big_a _big_b _big_nb
                      (rem_2620 _big_a _big_b _big_nb _big_na
                        H1)))
                  (rem_3083 sym (session_old _big_a _big_b _big_na _big_nb)
                    (rem_2252 _big_a _big_b _big_na _big_nb
                      (rem_2620 _big_a _big_b _big_nb _big_na
                        H1))
                    rem_780))
                (rem_651 _big_b _big_a _big_nb _big_na
                  (rem_2620 _big_a _big_b _big_nb _big_na
                    H1)))))
          (rem_948 _big_nb _big_a _big_b _big_na
            (rem_2620 _big_a _big_b _big_nb _big_na
              H1))).
Qed.

Lemma lem_message2_old : forall _big_a _big_b _big_na:term, auto_agent _big_b -> auto_knows_old (cons _big_a (cons _big_na nil)) -> auto_knows_old (cons _big_b (cons (nonceb_old _big_a _big_b _big_na) (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil))).
Proof.
   intros _big_a _big_b _big_na. intros H1 H2.
  exact (rem_6959 _big_b (cons (nonceb_old _big_a _big_b _big_na) (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil))
          (rem_6115 (nonceb_old _big_a _big_b _big_na) (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil)
            (rem_7 (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil
              rem_3077
              (rem_3071 (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))
                (rem_5991 sym (cons _big_b (cons server nil))
                  (rem_5989 _big_b (cons server nil)
                    (rem_6185 server nil
                      rem_637
                      rem_147)
                    H1)
                  rem_5197)
                (rem_630 _big_a (cons _big_na nil)
                  (rem_6183 _big_na nil
                    rem_5198
                    (rem_871 _big_na _big_a
                      (rem_2709 _big_a _big_na
                        H2)))
                  (rem_2702 _big_a _big_na
                    (rem_2709 _big_a _big_na
                      H2)))))
            (rem_267 _big_a _big_b _big_na
              (rem_2709 _big_a _big_na
                H2)
              H1))
          (rem_623 _big_b
            H1)).
Qed.

Lemma lem_message1_old : forall _big_a:term, auto_agent _big_a -> auto_knows_old (cons _big_a (cons (noncea_old _big_a) nil)).
Proof.
   intros _big_a. intros H1.
  exact (rem_6792 _big_a (cons (noncea_old _big_a) nil)
          (rem_6108 (noncea_old _big_a) nil
            rem_5262
            (rem_3220 _big_a
              H1))
          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_6716 _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_6715 _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_6227 _big_m X
          (rem_314 _big_m X
            H1)
          (rem_2348 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_7524 _big_m _big_k
          (rem_2190 _big_k _big_m
            H1)
          (rem_5969 _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_6966 _big_m _big_k
          (rem_3065 _big_k _big_m
            H1)
          (rem_5254 _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_6534 _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_7267 _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_6210 _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_6973 _big_m1 _big_m2
          H1).
Qed.

Lemma lem_intruder_knows_nil_old : auto_knows_old nil.
Proof.
  
  exact rem_6201.
Qed.

Lemma lem_intruder_agent : auto_agent i.
Proof.
  
  exact rem_6211.
Qed.

Lemma lem_server_agent : auto_agent server.
Proof.
  
  exact rem_6968.
Qed.

Lemma lem_bob_agent : auto_agent bob.
Proof.
  
  exact rem_6969.
Qed.

Lemma lem_alice_agent : auto_agent alice.
Proof.
  
  exact rem_6960.
Qed.


(* [srcc] Source clauses. *)

Inductive __query__intruder_knows_session_key_as_seen_by_B : Prop :=
    intruder_knows_session_key_as_seen_by_B : forall _big_kab:term, bob_key_current bob _big_kab -> knows_current _big_kab -> __query__intruder_knows_session_key_as_seen_by_B

with __query__intruder_knows_session_key_as_seen_by_alice : Prop :=
    intruder_knows_session_key_as_seen_by_alice : forall _big_kab:term, alice_key_current alice _big_kab -> knows_current _big_kab -> __query__intruder_knows_session_key_as_seen_by_alice

with __query__intruder_knows_session_key_generated_by_server : Prop :=
    intruder_knows_session_key_generated_by_server : forall _big_na _big_nb:term, knows_current (key sym (session_current alice bob _big_na _big_nb)) -> __query__intruder_knows_session_key_generated_by_server

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_kab _big_m _big_nb:term, knows_current (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_current _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) -> alice_key_current _big_a _big_kab

with alice_key_old : term -> term -> Prop :=
    define_alice_key_old : forall _big_a _big_b _big_kab _big_m _big_nb:term, knows_old (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_old _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) -> alice_key_old _big_a _big_kab

with bob_key_current : term -> term -> Prop :=
    define_bob_key_current : forall _big_a _big_b _big_kab _big_na:term, knows_current (cons (crypt (cons _big_a (cons _big_b (cons _big_kab (cons (nonceb_current _big_a _big_b _big_na) nil)))) (key sym (cons _big_b (cons server nil)))) (cons (crypt (nonceb_current _big_a _big_b _big_na) _big_kab) nil)) -> bob_key_current _big_b _big_kab

with bob_key_old : term -> term -> Prop :=
    define_bob_key_old : forall _big_a _big_b _big_kab _big_na:term, knows_old (cons (crypt (cons _big_a (cons _big_b (cons _big_kab (cons (nonceb_old _big_a _big_b _big_na) nil)))) (key sym (cons _big_b (cons server nil)))) (cons (crypt (nonceb_old _big_a _big_b _big_na) _big_kab) nil)) -> bob_key_old _big_b _big_kab

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_successors_current : forall _big_m:term, knows_current _big_m -> knows_current (s _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_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_all_agents_current : forall X:term, agent X -> knows_current X
  | intruder_knows_all_previous_noncea : forall _big_a:term, knows_current (noncea_old _big_a)
  | intruder_knows_all_previous_nonceb : forall _big_a _big_b _big_na:term, knows_current (nonceb_old _big_a _big_b _big_na)
  | intruder_knows_all_previous_session_keys : forall _big_a _big_b _big_na _big_nb:term, knows_current (key sym (session_old _big_a _big_b _big_na _big_nb))
  | intruder_knows_every_public_key_current : forall X:term, knows_current (key pub X)
  | 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
  | message1_current : forall _big_a:term, agent _big_a -> knows_current (cons _big_a (cons (noncea_current _big_a) nil))
  | message2_current : forall _big_a _big_b _big_na:term, agent _big_b -> knows_current (cons _big_a (cons _big_na nil)) -> knows_current (cons _big_b (cons (nonceb_current _big_a _big_b _big_na) (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil)))
  | message3_current : forall _big_a _big_b _big_na _big_nb:term, knows_current (cons _big_b (cons _big_nb (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil))) -> knows_current (cons _big_nb (cons (crypt (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_na nil))) (key sym (cons _big_a (cons server nil)))) (cons (crypt (cons _big_a (cons _big_b (cons (key sym (session_current _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))) nil)))
  | message4_current : forall _big_a _big_b _big_kab _big_m _big_nb:term, knows_current (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_current _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) -> knows_current (cons _big_m (cons (crypt _big_nb _big_kab) nil))

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_successors_old : forall _big_m:term, knows_old _big_m -> knows_old (s _big_m)
  | 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_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_all_agents_old : forall X:term, agent X -> knows_old X
  | intruder_knows_every_public_key_old : forall X:term, knows_old (key pub X)
  | intruder_knows_nil_old : knows_old nil
  | intruder_knows_own_private_key_old : knows_old (key prv i)
  | message1_old : forall _big_a:term, agent _big_a -> knows_old (cons _big_a (cons (noncea_old _big_a) nil))
  | message2_old : forall _big_a _big_b _big_na:term, agent _big_b -> knows_old (cons _big_a (cons _big_na nil)) -> knows_old (cons _big_b (cons (nonceb_old _big_a _big_b _big_na) (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil)))
  | message3_old : forall _big_a _big_b _big_na _big_nb:term, knows_old (cons _big_b (cons _big_nb (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil))) -> knows_old (cons _big_nb (cons (crypt (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_na nil))) (key sym (cons _big_a (cons server nil)))) (cons (crypt (cons _big_a (cons _big_b (cons (key sym (session_old _big_a _big_b _big_na _big_nb)) (cons _big_nb nil)))) (key sym (cons _big_b (cons server nil)))) nil)))
  | message4_old : forall _big_a _big_b _big_kab _big_m _big_nb:term, knows_old (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_old _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) -> knows_old (cons _big_m (cons (crypt _big_nb _big_kab) nil))
.

(* [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_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_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_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_all_agents_old X H1) => 
      (lem_intruder_knows_all_agents_old X
        (translate_auto_agent_from_agent X H1))
  | (intruder_knows_every_public_key_old X) => 
      (lem_intruder_knows_every_public_key_old X)
  | (intruder_knows_nil_old) => 
      (lem_intruder_knows_nil_old)
  | (intruder_knows_own_private_key_old) => 
      (lem_intruder_knows_own_private_key_old)
  | (message1_old _big_a H1) => 
      (lem_message1_old _big_a
        (translate_auto_agent_from_agent _big_a H1))
  | (message2_old _big_a _big_b _big_na H1 H2) => 
      (lem_message2_old _big_a _big_b _big_na
        (translate_auto_agent_from_agent _big_b H1)
        (translate_auto_knows_old_from_knows_old (cons _big_a (cons _big_na nil)) H2))
  | (message3_old _big_a _big_b _big_na _big_nb H1) => 
      (lem_message3_old _big_a _big_b _big_na _big_nb
        (translate_auto_knows_old_from_knows_old (cons _big_b (cons _big_nb (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil))) H1))
  | (message4_old _big_a _big_b _big_kab _big_m _big_nb H1) => 
      (lem_message4_old _big_a _big_b _big_kab _big_m _big_nb
        (translate_auto_knows_old_from_knows_old (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_old _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) H1))
  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_kab _big_m _big_nb H1) => 
      (lem_define_alice_key_old _big_a _big_b _big_kab _big_m _big_nb
        (translate_auto_knows_old_from_knows_old (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_old _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) 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_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_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_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_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) => 
      (lem_intruder_knows_all_previous_noncea _big_a)
  | (intruder_knows_all_previous_nonceb _big_a _big_b _big_na) => 
      (lem_intruder_knows_all_previous_nonceb _big_a _big_b _big_na)
  | (intruder_knows_all_previous_session_keys _big_a _big_b _big_na _big_nb) => 
      (lem_intruder_knows_all_previous_session_keys _big_a _big_b _big_na _big_nb)
  | (intruder_knows_every_public_key_current X) => 
      (lem_intruder_knows_every_public_key_current X)
  | (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))
  | (message1_current _big_a H1) => 
      (lem_message1_current _big_a
        (translate_auto_agent_from_agent _big_a H1))
  | (message2_current _big_a _big_b _big_na H1 H2) => 
      (lem_message2_current _big_a _big_b _big_na
        (translate_auto_agent_from_agent _big_b H1)
        (translate_auto_knows_current_from_knows_current (cons _big_a (cons _big_na nil)) H2))
  | (message3_current _big_a _big_b _big_na _big_nb H1) => 
      (lem_message3_current _big_a _big_b _big_na _big_nb
        (translate_auto_knows_current_from_knows_current (cons _big_b (cons _big_nb (cons (crypt (cons _big_a (cons _big_na nil)) (key sym (cons _big_b (cons server nil)))) nil))) H1))
  | (message4_current _big_a _big_b _big_kab _big_m _big_nb H1) => 
      (lem_message4_current _big_a _big_b _big_kab _big_m _big_nb
        (translate_auto_knows_current_from_knows_current (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_current _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) 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_kab _big_m _big_nb H1) => 
      (lem_define_alice_key_current _big_a _big_b _big_kab _big_m _big_nb
        (translate_auto_knows_current_from_knows_current (cons _big_nb (cons (crypt (cons _big_b (cons _big_kab (cons (noncea_current _big_a) nil))) (key sym (cons _big_a (cons server nil)))) (cons _big_m nil))) H1))
  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_kab H1 H2) => 
      (lem_intruder_knows_session_key_as_seen_by_alice _big_kab
        (translate_auto_alice_key_current_from_alice_key_current alice _big_kab H1)
        (translate_auto_knows_current_from_knows_current _big_kab 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_kab _big_na H1) => 
      (lem_define_bob_key_current _big_a _big_b _big_kab _big_na
        (translate_auto_knows_current_from_knows_current (cons (crypt (cons _big_a (cons _big_b (cons _big_kab (cons (nonceb_current _big_a _big_b _big_na) nil)))) (key sym (cons _big_b (cons server nil)))) (cons (crypt (nonceb_current _big_a _big_b _big_na) _big_kab) nil)) H1))
  end
.
Definition translate_auto___query__intruder_knows_session_key_as_seen_by_B_from___query__intruder_knows_session_key_as_seen_by_B (pi : __query__intruder_knows_session_key_as_seen_by_B) : auto___query__intruder_knows_session_key_as_seen_by_B :=
  match pi  with
    (intruder_knows_session_key_as_seen_by_B _big_kab H1 H2) => 
      (lem_intruder_knows_session_key_as_seen_by_B _big_kab
        (translate_auto_bob_key_current_from_bob_key_current bob _big_kab H1)
        (translate_auto_knows_current_from_knows_current _big_kab 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_old _big_a _big_b _big_kab _big_na H1) => 
      (lem_define_bob_key_old _big_a _big_b _big_kab _big_na
        (translate_auto_knows_old_from_knows_old (cons (crypt (cons _big_a (cons _big_b (cons _big_kab (cons (nonceb_old _big_a _big_b _big_na) nil)))) (key sym (cons _big_b (cons server nil)))) (cons (crypt (nonceb_old _big_a _big_b _big_na) _big_kab) nil)) H1))
  end
.
Definition translate_auto___query__intruder_knows_session_key_generated_by_server_from___query__intruder_knows_session_key_generated_by_server (pi : __query__intruder_knows_session_key_generated_by_server) : auto___query__intruder_knows_session_key_generated_by_server :=
  match pi  with
    (intruder_knows_session_key_generated_by_server _big_na _big_nb H1) => 
      (lem_intruder_knows_session_key_generated_by_server _big_na _big_nb
        (translate_auto_knows_current_from_knows_current (key sym (session_current alice bob _big_na _big_nb)) H1))
  end
.


(* [conp] Consistency proofs. *)

Theorem thm_intruder_knows_session_key_as_seen_by_B : ~__query__intruder_knows_session_key_as_seen_by_B.
Proof.
  unfold not. intro H.
  elim (translate_auto___query__intruder_knows_session_key_as_seen_by_B_from___query__intruder_knows_session_key_as_seen_by_B H).
Qed.

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_generated_by_server : ~__query__intruder_knows_session_key_generated_by_server.
Proof.
  unfold not. intro H.
  elim (translate_auto___query__intruder_knows_session_key_generated_by_server_from___query__intruder_knows_session_key_generated_by_server H).
Qed.

